区块链中的共识机制
作者:互联网
链客,专为开发者而生,有问必答!
此文章来自链客区块链技术问答社区,未经允许拒绝转载。
对于区块链上的共识机制可以理解成由谁来构造区块,并维护区块链的统一,提到这问题的时候就一定会提到拜占庭容错.
拜占庭将军问题:这个典故可以追溯到当年罗马帝国战争时期,帝国拥有众多军队,每个军队都各自守着自己的地盘,距离也比较远。那时候的通讯不像现在,有微信,扣扣,电话等。他们军队的命令传输都是通过所谓的信差来传输的。战争开始前所有的军队必须达成一致的共识,看过古装剧的朋友也都知道,军队里面可能会出现叛徒,或者是有敌人的间谍等,从而导致了军队不能同时行动,没能达成一致。这就是现实中的拜占庭将军问题。
延续但现在,在拜占庭将军的问题上,人们提出了一个拜占庭容错,拜占庭容错是对现实世界的一种模型化假设,在点对点的分布式网络系统中,节点由于硬件设备故障,或者被恶意攻击等,导致了整个系统出现不可预估的后果。而拜占庭容错的协议就必须处理这些未知的错误。
区块链中的共识机制有一个演变的过程,一开始的时候中本聪大牛并没有用BFT ,在比特币中使用的是被称作之前文章写过的:proof-of-work。POW工作量证明和最长链机制,比特币中共识机制的最终体现就是比特币的最长链。随着区块链技术的发展,它们的工作都是为了通过共识算法来保证系统的统一性。
其实,共识机制在分布式系统中是无解的,因为众多节点之间的通信,必然存在网路的不可靠的原因,主机的故障,遭到攻击呀等等。所以是无法保证实现完全的共识的。这个结论早在1985年的时候就已经提出了。他们是三位:Fischer,Lynch和Patterson。他们提出了一个FLP不可能的原理:在网络可靠的前提下,任意节点失效,一个或者多个的最小化异步模型系统中,不可能存在一个解决一致问题的确定性算法。这三位后来的论文还获得了Dijkstre奖。有兴趣的可以谷歌一下。
标签:军队,容错,拜占庭,链中,共识,机制,区块 来源: https://blog.csdn.net/weixin_44172023/article/details/91491227