想知道更多關於區塊鏈技術知識,請百度【鏈客區塊鏈技術問答社區】 鏈客,有問必答!
對於區塊鏈上的共識機制能夠理解成由誰來構造區塊,並維護區塊鏈的統一,提到這問題的時候就必定會提到拜占庭容錯.算法
拜占庭將軍問題:這個典故能夠追溯到當年羅馬帝國戰爭時期,帝國擁有衆多軍隊,每一個軍隊都各自守着本身的地盤,距離也比較遠。那時候的通信不像如今,有微信,扣扣,電話等。他們軍隊的命令傳輸都是經過所謂的信差來傳輸的。戰爭開始前全部的軍隊必須達成一致的共識,看過古裝劇的朋友也都知道,軍隊裏面可能會出現叛徒,或者是有敵人的間諜等,從而致使了軍隊不能同時行動,沒能達成一致。這就是現實中的拜占庭將軍問題。微信
延續但如今,在拜占庭將軍的問題上,人們提出了一個拜占庭容錯,拜占庭容錯是對現實世界的一種模型化假設,在點對點的分佈式網絡系統中,節點因爲硬件設備故障,或者被惡意攻擊等,致使了整個系統出現不可預估的後果。而拜占庭容錯的協議就必須處理這些未知的錯誤。網絡
區塊鏈中的共識機制有一個演變的過程,一開始的時候中本聰大牛並無用BFT ,在比特幣中使用的是被稱做以前文章寫過的:proof-of-work。POW工做量證實和最長鏈機制,比特幣中共識機制的最終體現就是比特幣的最長鏈。隨着區塊鏈技術的發展,它們的工做都是爲了經過共識算法來保證系統的統一性。異步
其實,共識機制在分佈式系統中是無解的,由於衆多節點之間的通訊,必然存在網路的不可靠的緣由,主機的故障,遭到攻擊呀等等。因此是沒法保證明現徹底的共識的。這個結論早在1985年的時候就已經提出了。他們是三位:Fischer,Lynch和Patterson。他們提出了一個FLP不可能的原理:在網絡可靠的前提下,任意節點失效,一個或者多個的最小化異步模型系統中,不可能存在一個解決一致問題的肯定性算法。這三位後來的論文還得到了Dijkstre獎。有興趣的能夠谷歌一下。分佈式