看懂“拜占庭容错”,也就看懂了区块链的核心技术

让人生,让人死,让人痴迷,让人疯狂。

这就是传说中繁华与没落,绝望与救赎并存的东罗马帝国首都——拜占庭。

小编这是要给上历史课吗?NO NO NO,今天要讲的是区块链的灵魂,它背后的共识协议。

那这和拜占庭有什么关系呢?让小亚慢慢和大家胡扯解释吧!

不知大家有没有经常听说某某链使用某某算法解决了拜占庭将军问题,感觉高深莫测,瞬间提升了档次,那么究竟什么是拜占庭将军问题呢?随着比特币的出现和兴起,这个著名问题又重入大众视野。如果弄明白这个问题,对区块链的理解将会更透彻。

首先来看下百度百科的解释:

拜占庭将军问题(Byzantine failures)是由莱斯利·兰伯特提出的点对点通信中的基本问题。含义是在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。因此对一致性的研究一般假设信道是可靠的,或不存在本问题。

感觉一头雾水有木有?别急,看完下面这个故事先......

在很久很久以前,拜占庭是东罗马帝国的首都。那个时候罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信使传递消息。

在打仗的时候,拜占庭军队内所有将军必需达成一致的共识,才能更好地赢得胜利。但是,在军队内有可能存有叛徒,扰乱将军们的决定。

这时候,在已知有成员不可靠的情况下,其余忠诚的将军需要在不受叛徒或间谍的影响下达成一致的协议。

这个故事表达了计算机网络中所存在的一致性问题,也被称为拜占庭将军问题。

故事可不是小亚瞎编的,而是由莱斯利·兰伯特( Leslie Lamport )瞎编的打的比喻,把将军看做是计算机;信使就是网络;信使被截杀,代表着计算机间的网络不可达;而将军叛变则代表着程序出错。

我们如何来解决拜占庭将军问题呢?解决方案就是拜占庭容错(PBFT)。

如果将军们在有叛徒存在的情况下仍然达成了一致,我们就称达到了“拜占庭容错”。

其核心是:

信息在计算机间互相交换后,各计算机列出所有得到的信息,以大多数的结果作为解决办法。

看到这里想必大家已经知道了,这不就是区块链技术的共识机制吗?

区块链上的共识机制主要解决由谁来构造区块,以及如何维护区块链统一的问题。

拜占庭容错解决的也是谁来发起信息,如何实现信息的统一同步的问题。

2009年,中本聪创造出了比特币,其背后的区块链技术神奇的解决了这一困扰计算机界几十年的问题。

在拜占庭将军问题中,比特币的“工作量证明(POW)”机制,确保了他们只能向部队发送可信消息,也就保证了同时出击的成功。通过POW增加了发送信息的成本,降低节点发送消息的速率,这样就可以保证在一个时间只有一个节点在进行广播,同时在广播时会附上自己的签名。

这个过程就像一位将军A在向其他的将军(B、C、D…)发起一个进攻提议一样,将军B、C、D…看到将军A签过名的进攻提议书,如果是诚实的将军就会立刻同意进攻提议,而不会发起自己新的进攻提议。以上就是比特币网络中单个区块达成共识的方法(取得一致性)。

工作量证明其实相当于提高了发布虚假区块的成本。在工作量证明下,只有第一个完成证明的节点才能广播区块,因此竞争难度非常大,需要很高的算力,如果不成功算力就白白的耗费了(算力是需要成本的)。如果有这样的算力作为诚实的节点,同样也可以获得很大的收益(这就是矿工所作的工作),也就减少了节点发布虚假区块的可能,整个系统也因此而更稳定。

很多人批评工作量证明浪费了巨大的电力,促使人们去探索新的解决共识问题的机制。权益证明机制(POS)就是一个代表,在拜占庭将军问题的角度来看,它同样提高了叛徒的成本,因为账户需要首先持有大量余额才能有更多的几率广播区块。说到底,共识算法的核心就是解决拜占庭将军问题。

生活中有许多类似拜占庭将军的信任问题,而区块链则是解决这些问题的信任机器。

注:以上文章配图均来源于网络,版权归原作者所有,如有不妥请后台留言告知。

官方微信|尚亚SYEX

官方微博|@尚亚交易所

尚亚客服|SYKF08

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180929G1VCTN00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券