高扬
經由 在 1月 15, 2018
(|)
121 閱讀
汉武帝时期,虽然饱学多才的齐国人主父偃懂得圈子的重要,经常出入豪门游历于诸侯之间,但无人相识予以重用。在他入不敷出难以为继时,只好上书汉武帝,终得赏识。一天,汉武帝召集主父偃与徐乐、严安三人议事,那种相见恨晚、惺惺相惜之感油然而生。后来,正是主父偃推行推恩的建言,让汉武帝的政权得以稳固。
相见恨晚出自《史记平津侯主父列传》:“天子召见三人,谓曰:‘公等皆安在?何相见之晚也。’”该成语形容一见如故,意气极其相投。
在区块链技术发展中,区块链与共识算法颇有点相见恨晚的味道。
当人们梦寐以求“在不可信信道上传输可信信息、价值转移”时,区块链让这个梦想成真;当人们绞尽脑汁“如何在分布式场景下达成一致性”时,共识机制让这个想法变得可行。共识机制是事务达成分布式共识的算法,意在去中心化的思想上解决节点间互相信任的问题。也正是因为共识机制,让区块链能在众多节点达成一种平衡。
尽管密码学占据了区块链的半壁江山,但却是共识机制为区块链系统运行保驾护航。区块链与共识算法可谓相见恨晚,共同构建了区块链技术的无与伦比。
区块链是一种去中心化的分布式账本系统,可以用它来登记和发行数字化资产、产权凭证、积分等,并以点对点的方式进行转账、支付和交易。区块链系统与传统的中心化账本系统相比,具有完全公开、不可篡改、防止多重支付等特点,并且不依赖于任何可信的第三方。
由于点对点网络下存在较高的网络延迟,各个节点所观察到的事务先后顺序就不可能完全一致。因此,区块链系统需要设计一种机制,对在差不多时间内发生的事务的先后顺序进行共识。
这种对一个时间窗口内的事务的先后顺序达成共识的算法,被称为“共识机制”。新西兰有一个叫“地球之歌”的共享社区,住的都是环保主义者。加入这个社区的人,必须是认同彼此理念,遵守社区共治的机制。这就是共识机制的作用。
从科学理论的角度看,在分布式场景下达成完全一致性几乎不可能,但从技术应用的角度看,完全可以通过牺牲一部分代价来换取分布式场景的一致性。基于此,区块链上设计的各种共识机制,都可以看作牺牲那一部分代价来换取多适合的一致性,在这种思想上进行一个灵活的变换,即在适当的时间空间牺牲一部分代价,换取适应于当时场景的一致性,可以实现灵活的区块链系统,即可插拔式的区块链系统。
比较经典的是,在分布式系统中有无作恶节点,分为拜占庭容错和非拜占庭容错机制。
在区块链这种分布式的架构中,有三种部署模式:公共链、联盟链、私有链;相对应的也有:去中心化分布式系统、部分去中心化分布式系统和弱中心分布式系统。在分布式系统中,多个主机通过异步通信方式组成网络集群。在这个异步系统中,需要主机之间进行状态复制,以保证每个主机达成一致的状态共识。
然而在异步系统中,可能出现无法通信的故障主机,而主机的性能可能下降,网络可能拥堵,这些可能导致错误信息在系统内传播。因此,需要在默认不可靠的异步网络中定义容错协议,以确保各主机达成安全可靠的状态共识。
量子管理学奠基人丹娜.左哈尔(Danah Zohar)说,你的思维必须适应量子时代,别无选择。她认为,传统的管理理念来源于牛顿理论,在量子时代我们必须接受万物互联、没有边界的开放思想。在这个充满不确定的时代,量子领导和量子理论讲的就是,我们不能害怕这一点,我们需要利用这一点,恰恰就是这个时候才有创新的可能。
沉溺于过去会让我们走向灭亡,因此我们必须做出选择,即必须走向量子的未来。中国有着乐观开放的心态,朝气蓬勃地走向未来。联系才会构建现实。在量子物理中,一加一不再等于二,而是三。即两个东西结合之后,不是两个结合体,中西方文化相结合就是量子文化。
为实现分布式思想,人们根据FLP定理(不可能性)和CAP定理(数据一致性、服务可用性、分区容错性)设计共识算法。于是,理想的分布式系统的一致性需满足:
1.可终止性(Termination):一致性的结果可在有限时间内完成;
2.共识性(Consensus):不同节点最终完成决策的结果应该相同;
3.合法性(Validity):决策的结果必须是其他进程提出的提案。
但在实际的计算机集群中,可能存在以下问题:1.节点处理事务的能力不同,网络节点数据的吞吐量有差异;2.节点间通讯的信道可能不安全;3.可能会有作恶节点出现;4.当异步处理能力达到高度一致时,系统的可扩展性就会变差(容不下新节点的加入)。
在 20 世纪 80 年代出现了很多分布式系统共识算法,其中PBFT最为经典。PBFT是Practical Byzantine Fault Tolerance的缩写,意为实用拜占庭容错算法。拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥堵或中断以及遭到恶意攻击等原因,计算机和网络可能出现不可预料的行为。拜占庭容错技术被设计用来处理这些异常行为,并满足所要解决的问题的规范要求。
于是,拜占庭将军问题的可以描述为:一个发送命令的将军要发送一个命令给其余 n-1 个将军,使得:IC1.所有忠诚的接收命令的将军遵守相同的命令;IC2.如果发送命令的将军是忠诚的,那么所有忠诚的接收命令的将军遵守所接收的命令。
PBFT算法要求至少要4个参与者,有人对PBFT算法打了一个形象比喻。比如一支卫戍部队有1个将军和3个师长,总统向该将军下达命令,要求部队离开卫戍区“向前行军500公里”。接到总统命令,该将军分别给3个师长下达离开卫戍区的命令:“向前行军500公里”。接到将军命令后,3个师长立即执行,并汇报结果。
A师长报告他的部队位于卫戍区以东500公里,B师长报告他的部队位于卫戍区以东500公里,C师长报告他的部队位于卫戍区以东300公里。接到报告,该将军发现“卫戍区以东500公里”占多数(2票>1票),于是忽略C师长的汇报结果,给总统报告:“部队已奉命到达指定地点:‘卫戍区以东500公里。’”
试想,如果没有容错的共识算法,那将是一场纠结,不仅发布命令的人担忧,更让执行命令的下属左右为难,进退维谷。一旦延误战机,甚至还会导致一场万劫不复的灾难。
分類: 14.其他類別