对标以太坊的NEO在共识机制的选取上和以太坊走了完全不同的道路。这一点NEO和EOS类似,都是油选出超级节点进行协作记账,在弱中心化的情况下,实现比较高的效率。
它们之间的区别在于具体的算法和节点的选择,不同于比特币和以太坊采用的pow机制。NEO采用了类似于EOS的DPOS的共识机制,这是一种改良的拜占庭将军算法,叫做DBFT,是一种通过代理投票来实现大规模节点参与共识的拜占庭容错共识机制。
DBFT算法的大致原理是这样的。参与记账的是超级节点,普通节点可以看到共识过程并同步账本信息,但是不参与记账。N个超级节点分为1个议长和n-1个议员,议长会轮流当选,每次记账时,先由议长发起区块提案,也就是拟账的区块内容。一旦有2/3以上的记账节点同意了这个提案,那么这个提案就会成为最终发布的区块,并且这个区块是不可逆的,里面所有的交易都是百分之百确认的。
在pow的机制下,理论上所有的交易都是无限接近100%而永远达不到100%。在类似比特股的DPOS的机制下。大约需要45秒才能进入不可逆的状态,而EOS的DPOS+BFT的机制,一个区块可以在一秒钟内进入不可逆转的状态。如果在一定的时间内没有达成一致的提案,或者发现有非法的交易的话。可以由其他的记账节点重新发起提案,并且当2/3以上的记账节点同意以后。就形成了最终确定的记账区块了。
DBFT算法在正常情况下,可以迅速的达成共识,并且有良好的最终性。区块生成之后最终确认的区块无法被分叉,交易也不会发生撤销或者回滚。缺点在于,DBFT最多只能容忍1/3个记账节点为恶意节点而不影响整个网络环境的有效运行。
理论情况上,安全性相比于1/2的pow以及2/3的DPOS+BFT会比较低。此外。由于DBFT得算法并未经过大规模的验证。整体系统的实际安全性也暂时存在疑问。
在NEO的DBFT共识机制下,没15到50秒生成一个区块,根据白皮书的说法交易吞吐量可以达到大约1000TPS,通过优化,能力可达到10000TPS。虽然和EOS还差距一个数量级,但是比起TPS7左右的比特币已经是很大的提升。NEO经常被质疑与过度中心化。说的就是DBFT共识机制下投票选出的仅有7个共识节点,这些代理的节点是通过静态选出的,并且完全由项目方部署。而DPOS下的超级节点是会自动变化的。
NEO的创始人达鸿飞的解释是NEO处于早期,集中有利于开发么效率。随着NEO核心协议的逐步确认。共识机制的数量会有所提升。但是无论如何。NEO都是一个弱中心化得共识机制!