本文主要是介绍NEO小蚁共识安全,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
NEO小蚁共识安全
前言
NEO小蚁的共识算法很有趣,结合了PBFT和DPOS的思想,虽然是公链,但是似乎更适合在联盟链/私链场景下。而且NEO也支持自己用虚拟机或者docker搭建属于自己的私链。
共识分析
网上针对小蚁的共识算法分析有很多,这里看了两篇源码分析
源码分析1
源码分析2
简单架构
小蚁共识流程
安全
NEO在github曾经有过共识安全的讨论,具体可以见360发表在知道创宇的paper。
大致意思就是360发文的时候的小蚁,代码实现并不能保证dbft中所说的1/3的容错率。
不能保证三分之一的容错率,意思就是当恶意节点低于33%时(例子中7个节点中小于2个就可以使区块链进行分叉)。
而小蚁采用的共识算法又是强调最终性的(finality),也就是一旦分叉后就不能回滚的。所以一旦恶意区块造成了分叉,虽然不像数字货币一样实现双花,但是会对区块链的运作造成不小的影响。
另外,在360发文之前论坛中也有对小蚁dBFT安全的讨论
攻击手法
由于拜占庭节点(恶意节点)可以伪造身份(在投票制的共识算法中,可以同时给两条分叉投票),通过网络延迟或者恶意节点合谋,是可能产生分叉区块的。
合谋需要控制共识节点中的一部分,但没有像比特币网络中51%那么苛刻。
网络延迟可以通过人为DOS制造,或者通过一些攻击手法来延迟出块时间。
区块延迟
NEO系统由于单个共识节点的故障,导致共识过程陷入僵局,出现时长为两小时的阻滞。
DPOS安全性
知道创宇CEO赵伟有对DPOS的安全性作出演讲,戳这里
DPOS其实和中国的代表选举制度的思想很想,但是需要保证选出来的代表节点不进行合谋,如果有节点搞破坏,很容易造成共识不一致而导致分叉。
这篇关于NEO小蚁共识安全的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!