從0到1搞懂拜占庭容錯(cuò)共識機(jī)制

共識機(jī)制堪稱區(qū)塊鏈的核心归露。我們知道定铜,EOS、Hyperledger以及Stellar等著名的項(xiàng)目哄芜,都采用了BFT(拜占庭容錯(cuò))共識機(jī)制柬唯,那么,BFT到底是什么鬼锄奢?和其它共識機(jī)制相比,又有什么優(yōu)勢和特點(diǎn)呢涂屁?

1灰伟、什么是共識機(jī)制?

所謂共識機(jī)制栏账,就是區(qū)塊鏈中的節(jié)點(diǎn),其中包括誠實(shí)節(jié)點(diǎn)和惡意的節(jié)點(diǎn)盟萨,就如何寫入一個(gè)區(qū)塊達(dá)成共識了讨。

我們以最熟悉的比特幣為例,因?yàn)橛斜忍貛诺莫?jiǎng)勵(lì)胞谭,所以礦工們都會(huì)爭奪每十分鐘一次的記賬權(quán)男杈。公平起見,比特幣采用了PoW(工作量)證明的共識機(jī)制,也就是通過增加算力來增加獲得記賬權(quán)的概率彩库。

PoW的容錯(cuò)性是50%先蒋,也就是說只要超過一半的節(jié)點(diǎn)是誠實(shí)的,就可以保證區(qū)塊鏈數(shù)據(jù)的有效性竞漾。不過,PoW存在出塊慢业岁、吞吐量小鳞仙、耗電大的局限笔时,因此PoS、BFT等共識機(jī)制也在不斷被廣泛應(yīng)用借笙。

2右犹、BFT的原理

下面姚垃,我們先回到中世紀(jì)的西方世界。想象一下掂墓,強(qiáng)大的拜占庭帝國的幾支部隊(duì)在一個(gè)敵人的城市之外扎營看成,每支部隊(duì)都由自己的將軍指揮,將軍只能通過信使互相溝通川慌。在觀察敵人后,他們必須決定共同的行動(dòng)計(jì)劃梦重。然而,其中一些將軍可能是叛徒降瞳,試圖阻止忠誠的將軍達(dá)成協(xié)議蚓胸。將軍必須決定何時(shí)攻擊這座城市除师,但他們需要大部分軍隊(duì)同時(shí)進(jìn)行攻擊才有勝算扔枫。

協(xié)同進(jìn)攻方能取勝茧吊,不協(xié)同進(jìn)攻將會(huì)失敗

為了取得戰(zhàn)斗的勝利,將軍們必須有一個(gè)算法來保證:

(a)所有忠誠的將軍采取同一行動(dòng)計(jì)劃瞄桨;

(b)少數(shù)叛徒不能使忠誠的將軍采取不良計(jì)劃讶踪。

忠誠的將軍們都會(huì)按照算法所說的去做,但叛徒可以做任何他們想做的事情乳讥。無論叛徒做什么,算法都必須保證上述條件(a)唉工。忠誠的將軍不僅應(yīng)該達(dá)成協(xié)議汹忠,而且應(yīng)該就合理的計(jì)劃達(dá)成一致。

在此我們將這個(gè)寓言放到區(qū)塊鏈中:故事中的“將軍”是參與運(yùn)行區(qū)塊鏈(數(shù)據(jù)庫)分布式網(wǎng)絡(luò)的各方谣膳,他們來回進(jìn)行通訊的信使就是通過網(wǎng)絡(luò)進(jìn)行通信的方式铅乡。 “忠誠將軍”的集體目標(biāo)是攻占敵軍----寫入一個(gè)大家公認(rèn)的區(qū)塊記錄。

在我們的寓言中花履,有效的信息將是決定支持攻擊的正確機(jī)會(huì)挚赊。對于忠誠的區(qū)塊鏈參與者而言,他們有興趣確保區(qū)塊鏈(數(shù)據(jù)庫)的完整性咬腕,從而確保只接受正確的信息。另一方面纽帖,叛變的將軍將是任何試圖偽造區(qū)塊鏈(數(shù)據(jù)庫)信息的一方,他們的潛在動(dòng)機(jī)有很多種:可能是試圖花費(fèi)他實(shí)際上并不擁有的數(shù)字貨幣扒吁,或者是不想履行之前已經(jīng)簽署和提交的智能合同中所述義務(wù)等等室囊。

區(qū)塊鏈的力量在于它需要在一個(gè)分布式的網(wǎng)絡(luò)中、其中可能或者肯定有“惡意節(jié)點(diǎn)”----如同拜占庭將軍們所處的境地盼铁,也能達(dá)成正確的共識尝偎。

各種計(jì)算機(jī)科學(xué)家已經(jīng)從寓言中概述了拜占庭將軍問題的一些潛在解決方案,用于在區(qū)塊鏈系統(tǒng)中建立共識的實(shí)用拜占庭容錯(cuò)算法(PBFT)肤寝,是那些潛在的解決方案之一抖僵。簡單地說,PBFT的作用如下:每個(gè)“將軍”維持一個(gè)內(nèi)部狀態(tài)(持續(xù)的特定信息或狀態(tài))义桂,當(dāng)“將軍”接收消息時(shí)世吨,它們將消息與其內(nèi)部狀態(tài)結(jié)合使用呻征,以運(yùn)行計(jì)算或操作。這種計(jì)算反過來告訴這個(gè)“將軍”如何思考有關(guān)信息沐祷。然后攒岛,在達(dá)成關(guān)于新消息的個(gè)人決定之后,這個(gè)“將軍”再與系統(tǒng)中所有其他“將軍”共享該決定灾锯,最后根據(jù)所有將軍提交的全部決定,確定共識決定吵聪。

算法的研究結(jié)果顯示,當(dāng)“叛變將軍”少于將軍總數(shù)的三分之一時(shí)帽蝶,“忠誠將軍”將可以做出正確的決定并達(dá)成一致块攒。

下面我們看這個(gè)例子,一共三個(gè)將軍驹尼,其中一個(gè)是發(fā)令將軍A琅绅、兩個(gè)是普通將軍B和C。當(dāng)A告訴B攻擊而告訴C撤退時(shí)料祠,B和C互相發(fā)送消息澎羞,因?yàn)樗麄z都是忠誠的,都將如實(shí)轉(zhuǎn)發(fā)A的消息顺呕。這樣B和C都不能弄清楚到底誰是叛徒----因?yàn)椴淮_定A是叛徒括饶、或者是否另一個(gè)普通將軍可能偽造了據(jù)稱來自A的信息⊥佳妫可以證明技羔,如果n是將軍總數(shù),而t是其中的叛徒數(shù)量 藤滥,那么只有當(dāng)n> 3t并且通信是同步的時(shí)候拙绊,拜占庭將軍問題才能得到解決泳秀。

3榄攀、結(jié)論

與最傳統(tǒng)的PoW共識機(jī)制相比,PBFT有以下優(yōu)勢:

1磺陡、效率高

PBFT要求所有節(jié)點(diǎn)之間的兩兩通信漠畜,因此這種通信機(jī)制要求節(jié)點(diǎn)數(shù)量不能太多,通常是幾十個(gè)憔狞,在這種模式下瘾敢,節(jié)點(diǎn)達(dá)成一致的速度更快,延時(shí)更低簇抵。

2碟摆、吞吐量高

節(jié)點(diǎn)數(shù)量的控制,使PBFT網(wǎng)絡(luò)不用像大型PoW網(wǎng)絡(luò)那樣典蜕,受限于處理能力最低的節(jié)點(diǎn)愉舔;因此帶來全網(wǎng)吞吐量的大幅提升。

3轩缤、節(jié)能

無須使用工作量證明的耗電模式,因此更加節(jié)能環(huán)保典奉。

所謂有得必有失丧叽,相對而言踊淳,PBFT又有以下劣勢:

1陕靠、可擴(kuò)展性及去中心化程度較弱

由于節(jié)點(diǎn)數(shù)量的限制脱茉,因此可擴(kuò)展性較弱;同時(shí)節(jié)點(diǎn)需要選舉税肪、或者許可榜田,不像PoW節(jié)點(diǎn)那樣可以自由加入,去中心化程度較弱净捅。

2辩块、容錯(cuò)性較低

PoW網(wǎng)絡(luò)的容錯(cuò)性是50%,也就是須防范51%攻擊国章;而PBFT容錯(cuò)性只有三分之一豆村,也就是34%的惡意節(jié)點(diǎn)即可發(fā)起攻擊。

表 共識算法對比? ? 來源:中國信息通信研究院抵碟,2018 年8 月

最后再附上目前業(yè)內(nèi)主流的共識算法對比表坏匪。由于行文倉促,其中難免有不完備之處适滓,歡迎留言進(jìn)行探討。若大家感興趣罚屋,后續(xù)還將繼續(xù)推出更深度的分析嗅绸。

祝您國慶假期愉快!

參考文獻(xiàn):

https://blockonomi.com/practical-byzantine-fault-tolerance/

本文首發(fā)于:幣投財(cái)經(jīng)

作者:幣投研究院 李輝

轉(zhuǎn)載請注明出處猛拴。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末愉昆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子焊切,更是在濱河造成了極大的恐慌芳室,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牵祟,死亡現(xiàn)場離奇詭異抖格,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)收奔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門坪哄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來势篡,“玉大人,你說我怎么就攤上這事念祭“欤” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵站玄,是天一觀的道長濒旦。 經(jīng)常有香客問我疤估,道長,這世上最難降的妖魔是什么铃拇? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任慷荔,我火速辦了婚禮,結(jié)果婚禮上贷岸,老公的妹妹穿的比我還像新娘磷雇。我一直安慰自己,他們只是感情好螟蒸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布崩掘。 她就那樣靜靜地躺著苞慢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挽放。 梳的紋絲不亂的頭發(fā)上辑畦,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機(jī)與錄音褪测,去河邊找鬼潦刃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛分扎,可吹牛的內(nèi)容都是我干的胧洒。 我是一名探鬼主播墨状,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肾砂,長吁一口氣:“原來是場噩夢啊……” “哼宏悦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起源葫,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤息堂,失蹤者是張志新(化名)和其女友劉穎块促,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體持隧,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逃片,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年褥实,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哥艇。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡僻澎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出祖乳,到底是詐尸還是另有隱情秉氧,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布亚斋,位于F島的核電站,受9級特大地震影響纸泡,放射性物質(zhì)發(fā)生泄漏厚掷。R本人自食惡果不足惜级解,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一勤哗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冬竟,春花似錦民逼、人聲如沸泵殴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笑诅。三九已至,卻和暖如春疮鲫,著一層夾襖步出監(jiān)牢的瞬間吆你,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工俊犯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留妇多,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓燕侠,卻偏偏與公主長得像者祖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子绢彤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容