Skip to content

Latest commit

 

History

History
37 lines (19 loc) · 3.41 KB

DAG共识和HashGraph.md

File metadata and controls

37 lines (19 loc) · 3.41 KB

DAG共识和HashGraph

所谓区块链的共识机制就是维护一个大家都认可的交易顺序。

中本聪在比特币网络中设计了PoW机制,矿工通过竞争一个时间段内的交易打包权力,获胜的矿工根据手续费高低挑选这个时间段内发生的交易的交易顺序,并且把这些交易打包到一个区块中,区块跟区块之间链接完成这个网络的交易时间顺序,完成比特币网络的共识。

不管是POW、POS还是DPOS,这些共识算法通过竞争获得产生区块的方法确实解决了共识问题,却不能称得上优雅,每一个区块的形成过程似乎都是在把大部分交易拒之门外,留下一些满足矿工口味的交易打包到区块中。

基于区块的共识的问题

  • 不够快

矿工之间通过竞争一段时间的交易打包权获得激励,每笔交易被确认,首先需要足够幸运或者足够多手续费才有可能被矿工选中,交易即时被矿工选中,还要等待一个出块时间,这个就是出块延迟的问题。比特币需要十分钟才能被打包到区块,以太坊需要十几秒才被得到确认。不管是比特币还是以太坊,性能上离大规模商用还有很远距离。

  • 不公平

矿工只会为了获得coinbase激励和交易手续费,然后埋头苦干不去作恶。这么想就太too young,too simple。矿工可能在一些优质ICO活动中,矿工可以优先确认自己的交易,这就比老老实实挖矿划算多了。当引入未来比较明显的激励的时候,矿工完全会作恶,在设计之处,模型里只有当下的激励,但如果考虑到未来更大的激励的时候,矿工就会超出模型设计时的角色定位。

DAG是不是为了性能牺牲了安全

需要首先讲讲iota和bytebal。

不少人质疑这些DAG应用的安全性,是不是还满足去中心化的共识。包括iota是不是过多依赖还没开源的validator,bytebal的witness节点有没有作恶空间。

矿工在一个很长的出块时间里,矿工有足够空间从众多交易中选择对自己有利的交易来打包。在byteball的witness节点中,witness节点能做的事情很有限,收到一笔交易后,能做的只是记录交易的时间戳,因为没有出块时间留出来的时间空挡,需要马上处理下一笔交易。所以byteball创始人一直强调不要把witness跟矿工混淆,witness扮演的更多的是一个checkpoint的角色,只是帮系统记录交易发生的先后顺序,没有留出作恶的空间。

HashGraph是Swirds公司抱有专利的一种分布式账本共识,也没有区块概念,交易跟交易直接组成DAG。目前Swirds公司没有做关于ICO的打算,目前更多在以技术服务商的身份在供应链和物联网方向做应用落地。

hashgraph通过gossip of gossip协议,让每个节点都维护着所有节点跟其他节点的通信历史,每个节点在完成拜占庭协议时,居然不需要经过网络多轮通讯,节点本地环境就可以直接模拟拜占庭决议。

性能角度,目前hashgraph共识已经满足了几十万的并发,性能瓶颈已经不是协议本身,而是到了网络IO层。

安全角度,hashgraph的数学上可以证明满足异步拜占庭容错,至少跟比特币一样安全。

公平角度,没有矿工这种超级权利的角色存在。

Leemon Baird有提到,hashgraph的共识也很适合构建公有链。