共識機制(Consensus Mechanism)

出自非小号百科

分布式計算和多智能體系統的一個基本問題是在存在大量故障進程的情況下實現整體系統可靠性。這通常需要協調進程以達成共識,或就計算過程中需要的數據值達成一致。共識的示例應用包括就以何種順序提交哪些事務到資料庫達成一致、狀態機複製和原子廣播。需要共識的現實世界應用包括雲計算、時鐘同步、PageRank、意見形成、智能電網、狀態估計、無人機控制(以及一般來說多個機器人/智能體)、負載平衡、區塊鏈等。

起源[編輯 | 編輯原始碼]

共識這個詞是拉丁語,意思是「一致,和睦」,源自拉丁語 consentire,意思是「共同感受」。名詞共識可以表示普遍接受的意見——「普遍同意或一致;和諧」、「多數意見」——或共識決策過程的結果。本文指的是過程和結果(例如「通過共識決定」和「達成共識」)。

由於加密貨幣多數採用去中心化的區塊鏈設計,節點是各處分散且平行的,所以必須設計一套制度,來維護系統的運作順序與公平性,統一區塊鏈的版本,並獎勵提供資源維護區塊鏈的使用者,以及懲罰惡意的危害者。這樣的制度,必須依賴某種方式來證明,是由誰取得了一個區塊鏈的打包權(或稱記帳權),並且可以獲取打包這一個區塊的獎勵;又或者是誰意圖進行危害,就會獲得一定的懲罰,這就是共識機制。

共識協議[編輯 | 編輯原始碼]

Leslie Lamport提出的Paxos共識算法及其變體如Raft,廣泛應用於分布式和雲計算系統。這些算法通常是同步的,依賴於選出的領導者來推動進度,並且只能容忍崩潰故障,不能容忍拜占庭故障。

Garay和Berman提出的Phase King算法是一個能夠容忍拜占庭故障的多項式時間二元共識協議的例子。該算法在同步消息傳遞模型中解決共識問題,有n個進程和最多f個故障,前提是n > 4f。在Phase King算法中,有f+1個階段,每個階段有2輪。每個進程跟蹤其首選輸出(最初等於進程自己的輸入值)。在每個階段的第一輪,每個進程將自己的首選值廣播給所有其他進程。然後,它接收來自所有進程的值,並確定哪個值是多數值及其計數。在階段的第二輪,其ID與當前階段號匹配的進程被指定為該階段的國王。國王廣播它在第一輪觀察到的多數值,並作為決勝票。然後,每個進程更新其首選值,如下所示。如果進程在第一輪觀察到的多數值的計數大於n/2 + f,則進程將其偏好更改為該多數值;否則,它使用階段國王的值。在f+1個階段結束時,進程輸出其首選值。

Google實現了一個名為Chubby的分布式鎖服務庫。Chubby將鎖信息保存在小的文件中,這些文件存儲在複製資料庫中,以實現高可用性,以應對故障。該資料庫是在基於Paxos共識算法的容錯日誌層之上實現的。在這種方案中,Chubby客戶端與Paxos主伺服器通信以訪問/更新複製日誌;即讀寫文件。

許多點對點在線實時策略遊戲使用修改後的鎖步協議作為共識協議,以管理遊戲中的玩家之間的遊戲狀態。每個遊戲動作都會產生一個遊戲狀態增量,該增量廣播給遊戲中的所有其他玩家,以及總遊戲狀態的哈希值。每個玩家通過將增量應用於自己的遊戲狀態並比較遊戲狀態哈希來驗證更改。如果哈希不匹配,則投出投票,遊戲狀態處於少數的玩家會被斷開連接並從遊戲中移除(稱為不同步)。

另一種著名的方法稱為MSR型算法,已廣泛應用於從計算機科學到控制理論的各個領域。

無需許可的共識協議[編輯 | 編輯原始碼]

比特幣使用工作量證明(Proof-of-Work,PoW)機制,通過難度調整函數和重組函數來實現其開放式點對點網絡中的無許可共識。為了擴展比特幣的區塊鏈或分布式帳本,礦工試圖解決一個密碼學難題,其中找到解決方案的概率與每秒哈希計算量成正比。第一個解決此類難題的節點將他們提出的下一個交易塊版本添加到帳本中,並最終被所有其他節點接受。由於網絡中的任何節點都可以嘗試解決工作量證明問題,因此原則上 Sybil 攻擊是不可行的,除非攻擊者擁有超過網絡 50% 的計算資源。

其他加密貨幣(如以太坊、NEO、STRATIS 等)使用權益證明(Proof-of-Stake,PoS)機制,節點根據其質押的加密貨幣數量來競爭添加區塊和獲得獎勵。PoS 的一個優勢是比 PoW 系統消耗的能源更少。例如,比特幣挖礦(2018 年)估計消耗的不可再生能源與整個捷克共和國或約旦國家相當,而以太坊(最大的 PoS 網絡)的總能耗僅略低於 205 個美國家庭的平均能耗[1]

一些加密貨幣,如瑞波幣,使用驗證節點系統來驗證帳本。瑞波幣使用的這種系統稱為瑞波協議共識算法(RPCA),分輪工作:

  1. 每個伺服器編譯一份有效的候選交易列表;
  2. 每個伺服器合併來自其唯一節點列表(UNL)的所有候選者並對其真實性進行投票;
  3. 通過最低閾值的交易進入下一輪;
  4. 最終輪需要 80% 的同意。

無許可共識協議中使用的其他參與規則,如權威證明(Proof-of-Authority,PoA)、空間證明(Proof-of-Space)、燒毀證明(Proof-of-Burn)或時間證明(Proof-of-Elapsed-Time),旨在設置進入壁壘並抵制 Sybil 攻擊。

與上述無許可參與規則(獎勵參與者與其對某種行動或資源的投資金額成比例)相反,人格證明(Proof-of-Personhood)協議旨在為每個真實的人類參與者提供恰好一個單位的投票權,而不管其經濟投資如何。實現人格證明的每人一票共識權分配的提議方法包括物理化名聚會、社交網絡、匿名政府頒發的身份和生物識別[2]

類型對比
特性 PoW PoS DPoS PoA
能耗
去中心化程度 較低
安全性 極高 較高 較高 較低
交易速度 極慢 很快 極快
複雜性
代表項目 比特幣、萊特幣 以太坊 2.0、Cardano EOS、TRON VeChain、Ripple

常見的共識機制[編輯 | 編輯原始碼]

  • 工作量證明(Proof-of-Work,PoW),典型案例:比特幣
  • 權益證明(Proof-of-Stake,PoS,又譯持有量證明),典型案例:以太坊
  • 股份授權證明(Delegated-Proof-of-Stake,DPoS),典型案例:EOS
  • 容量證明(Proof-of-space,PoSpace,又稱 Proof-of-Capacity,PoC),典型案例:Filecoin
  • Paxos算法
  • Raft
  • PBFT
  • LibraBFT(Byzantine fault-tolerance):Libra上使用。

參考連結[編輯 | 編輯原始碼]