巴比特论坛

发表于 2018-3-23 12:27:42 | 显示全部楼层
根据小蚁的技术资料的陈述,小蚁采用了一种称作代理拜占庭容错(dbft)的共识容错算法,投票人选出记帐人,然后记帐人参与共识决策。
根据拜占庭容错的要求,总节点数量的要求: n >= 3f + 1 (其中,f代表作恶节点数量),在小蚁区块链中,记帐人中有一位是议长,其余是议员,
议长负责出块,也就是提议(proposal), 议员负责对提议进行投票和验证,如果投票数量 >= 2f + 1,就代表该区块最终被确定下来,
如果出现议长离线的情况下,议员是根据一定的超时机制来重新选出议长,这一过程也被称为change-view(改变视图)的过程,
这里面存在一些很细微的边界条件可以让小蚁出现分叉,小蚁技术团队根本没有考虑到,那就是,在一些议员收到
2f + 1个投票时,其他的节点未必也能收到2f+1这么多的投票消息,因为计算机网络是可能延迟的,还是异步的,就像教科书中描述的“两军问题”一样,
根本没有办法知道另一方是否真正收到消息,在小蚁中,如果出现一部分议员收到2f+1个投票消息,另一部分议员没有收到2f+1且达到超时的界限时,那这未收到
2f+1的这一部分议员就会发起 change-view过程,重新来确定新的议长,而那些已经收到2f+1投票消息的议员们就已经把当前的区块定为最终确认过的区块并且开始进入
下一个区块高度 (block-height)的流程,这样区块网络已经被分叉成两部分子网络了!

当然,上面的分析还只是在黑客未控制任何一个记帐人节点的前提下,单单是网络延迟就会导致的边界条件下的严重问题,当然这种情况下概率要低一些,
但是另一方面,当一个作恶的人或者黑客混入了小蚁的记帐人节点时,那黑客就可以故意改写源代码,在快要超时重选议长的时候,黑客再发起提议,此时
就有很大的概率复现上面说的分叉现象,所以小蚁官方宣布的 只要恶意节点不超过3分之一,就不会分叉,不会有任何问题,这个说法明显是盲目自信的宣言而已!

目前看来,除了比特币的pow能较好的解决  "拜占庭容错“ 和 “两军问题”之外,其他所有的什么dbft, pbft, dpos之类的共识算法都会存在上面所描述的边界问题,导致网络分叉成多个。。。

1条回复 跳转到指定楼层

lcabcdefg | 船员 | 发表于 2018-3-23 12:48:07 | 显示全部楼层
不管小蚁中还有些什么 precommit prevote之类的,这都不重要,本质的是,只要在最终决定 change view, 或者最终写入区块,这两个边界的地方,出现网络原因,或者只要黑客控制一个记帐人节点,就可以轻易的摧毁小蚁区块链!!
高级模式
您需要登录后才可以发帖 登录 | 立即注册 用新浪微博登录

本版积分规则

搜索

0关注 2粉丝 7主题

NEO官网


关注微博

返回顶部 返回列表
分享 发帖