共識演算法 BFT

2021-10-08 13:00:09 字數 1366 閱讀 1371

bft( byzantine fault tolerance)稱為拜占庭容錯。拜占庭容錯技術是一類分布式計算領域的容錯技術。拜占庭假設是對現實世界的模型化,由於硬體錯誤、網路擁塞或中斷以及遭到惡意攻擊等原因,計算機和網路可能出現不可預料的行為。拜占庭容錯技術被設計用來處理這些異常行為,並滿足所要解決的問題的規範要求。

拜占庭容錯技術**於拜占庭將軍問題。 拜占庭將軍問題是leslie lamport(2023年的圖靈講得住)用來為描述分布式系統一致性問題(distributed consensus)在**中抽象出來乙個著名的例子。

拜占庭帝國想要進攻乙個強大的敵人,為此派出了10支軍隊去包圍這個敵人。這個敵人雖不比拜占庭帝國,但也足以抵禦5支常規拜占庭軍隊的同時襲擊。這10支軍隊在分開的包圍狀態下同時攻擊。他們任一支軍隊單獨進攻都毫無勝算,除非有至少6支軍隊(一半以上)同時襲擊才能攻下敵國。他們分散在敵國的四周,依靠通訊兵騎馬相互通訊來協商進攻意向及進攻時間。困擾這些將軍的問題是,他們不確定他們中是否有叛徒,叛徒可能擅自變更進攻意向或者進攻時間。在這種狀態下,拜占庭將軍們才能保證有多於6支軍隊在同一時間一起發起進攻,從而贏取戰鬥?

拜占庭將軍問題中並不去考慮通訊兵是否會被截獲或無法傳達資訊等問題,即訊息傳遞的通道絕無問題。lamport已經證明了在訊息可能丟失的不可靠通道上試圖通過訊息傳遞的方式達到一致性是不可能的。所以,在研究拜占庭將軍問題的時候,已經假定了通道是沒有問題的.

我們將拜占庭將軍問題簡化成了,所有忠誠的將軍都能夠讓別的將軍接收到自己的真實意圖,並最終一致行動;而形式化的要求就是,「一致性」與「正確性」。

一致性:每個忠誠的將軍必須收到相同的命令值vi(vi是第i個將軍的命令)

正確性:如果第i個將軍是忠誠的,那麼他傳送的命令和每個忠誠將軍收到的vi相同。

lamport 對拜占庭將軍的問題的研究表明,當 n > 3m 時,即叛徒的個數 m 小於將軍總數的 n 的 1/3 時,通過口頭同步通訊(假設通訊是可靠的),可以構造同時滿足「一致性」和「正確性」的解決方法,即將軍們可以達成一致的命令。

區塊鏈網路的記賬共識和拜占庭將軍的問題是相似的。參與共識記賬的每乙個節點相當於將軍,節點之間的訊息傳遞相當於信使,某些節點可能由於各種原因而產生錯誤的資訊傳遞給其他節點。通常這些發生故障的節點被稱為拜占庭節點,而正常的節點即為非拜占庭節點

假設分布式系統擁有n臺節點,並假設整個系統拜占庭節點不超過m臺(n ≥ 3m + 1),拜占庭容錯系統需要滿足如下兩個條件:

另外,拜占庭容錯系統需要達成如下兩個指標:

在分析拜占庭問題的時候,假設通道是可信的。拓展開來,在拜占庭容錯系統,普遍採用的假設條件包括:

區塊鏈共識演算法 二 拜占庭容錯演算法 BFT

1.拜占庭將軍問題簡介 拜占庭將軍問題 byzantine generals problem 主要指分布式對等網路節點間的通訊容錯問題。2.bft簡介 bft byzantine fault tolerance 即拜占庭容錯,是分布式計算領域的容錯技術,拜占庭容錯 於拜占庭將軍問題。拜占庭將軍問題是...

共識演算法(POW,POS,DPOS,PBFT)

位元幣在block的生成過程中使用了pow機制,乙個符合要求的block hash由n個前導零構成,零的個數取決於網路的難度值。要得到合理的block hash需要經過大量嘗試計算,計算時間取決於機器的雜湊運算速度。當某個節點提供出乙個合理的block hash值,說明該節點確實經過了大量的嘗試計算...

4 2 共識演算法

共識 consensus 在很多時候會與一致性 consistency 術語放在一起討論。嚴謹地講,兩者的含義並不完全相同。一致性往往指分布式系統中多個副本對外呈現的資料的狀態。如前面提到的順序一致性 線性一致性,描述了多個節點對資料狀 態的維護能力。而共識則描述了分布式系統中多個節點之間,彼此對某...