成人av在线资源一区,亚洲av日韩av一区,欧美丰满熟妇乱XXXXX图片,狠狠做五月深爱婷婷伊人,桔子av一区二区三区,四虎国产精品永久在线网址,国产尤物精品人妻在线,中文字幕av一区二区三区欲色
    您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
    此為臨時鏈接,僅用于文章預覽,將在時失效
    金融科技 正文
    發私信給敖萌
    發送

    0

    區塊鏈研習 | 看懂“拜占庭容錯”,也就看懂了區塊鏈的核心技術

    本文作者: 敖萌 編輯:溫曉樺 2017-09-13 14:20
    導語:當企業希望使用區塊鏈技術改進自己的業務或者開展新業務的時候,一定要選擇適合自己業務的區塊鏈技術和共識算法

    雷鋒網AI金融評論按:“區塊鏈研習”是雷鋒網推出的區塊鏈技術研習系列,本系列將收羅學界與業界大咖技術研究與應用實踐中的真知灼見,以饗讀者。本文作者為中國信息通信研究院(工信部電信研究院)專家敖萌博士,雷鋒網獨家特約文章,雷鋒網與信通院聯合首發。未來,敖萌博士原創的區塊鏈系列文章還將繼續刊出,雷鋒網與信通院相關平臺同步更新,敬請關注!

    區塊鏈研習 | 看懂“拜占庭容錯”,也就看懂了區塊鏈的核心技術

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

    “拜占庭將軍問題”模型中,對于將軍們(節點)有兩個默認的假設: 

    • 所有忠誠的將軍收到相同的命令后,執行這條命令得到的結果一定是相同的;

    • 如果命令是正確的,那么所有忠誠的將軍必須執行這條命令。

    假設1的含義是:所有節點對命令的解析和執行是一樣的,這個命令必須是一個確定性的命令,不能存在隨機性,也不能依賴節點自身的狀態。(這個命令不能是心情好就攻擊敵人,心情不好就原地休息。)

    假設2的含義是:忠誠的將軍需要判斷接收到的命令是不是正確的。這個判斷命令的方法是整個拜占庭容錯技術的核心。

    對于將軍們的通信過程,在“拜占庭將軍問題”中也是有默認假設的:點對點通信是沒問題的。也就是說,在這里,我們假設A將軍要給B將軍一條命令X,那么派出去的傳令兵一定會準確的把命令X傳遞給B將軍。

    有了上述假設,我們來看看將軍們面臨的核心問題是什么。

    我們考慮4個將軍的情況,同時假設4個將軍中最多只有1個背叛者。當4個將軍A、B、C、D把敵人包圍了之后,必須協商一個統一的時間去發起進攻。這時,A將軍派出了3個傳令兵,分別告訴B、C、D將軍,下午1點準時發起進攻。到了下午1點,A、C、D三個將軍發起了進攻,殲滅了敵人,同時他們三個發現B是背叛的。雖然B背叛了,但是對最終任務沒有影響。

     區塊鏈研習 | 看懂“拜占庭容錯”,也就看懂了區塊鏈的核心技術

    但如果A是背叛的,會發生什么情況?A派出3個傳令兵,分別告訴B、C、D將軍在下午1點、2點、3點發起進攻。于是,到了下午1點,B將軍去攻擊敵人,由于寡不敵眾,全軍覆沒;2點,C將軍全軍覆沒;3點,D將軍全軍覆沒。

    因為對于忠誠的將軍來說,他不知道誰是背叛者,所以,他不能完全相信接收到的命令,他必須對命令做出判斷。在1999年,著名的PBFT算法出現了。這個算法說起來也不難理解,他的核心思想是:對于每一個收到命令的將軍,都要去詢問其他人,他們收到的命令是什么。

    區塊鏈研習 | 看懂“拜占庭容錯”,也就看懂了區塊鏈的核心技術 

    回到剛才的第二種情況(A是背叛者),A派出3個傳令兵,分別告訴B、C、D將軍在下午1點、2點、3點發起進攻。B將軍派出傳令兵去告訴C和D兩位將軍,B收到的命令是下午1點進攻。C也同樣派出了傳令兵分別告訴B和D兩位將軍,C收到的命令是下午2點進攻。D也同樣告訴B和C兩位將軍,D收到的命令是下午3點進攻。于是,B得到了3條指令:A命令B下午1點進攻,A命令C下午2點進攻,A命令D下午3點進攻。B很容易判斷出來,A是背叛者(因為B知道最多只有一個背叛者)。C和D也能做出同樣的判斷。因此這次進攻時間的協商是無效的。

     區塊鏈研習 | 看懂“拜占庭容錯”,也就看懂了區塊鏈的核心技術

    采用了這種辦法以后,另一種情況又會怎樣?當B是背叛者,A將軍派出了3個傳令兵,分別告訴B、C、D將軍,下午1點準時發起進攻。B告訴C說B收到的命令是下午2點,B告訴D說收到的命令是下午2點,C和D分別告訴另外2個將軍,A告訴他們的命令是下午1點。

     區塊鏈研習 | 看懂“拜占庭容錯”,也就看懂了區塊鏈的核心技術區塊鏈研習 | 看懂“拜占庭容錯”,也就看懂了區塊鏈的核心技術

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

    如果A是忠誠的,那么B是背叛的,這種情況下對于A來說,他知道自己是忠誠的,他發出的命令,至少有2個將軍會執行,所以下午1點,A、C、D三個將軍一起去進攻,有3個將軍一起發起攻擊,敵人被殲滅了。如果B是忠誠的,那么B會收到兩個1點一個2點,B也會執行收到多的命令,于是B、C、D三個將軍一起去進攻,有3個將軍一起發起攻擊,敵人被殲滅了。不管怎樣,按照這種方式執行,結果是沒問題的。

     區塊鏈研習 | 看懂“拜占庭容錯”,也就看懂了區塊鏈的核心技術

    采用PBFT方法,本質上就是利用通信次數換取信用。每個命令的執行都需要節點間兩兩交互去核驗消息,通信代價是非常高的。通常采用PBFT算法,節點間的通信復雜度是節點數的平方級的。

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

    在PBFT的基礎上,又出現了很多變種算法,這些算法往往都帶有一些額外的假設。例如:認為發起請求的客戶端一定是忠誠的,由客戶端去驗證節點是否忠誠;認為絕大部分時候將軍都是忠誠的,所以降低兩兩交互核驗消息的次數;通過對節點進行分工,來提高整個系統的處理速度;等。這些變種算法由于增加了額外的假設,導致了整個系統的去中心化程度的降低(關于區塊鏈系統去中心化程度的理解,可以參見本系列的第6篇文章)。

    但是,對于不同類型的應用場景,有些假設是合理的,有些假設則是不合理的。例如,在類似比特幣的代幣轉賬系統中,不能認為客戶端是忠誠的,因為客戶端很可能會發起雙花交易。因此,當企業希望使用區塊鏈技術改進自己的業務或者開展新業務的時候,一定要選擇適合自己業務的區塊鏈技術和系統。

    區塊鏈研習 | 看懂“拜占庭容錯”,也就看懂了區塊鏈的核心技術

    雷峰網特約稿件,未經授權禁止轉載。詳情見轉載須知

    分享:
    相關文章

    知情人士

    工作在鵝廠的一名區塊鏈從業者。歡迎聯系我: mengao@tencent.com
    當月熱門文章
    最新文章
    請填寫申請人資料
    姓名
    電話
    郵箱
    微信號
    作品鏈接
    個人簡介
    為了您的賬戶安全,請驗證郵箱
    您的郵箱還未驗證,完成可獲20積分喲!
    請驗證您的郵箱
    立即驗證
    完善賬號信息
    您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
    立即設置 以后再說