小蚁区块链的共识算法dbft存在重大安全问题!
テレビ東京
发表于 2022-11-4 02:14:41
133
0
0
根据拜占庭容错的要求,总节点数量的要求: n >= 3f + 1 (其中,f代表作恶节点数量),在小蚁区块链中,记帐人中有一位是议长,其余是议员,
议长负责出块,也就是提议(proposal), 议员负责对提议进行投票和验证,如果投票数量 >= 2f + 1,就代表该区块最终被确定下来,' j% S3 n3 Y" A7 l p
如果出现议长离线的情况下,议员是根据一定的超时机制来重新选出议长,这一过程也被称为change-view(改变视图)的过程,
% d7 P5 }/ Q+ j
这里面存在一些很细微的边界条件可以让小蚁出现分叉,小蚁技术团队根本没有考虑到,那就是,在一些议员收2f + 1个投票时,其他的节点未必也能收到2f+1这么多的投票消息,因为计算机网络是可能延迟的,还是异步的,就像教科书中描述的“两军问题”一样," t$ T7 T# Y1 M! K+ w3 [
( Y& K. j$ {( K, E9 W( ^
根本没有办法知道另一方是否真正收到消息,在小蚁中,如果出现一部分议员收到2f+1个投票消息,另一部分议员没有收到2f+1且达到超时的界限时,那这未收到2f+1的这一部分议员就会发起 change-view过程,重新来确定新的议长,而那些已经收到2f+1投票消息的议员们就已经把当前的区块定为最终确认过的区块并且开始进入下一个区块高度 (block-height)的流程,这样区块网络已经被分叉成两部分子网络了!
当然,上面的分析还只是在黑客未控制任何一个记帐人节点的前提下,单单是网络延迟就会导致的边界条件下的严重问题,当然这种情况下概率要低一些,2 h/ v. r/ g" |/ i( Q* a2 [
6 C: N0 \9 U4 n: d
但是另一方面,当一个作恶的人或者黑客混入了小蚁的记帐人节点时,那黑客就可以故意改写源代码,在快要超时重选议长的时候,黑客再发起提议,此时就有很大的概率复现上面说的分叉现象,所以小蚁官方宣布的 只要恶意节点不超过3分之一,就不会分叉,不会有任何问题,这个说法明显是盲目自信的宣言而已!4 k' L5 X% }; v2 Q8 J' j+ `% Z) G
目前看来,除了比特币的pow能较好的解决 "拜占庭容错“ 和 “两军问题”之外,其他所有的什么dbft, pbft, dpos之类的共识算法都会存在上面所描述的边界问题,导致网络分叉成多个。。。
成为第一个吐槽的人