来自Wikipedia,免费的百科全书
在容错的分布式计算中,拜占庭失效可以是分布式系统中算法执行过程中的任意一个错误。这些错误被统称为“崩溃失效”和“发送与遗漏是实效”。当拜占庭失效发生时,系统可能会做出任何不可预料的反应。
这些任意的失效可以粗略地分成以下几类:
进行算法的另一步时失效,即崩溃失效;
无法正确执行算法的一个步骤;
执行了任意一个非算法指定的步骤
各个步骤由各进程执行,算法就是由这些进程执行的。一个错误的进程是在某个点出现了上述情况的进程。没有出现错误的进程是正确的进程。
参考Byzantine fault tolerance
拜占庭指拜占庭将军问题,这是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。
拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。拜占庭容错协议必须处理这些失效,并且这些协议还要满足所要解决的问题要求的规范。这些算法通常以其d性t作为特征,t表示算法可以应付的错误进程数。
很多经典算法问题只有在t<n/3是才有解,如拜占庭将军问题,其中n是系统中进程的总数。
参考文献
L Lamport, R Shostak, and M Pease, The Byzantine Generals Problem, ACM Trans Programming Languages and Systems, Vol 4, No 3, July 1982, pp 382-401
来源 ">五分钟了解共识机制
什么是共识机制?
“共识机制是区块链的灵魂。”这是业内经常能听到的一句话,共识机制在区块链中的地位可想而知。那么到底什么是共识机制呢?我们不妨从拜占庭将军问题说起。
拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御目的,每个军队都分隔很远,将军与将军之间只能靠信差传消息。在战争的时候,拜占庭军队内所有将军和副官必须达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定又扰乱整体军队的秩序。在进行共识时,结果并不代表大多数人的意见。这时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。
拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。
而这个问题该如何解决?中本聪的理念给出了一个比较好的答案:不能让所有人都有资格发信息,而是给发信息设置了一个条件:“工作量”,将军们同时做一道计算题,谁先算完,谁才能获得给其他小国发信息的资格。而其他小国在收到信息后,必须采用加密技术进行签字盖戳,以确认身份。然后再继续做题,做对题的再继续发消息……对这种先后顺序达成共识的算法,就是共识机制。
共识机制的作用
区块链作为一种按时间顺序存储数据的数据结构,可支持不同的共识机制。在区块链上,每个人都会有一份记录链上所有交易的账本,链上产生一笔新的交易时,每个人接收到这个信息的时间是不一样的,有些想要干坏事的人就有可能在这时发布一些错误的信息,这时就需要一个人把所有人接收到的信息进行验证,最后公布最正确的信息。
共识机制是区块链技术的重要组件。它就像一本法典,维系着区块链世界的正常运转,使得区块链技术自带改善世界的光芒,也是让区块链得以被全世界逐步接受和认可的最大幕后功臣,它让互联网、陌生人之间,在没有第三方作为信用背书的情况下发生的一切交易变成可能,它赋予了机械的代码以人性和温度。
共识机制的类别
目前的共识机制主要有POW、POS、DPOS、PBFT、dBFT、Pool验证池。
POW,就是人们熟悉的比特币挖矿,通过计算出一个满足规则的随机数,即获得本次记账权,发出本轮需要记录的数据,全网其它节点验证后一起存储。可实现完全去中心化,节点自由进出。干的越多,收的越多。
POS,权益证明,POW的一种升级共识机制,根据每个节点所占代币的比例和时间,以此等比例的挖矿难度,从而加快找随机数的速度。持有越多,获得越多
DPOS,股份授权证明机制,类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。
PBFT ,Practical Byzantine Fault Tolerance,实用拜占庭容错算法,是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制,每个状态机的副本都保存了服务的状态,同时也实现了服务的 *** 作。
dBFT,delegated BFT 授权拜占庭容错算法,由权益来选出记账人,然后记账人之间通过拜占庭容错算法来达成共识。
Pool验证池,基于传统的分布式一致性技术建立,并辅之以数据验证机制,是目前区块链中广泛使用的一种共识机制。Pool验证池不需要依赖代币就可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础之上,可以实现秒级共识验证,更适合有多方参与的多中心商业模式。
现有共识机制存在问题
目前现有的共识机制都不算完美,在一些实际应用场景弊端很多。
A、计算能力浪费
在工作量证明机制POW中,猜数字最快的通常是电脑计算能力强的。超强的计算能级仅用来猜数字,实在是浪费。
B、权益向顶层集中
在权益证明机制POS中,token的余额越多的人获得公示信息的概率越高,公示人会得到一定的token作为奖励,如此持有token多的人会越来越多,少的人越来越少。
C、作恶成本低下
在靠算力与权益的的多少来获得公示信息的权利的模式当中,当算力和权益向少数人集中之后,这些少数人如果想要做一些违反规则的事情是轻而易举的;在PBFT中,由所有人投票,如果一个没有任何token余额的人想要捣乱,那他几乎是完全没有利益损失。
D、对于真正的去中心化构成威胁
在工作量证明机制中,计算能力越强,获得记录权利的概率就越高。如果有人把很多人集中在一起来猜数字,把好多电脑的算力加在一起来用,那这些抱团的人就会更容易获得公示信息的权利,发展到最后可能公示权就直接掌握在这些人手里。
在权益证明机制POS中,权益越大的人获得记录权利的概率越高,而记录的人就会有奖励token ,这样一来这些人就会越来越富有,贫富差距就会越来越大。持有token少的人几乎都没有话语权了。权利掌握在少数人手中,这有违区块链去中心化理念。 EOS在第一版白皮书中采用的是DPoS共识机制,在最新一版的白皮书中,其做了一些改进,现为BFT-DPoS共识机制。
DPoS(Delegated Proof of Stake),意思是授权权益证明共识机制。相比于比特币的PoW机制,DPoS不用浪费算力资源争夺记账权,其通过赋予EOS通证持有人投票权,选出21个“超级节点”来担任记账人的角色,保证整个网络的正常运行。21个超级节点轮流负责记账,每一个区块产生后,会按照顺序传递到下一个超级节点中,第二个超级节点要负责打包新的区块,同时确认上一区块的内容,当某一区块被超过2/3的超级节点确认后,该区块将被确认为不可逆区块。
BFT(Byzantine Fault Tolerance),意思是拜占庭容错算法,DPoS共识加上BFT算法后,验证时不再按照出块顺序由超级节点一个个验证区块内容,而是让出块节点成为主节点,出块后同时向剩下20个节点进行广播,并获得节点的验证反馈,如果有超过2/3的节点验证通过,则该区块成为不可逆区块。BFT可以使得EOS的区块确认速度显著增加。
目前采用BFT-DPoS共识机制的EOS可以实现05s的出块速度,1s实现区块的不可逆转。为避免因出块速度过快而漏块,EOS的超级节点会按照其地理位置分布轮流成为主节点,尽可能减少超级节点间的网络延迟,同时规定每个超级节点连续生产6个块,至少保证6个区块中的前几个能确认完成,不会出现整个超级节点被跳过的现象。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)