丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
金融科技 正文
發(fā)私信給敖萌
發(fā)送

0

區(qū)塊鏈研習(xí) | 看懂“拜占庭容錯(cuò)”,也就看懂了區(qū)塊鏈的核心技術(shù)

本文作者: 敖萌 編輯:溫曉樺 2017-09-13 14:20
導(dǎo)語(yǔ):當(dāng)企業(yè)希望使用區(qū)塊鏈技術(shù)改進(jìn)自己的業(yè)務(wù)或者開(kāi)展新業(yè)務(wù)的時(shí)候,一定要選擇適合自己業(yè)務(wù)的區(qū)塊鏈技術(shù)和共識(shí)算法

雷鋒網(wǎng)AI金融評(píng)論按:“區(qū)塊鏈研習(xí)”是雷鋒網(wǎng)推出的區(qū)塊鏈技術(shù)研習(xí)系列,本系列將收羅學(xué)界與業(yè)界大咖技術(shù)研究與應(yīng)用實(shí)踐中的真知灼見(jiàn),以饗讀者。本文作者為中國(guó)信息通信研究院(工信部電信研究院)專(zhuān)家敖萌博士,雷鋒網(wǎng)獨(dú)家特約文章,雷鋒網(wǎng)與信通院聯(lián)合首發(fā)。未來(lái),敖萌博士原創(chuàng)的區(qū)塊鏈系列文章還將繼續(xù)刊出,雷鋒網(wǎng)與信通院相關(guān)平臺(tái)同步更新,敬請(qǐng)關(guān)注!

區(qū)塊鏈研習(xí) | 看懂“拜占庭容錯(cuò)”,也就看懂了區(qū)塊鏈的核心技術(shù)

上一篇我們簡(jiǎn)單提到了拜占庭將軍問(wèn)題:拜占庭的n個(gè)將軍圍攻一個(gè)敵人,n個(gè)將軍包圍著這個(gè)敵人,所以他們是在不同的地方。忠誠(chéng)的將軍希望通過(guò)某種協(xié)議達(dá)成某個(gè)命令的一致(比如約定某個(gè)時(shí)間一起進(jìn)攻)。但其中一些背叛的將軍會(huì)通過(guò)發(fā)送錯(cuò)誤的消息阻撓忠誠(chéng)的將軍達(dá)成命令上的一致。如果同時(shí)發(fā)起進(jìn)攻的將軍數(shù)量少于m個(gè),那么不足以殲滅敵人反而容易被敵人全部殲滅。怎樣做才能保證有多于m個(gè)將軍在同一時(shí)間一起發(fā)起進(jìn)攻?

“拜占庭將軍問(wèn)題”模型中,對(duì)于將軍們(節(jié)點(diǎn))有兩個(gè)默認(rèn)的假設(shè): 

  • 所有忠誠(chéng)的將軍收到相同的命令后,執(zhí)行這條命令得到的結(jié)果一定是相同的;

  • 如果命令是正確的,那么所有忠誠(chéng)的將軍必須執(zhí)行這條命令。

假設(shè)1的含義是:所有節(jié)點(diǎn)對(duì)命令的解析和執(zhí)行是一樣的,這個(gè)命令必須是一個(gè)確定性的命令,不能存在隨機(jī)性,也不能依賴(lài)節(jié)點(diǎn)自身的狀態(tài)。(這個(gè)命令不能是心情好就攻擊敵人,心情不好就原地休息。)

假設(shè)2的含義是:忠誠(chéng)的將軍需要判斷接收到的命令是不是正確的。這個(gè)判斷命令的方法是整個(gè)拜占庭容錯(cuò)技術(shù)的核心。

對(duì)于將軍們的通信過(guò)程,在“拜占庭將軍問(wèn)題”中也是有默認(rèn)假設(shè)的:點(diǎn)對(duì)點(diǎn)通信是沒(méi)問(wèn)題的。也就是說(shuō),在這里,我們假設(shè)A將軍要給B將軍一條命令X,那么派出去的傳令兵一定會(huì)準(zhǔn)確的把命令X傳遞給B將軍。

有了上述假設(shè),我們來(lái)看看將軍們面臨的核心問(wèn)題是什么。

我們考慮4個(gè)將軍的情況,同時(shí)假設(shè)4個(gè)將軍中最多只有1個(gè)背叛者。當(dāng)4個(gè)將軍A、B、C、D把敵人包圍了之后,必須協(xié)商一個(gè)統(tǒng)一的時(shí)間去發(fā)起進(jìn)攻。這時(shí),A將軍派出了3個(gè)傳令兵,分別告訴B、C、D將軍,下午1點(diǎn)準(zhǔn)時(shí)發(fā)起進(jìn)攻。到了下午1點(diǎn),A、C、D三個(gè)將軍發(fā)起了進(jìn)攻,殲滅了敵人,同時(shí)他們?nèi)齻€(gè)發(fā)現(xiàn)B是背叛的。雖然B背叛了,但是對(duì)最終任務(wù)沒(méi)有影響。

 區(qū)塊鏈研習(xí) | 看懂“拜占庭容錯(cuò)”,也就看懂了區(qū)塊鏈的核心技術(shù)

但如果A是背叛的,會(huì)發(fā)生什么情況?A派出3個(gè)傳令兵,分別告訴B、C、D將軍在下午1點(diǎn)、2點(diǎn)、3點(diǎn)發(fā)起進(jìn)攻。于是,到了下午1點(diǎn),B將軍去攻擊敵人,由于寡不敵眾,全軍覆沒(méi);2點(diǎn),C將軍全軍覆沒(méi);3點(diǎn),D將軍全軍覆沒(méi)。

因?yàn)閷?duì)于忠誠(chéng)的將軍來(lái)說(shuō),他不知道誰(shuí)是背叛者,所以,他不能完全相信接收到的命令,他必須對(duì)命令做出判斷。在1999年,著名的PBFT算法出現(xiàn)了。這個(gè)算法說(shuō)起來(lái)也不難理解,他的核心思想是:對(duì)于每一個(gè)收到命令的將軍,都要去詢(xún)問(wèn)其他人,他們收到的命令是什么。

區(qū)塊鏈研習(xí) | 看懂“拜占庭容錯(cuò)”,也就看懂了區(qū)塊鏈的核心技術(shù) 

回到剛才的第二種情況(A是背叛者),A派出3個(gè)傳令兵,分別告訴B、C、D將軍在下午1點(diǎn)、2點(diǎn)、3點(diǎn)發(fā)起進(jìn)攻。B將軍派出傳令兵去告訴C和D兩位將軍,B收到的命令是下午1點(diǎn)進(jìn)攻。C也同樣派出了傳令兵分別告訴B和D兩位將軍,C收到的命令是下午2點(diǎn)進(jìn)攻。D也同樣告訴B和C兩位將軍,D收到的命令是下午3點(diǎn)進(jìn)攻。于是,B得到了3條指令:A命令B下午1點(diǎn)進(jìn)攻,A命令C下午2點(diǎn)進(jìn)攻,A命令D下午3點(diǎn)進(jìn)攻。B很容易判斷出來(lái),A是背叛者(因?yàn)锽知道最多只有一個(gè)背叛者)。C和D也能做出同樣的判斷。因此這次進(jìn)攻時(shí)間的協(xié)商是無(wú)效的。

 區(qū)塊鏈研習(xí) | 看懂“拜占庭容錯(cuò)”,也就看懂了區(qū)塊鏈的核心技術(shù)

采用了這種辦法以后,另一種情況又會(huì)怎樣?當(dāng)B是背叛者,A將軍派出了3個(gè)傳令兵,分別告訴B、C、D將軍,下午1點(diǎn)準(zhǔn)時(shí)發(fā)起進(jìn)攻。B告訴C說(shuō)B收到的命令是下午2點(diǎn),B告訴D說(shuō)收到的命令是下午2點(diǎn),C和D分別告訴另外2個(gè)將軍,A告訴他們的命令是下午1點(diǎn)。

 區(qū)塊鏈研習(xí) | 看懂“拜占庭容錯(cuò)”,也就看懂了區(qū)塊鏈的核心技術(shù)區(qū)塊鏈研習(xí) | 看懂“拜占庭容錯(cuò)”,也就看懂了區(qū)塊鏈的核心技術(shù)

于是,C、D收到的消息都是兩個(gè)1點(diǎn),一個(gè)2點(diǎn)。對(duì)于C、D而言,不需要判斷是A和B誰(shuí)是背叛者——他們只需要執(zhí)行收到多的那個(gè)命令就可以了。

如果A是忠誠(chéng)的,那么B是背叛的,這種情況下對(duì)于A來(lái)說(shuō),他知道自己是忠誠(chéng)的,他發(fā)出的命令,至少有2個(gè)將軍會(huì)執(zhí)行,所以下午1點(diǎn),A、C、D三個(gè)將軍一起去進(jìn)攻,有3個(gè)將軍一起發(fā)起攻擊,敵人被殲滅了。如果B是忠誠(chéng)的,那么B會(huì)收到兩個(gè)1點(diǎn)一個(gè)2點(diǎn),B也會(huì)執(zhí)行收到多的命令,于是B、C、D三個(gè)將軍一起去進(jìn)攻,有3個(gè)將軍一起發(fā)起攻擊,敵人被殲滅了。不管怎樣,按照這種方式執(zhí)行,結(jié)果是沒(méi)問(wèn)題的。

 區(qū)塊鏈研習(xí) | 看懂“拜占庭容錯(cuò)”,也就看懂了區(qū)塊鏈的核心技術(shù)

采用PBFT方法,本質(zhì)上就是利用通信次數(shù)換取信用。每個(gè)命令的執(zhí)行都需要節(jié)點(diǎn)間兩兩交互去核驗(yàn)消息,通信代價(jià)是非常高的。通常采用PBFT算法,節(jié)點(diǎn)間的通信復(fù)雜度是節(jié)點(diǎn)數(shù)的平方級(jí)的。

注意,上面所討論的所有情況里,還有一個(gè)假設(shè):所有傳遞的消息都是口頭消息。意思就是,A告訴B下午1點(diǎn)進(jìn)攻,B可能告訴C說(shuō)“A命令我下午2點(diǎn)進(jìn)攻”。如果采用了書(shū)寫(xiě)的消息,那么情況是不一樣的。A派傳令兵給B一張紙,A將軍用自己獨(dú)特的筆跡寫(xiě)的“下午1點(diǎn)進(jìn)攻”,然后要求B把這張紙傳給C,B在紙上用自己獨(dú)特的筆跡簽名表示同意,然后B傳給C,C也簽名表示同意,然后D也同意,最后簽過(guò)所有名的紙?jiān)俳o每個(gè)人看一眼,就可以讓所有節(jié)點(diǎn)一致了。這種采用書(shū)面簽名消息的情況,對(duì)算法要求簡(jiǎn)單得多。但是,采用書(shū)面消息的前提是:每個(gè)將軍都知道其他將軍的筆跡是什么樣的,并且無(wú)法模仿其他將軍的筆跡。 

在PBFT的基礎(chǔ)上,又出現(xiàn)了很多變種算法,這些算法往往都帶有一些額外的假設(shè)。例如:認(rèn)為發(fā)起請(qǐng)求的客戶(hù)端一定是忠誠(chéng)的,由客戶(hù)端去驗(yàn)證節(jié)點(diǎn)是否忠誠(chéng);認(rèn)為絕大部分時(shí)候?qū)④姸际侵艺\(chéng)的,所以降低兩兩交互核驗(yàn)消息的次數(shù);通過(guò)對(duì)節(jié)點(diǎn)進(jìn)行分工,來(lái)提高整個(gè)系統(tǒng)的處理速度;等。這些變種算法由于增加了額外的假設(shè),導(dǎo)致了整個(gè)系統(tǒng)的去中心化程度的降低(關(guān)于區(qū)塊鏈系統(tǒng)去中心化程度的理解,可以參見(jiàn)本系列的第6篇文章)。

但是,對(duì)于不同類(lèi)型的應(yīng)用場(chǎng)景,有些假設(shè)是合理的,有些假設(shè)則是不合理的。例如,在類(lèi)似比特幣的代幣轉(zhuǎn)賬系統(tǒng)中,不能認(rèn)為客戶(hù)端是忠誠(chéng)的,因?yàn)榭蛻?hù)端很可能會(huì)發(fā)起雙花交易。因此,當(dāng)企業(yè)希望使用區(qū)塊鏈技術(shù)改進(jìn)自己的業(yè)務(wù)或者開(kāi)展新業(yè)務(wù)的時(shí)候,一定要選擇適合自己業(yè)務(wù)的區(qū)塊鏈技術(shù)和系統(tǒng)。

區(qū)塊鏈研習(xí) | 看懂“拜占庭容錯(cuò)”,也就看懂了區(qū)塊鏈的核心技術(shù)

雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

分享:
相關(guān)文章

知情人士

工作在鵝廠的一名區(qū)塊鏈從業(yè)者。歡迎聯(lián)系我: mengao@tencent.com
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話(huà)
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶(hù)安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)