跳到正文

共識機制:有效性、分叉選擇與最終性

共識機制使副本在明確的故障與網路假設下就相容歷史達成一致。應分別分析決策任務、參與者與權重、有效性規則、提議路徑、分叉選擇、最終性、安全性、活性和實際部署。

更新於

僅供協定分析教育參考。共識標籤本身無法證明已部署網路具備安全性、活性、正確實作、去中心化、最終性、公平排序或資產安全。

直接回答

共識機制是這樣一套協定:在訊息延遲、並行以及模型所涵蓋的故障存在時,使無故障副本對有序日誌或狀態形成彼此相容的決定。在區塊鏈中,完整機制可能包括提議者選擇、區塊和狀態轉換驗證、投票或證明、分叉選擇、提交或最終性、復原及成員規則。它不只是「多台電腦儲存同一個檔案」,也不等同於一個投票門檻、挖礦、質押或激勵計畫。

必須分別說明三項性質。safety(安全性)防止無故障參與者作出不相容決定;liveness(活性)表示在指定條件下,有效工作最終可以繼續推進;validity(有效性)限制可以決定什麼。協定可能在維持安全性的同時停止,也可能依據允許之後重組的假設繼續運作。「共識」一詞本身並未說明哪項保證在何時成立,或用戶端應信任什麼證據。

交易有效性與規範歷史選擇並不相同。完整節點會獨立拒絕違反目前規則的狀態轉換。如果兩筆各自有效的交易花費同一輸入,排序或分叉選擇將決定哪一筆可進入規範歷史;多數資源不能讓兩筆同時有效。同樣,對位元組達成一致也不能證明預言機事實、跨鏈橋聲明、應用程式計算或法律主張為真。

工作量證明和權益證明通常提供抗女巫攻擊、提議影響力或可追責的投票權重,但名稱本身並未定義完整共識協定。Bitcoin 把工作量證明與驗證、累計工作量鏈選擇結合;Ethereum 的 Gasper 結合權益加權證明、LMD-GHOST 分叉選擇與 Casper FFG 檢查點最終性;CometBFT 這類分輪 BFT 協定則使用不同的訊息、門檻、時間假設和最終性。它們的百分比不能互相替換。

分析方法

  1. 明確決定及範圍。 說明副本決定的是單一值、有序交易日誌、每個高度的區塊、檢查點還是應用程式狀態;確定鏈、網路、層、協定版本和可信起點。
  2. 定義參與者與影響力。 區分提議者、投票者、完整驗證節點、輕用戶端和觀察者。記錄身分如何加入與退出,影響力取決於算力、權益、等權成員還是其他權重,以及如何阻止廉價複製身分。
  3. 拆分協定階段。 記錄交易與狀態有效性、提議建構、傳播、投票或證明、分叉選擇、提交、最終性和復原。有效區塊可能在分叉選擇中落敗,規範鏈頭也未必已經最終確定。
  4. 說明系統模型。 定義驗證通道、同步或部分同步、延遲和逾時假設、崩潰與拜占庭故障、矛盾投票、遺漏、自適應腐化、金鑰洩露、網路分割,以及最大故障數量或權重 f
  5. 追蹤一次決定。 從提議到決定追蹤訊息域、高度、輪次、父區塊、鎖、憑證和本機狀態。說明訊息遲到、提議者矛盾提議、輪次逾時或出現兩個有效分支時會發生什麼。
  6. 分別驗證安全性與活性。 使用準確的參與者集合和權重快照推導法定人數交集、鏈成長或其他證明條件;再測試是否仍有足夠的誠實連線與參與來推進,不能從安全門檻推斷活性。
  7. 把證明映射到部署。 檢查用戶端版本、參數變更、成員與權益集中度、金鑰託管、對等節點多樣性、建構者或排序器角色、檢查點、弱主觀性規則、重組處理及應用程式自身的確認政策。

FLP 並不是說已部署的共識不可實現。它說明,在完全非同步的訊息傳遞模型中,即使只有一個崩潰故障,確定性共識協定也存在某個允許的執行無法終止。實際協定透過加入同步或部分同步假設、隨機選擇、故障偵測器、經濟假設或較弱的終止承諾來取得有用保證。這些附加條件必須明確寫出,不能藏在協定標籤後面。

計算範例

1. 有效性不等於規範排序

未花費輸出 U 價值 1 BTC。交易 T_B 把它付給 Bob,交易 T_C 把同一輸出付給 Carol。相對於同一父狀態,兩筆交易都可能具有正確的簽章和格式,但有效歷史不能把 U 消耗兩次。

如果兩個競爭的有效區塊各自包含一筆交易,驗證會在本機保留兩個候選分支,而分叉選擇會選出規範分支。一旦 T_B 進入選定歷史,T_C 就與所得狀態衝突。共識選擇了順序;它沒有把錯誤簽章變成正確簽章,也沒有判斷哪位收款人在道德上有權得到付款。

2. 比較累計工作量,而非節點數量

假設兩個有效的 Bitcoin 式分支在同一任意工作量單位下分別具有累計工作量 W_A=240W_B=235。驗證節點依據累計工作量規則選擇 A,即使它先從更多對等節點聽到 B。對等節點數量不是共識權重。

如果 B 隨後增加 10 個工作量單位而 A 沒有增加,兩者變成 W_B=245W_A=240,節點驗證分支後可能重組至 B。這個簡化算術說明工作量證明確認為何是機率性的:替換更深歷史的成本逐漸提高,而不是到達固定區塊數後在邏輯上不可逆。

3. 加權 BFT 法定人數與活性停頓

設驗證者總權重為 100,一個 CometBFT 式提交要求同一高度、同一輪次中對同一區塊獲得 >2/3 的預提交。整數權重 67 可以通過。任意兩個 67 權重法定人數至少相交 34,因為 67 + 67 - 100 = 34。如果拜占庭權重低於三分之一,交集中就包含誠實權重,而誠實方依協定不能為衝突提交簽章。

同一門檻也揭示活性邊界。如果 34 權重離線,只剩 66,即使線上驗證者全部誠實也無法形成提交。協定可以在停止時維持安全性;治理投票或營運者數量不能替代缺失的共識權重。

4. 分叉選擇與檢查點最終性不同

在簡化的 Ethereum Gasper 軌跡中,設檢查點為 C_0C_1 及其直接子檢查點 C_2。代表活躍有效餘額 67/100 的投票可建立從 C_0C_1 的超多數連結,使 C_1 合理化。之後從 C_1C_2 的合格連結可依據相應 FFG 規則最終確定較早的檢查點。

在檢查點之間,LMD-GHOST 使用驗證者最新證明,從合理化檢查點的可行後代中選擇鏈頭;最終檢查點限制則過濾衝突分支。因此,鏈頭選擇、合理化和最終確定是相關但不同的狀態轉換;「67% 為這個區塊投票」不足以完整描述其中任何一個。

風險與審查失敗

模型與保證

  • 只說「網路達成共識」,卻不定義決定、安全性、活性、有效性和終止條件。
  • 把工作量證明、權益證明、挖礦、質押或一個投票百分比當作完整協定規格。
  • 51%2/3n=3f+1 普遍套用於不同的故障、時間、權重和最終性模型。
  • 混淆崩潰故障、拜占庭行為、金鑰竊取、通道故障、相關軟體故障與治理俘獲。
  • 把 FLP 說成對實用共識的禁令,而不是關於確定性、完全非同步且保證終止的結果。
  • 只數節點或驗證者金鑰,不測量獨立營運者、投票權重、用戶端、雲端和託管關係。
  • 假設規範、safe、合理化、提交和最終確定是可以互換的狀態。
  • 從副本一致推斷外部事實正確、排序公平、隱私、去中心化或資產價值。

協定與實作

  • 接受未綁定鏈、協定版本、高度、輪次、父區塊、承載內容、傳送者和成員時期的區塊或投票。
  • 讓不同實作對狀態轉換、序列化、簽章域、分叉選擇、平手規則或取整產生分歧。
  • 驗證法定人數憑證時不重建其合格權重快照和重複簽署者處理。
  • 跨分叉、網路、輪次、升級或驗證者集合變更重放投票、工作量或憑證。
  • 在逾時、視圖切換或復原時錯誤更新鎖、合理化檢查點或最高憑證。
  • 把本機觀察到的鏈頭或單一 RPC 提供者的標籤當作獨立的網路最終性證據。
  • 只測試正常路徑,不測試延遲、分割、矛盾投票、無效提議、重組和復原。

部署與應用

  • 把算力、權益、用戶端、中繼、建構者、排序器、雲端或簽章基礎設施集中在名義上分離的身分背後。
  • 把逾時或出塊間隔設得短於實際傳播與驗證時間,損害活性或增加分叉。
  • 在達到所需來源鏈和應用程式最終性前記入存款、鑄造跨鏈資產或執行不可逆操作。
  • 假設罰沒、獎勵或代幣價格總能形成充足且可變現的安全預算。
  • 使用社會復原或治理介入,卻不說明誰負責協調、用戶端安裝哪條鏈以及原有哪項保證已改變。

常見誤解

  • 共識與驗證相同。 驗證拒絕違反規則的資料;共識在多個可能各自局部有效的候選中選擇相容決定。
  • 節點越多就一定越安全。 影響力、獨立性、拓撲、軟體多樣性和故障模型比原始程序數量更重要。
  • 51% 攻擊者可以偽造任何人的簽章。 在特定協定下,多數資源可能實施審查或重組,但不會因此洩露私鑰或授權無效花費。
  • 三分之二總是意味著最終性。 具體不等式、訊息、輪次、權重快照、鎖規則和最終性條件均由協定決定。
  • 快速出塊證明共識更強。 較短間隔可能增加傳播競爭和資源壓力;必須結合安全性、活性及最終性假設評估延遲。

相關主題

來源

導覽

搜尋知識庫...