共識機制(Consensus)是區塊鏈技術的核心組成部分,用於確保去中心化網絡中的所有節點(參與的電腦)對區塊鏈上的數據(如交易記錄)達成一致,維護帳本的可信性和一致性。
定義
共識機制是一套規則和算法,允許分佈式網絡中的節點在沒有中央權威的情況下,就區塊鏈的狀態(如交易的有效性、新區塊的添加)達成共識。它解決了去中心化系統中的信任問題,防止數據篡改或「雙花」(Double Spending)等攻擊。
換句話說,共識機制就是用來讓這些分散節點在「沒有中心權威」情況下,彼此達成對某件事情的一致認知的演算法/協議。就是「讓大家對發生了什麼事情達成共識的方法」。
核心功能
- 數據一致性:確保所有節點擁有相同的區塊鏈副本。
- 防攻擊:防雙花問題,並使惡意篡改數據的成本極高或不可行。
- 去中心化信任:無需依賴中介,參與者通過規則達成共識。
- 容錯性:能夠應對部分節點的故障或惡意行為(如拜占庭容錯)。
一致性問題(Consistency Problem)
這是分佈式系統的關鍵問題,當多個節點同時參與處理資料或決策時,如何保證每個節點對系統的狀態擁有一致的看法,這就需要透過共識機制解決
情境 銀行轉帳:
- 你從 A 銀行帳戶轉了 1000 元給 B。系統有 10 台伺服器處理轉帳。
- 假如有 5 台伺服器認為「轉帳成功」,另外 5 台認為「沒有這筆交易」。
- 結果:B 可能會看到「已經收錢」或「沒收到錢」,A 也可能扣了錢但B沒收到。
拜占庭容錯(Byzantine Fault Tolerance, BFT)
拜占庭容錯源自拜占庭將軍問題(Byzantine Generals Problem),這是一個理論模型,描述在分佈式系統中如何應對不可靠或惡意節點的挑戰:
- 場景:一群將軍圍攻一座城市,必須一致決定「進攻」或「撤退」。他們通過信使交換信息,但其中可能有叛徒(惡意節點)傳遞錯誤或矛盾的信息。
- 問題:如何讓忠誠的將軍達成一致的行動計劃,儘管存在叛徒或通信故障?
- 分佈式系統中的對應:節點(電腦)需要對共享數據(如區塊鏈的交易記錄)達成一致,即使某些節點可能故障(崩潰)或惡意(偽造數據)。
例子
- 有多個「售票處」可以賣同一條火車線路的車票。
- 為了避免超售(同一座位賣給兩個人),每個售票處賣票時,都需要知道別的售票處的銷售情況。
- 但是,這些售票處是去中心化的,並沒有一個中央伺服器來即時同步所有座位資訊。
共識機制的目標
- 一致性:確保所有售票處看到的座位狀態相同(類似區塊鏈帳本的一致性)。
- 防攻擊:防止同一個座位被多個售票處同時分配(類似防止區塊鏈中的雙花問題)。
- 去中心化:在分佈式票務系統中,無需完全依賴中央伺服器,類似區塊鏈的去中心化設計。
- 容錯性:即使某些售票處(節點)出現故障或延遲,系統仍能正確運行。
共識機制主要方法,即通過某種規則決定誰有權生成新區塊並添加到區塊鏈,常見的規則有以下
PoW(工作量證明,Proof of Work)
- 定義:PoW是一種共識算法,要求節點(通常稱為礦工)通過解決複雜的數學問題(計算雜湊)來證明其工作量,從而獲得生成新區塊並驗證交易的權利。
- 運作原理:
- 礦工競爭解決一個數學難題,通常是找到一個符合特定條件的雜湊值(Hash),需要大量計算資源。
- 問題的難度會動態調整,確保區塊生成速度穩定(如比特幣約每10分鐘一個區塊)。
- 率先解決問題的礦工可將新區塊添加到區塊鏈,並獲得獎勵(如比特幣)。
- 特點:
- 高安全性:篡改需要控制全網51%以上的算力,成本極高。
- 高能耗:需要大量計算資源,消耗大量電力。
- 去中心化:任何擁有算力的人都可參與,無需許可。
- 例子:比特幣、早期以太坊(2.0前)。
- 優點:
- 安全性高,經過多年驗證。
- 抗攻擊能力強,特別是對「雙花攻擊」。
- 缺點:
- 能耗極高,對環境影響大。
- 交易處理速度較慢。
- 算力集中可能導致中心化風險(如大型礦池)。
PoS(權益證明,Proof of Stake)
- 定義:PoS是一種共識算法,節點(稱為驗證者)根據其持有和「抵押」(Stake)的加密貨幣數量及時間,獲得驗證交易和生成區塊的權利。
- 運作原理:
- 參與者將一定數量的代幣鎖定(抵押)在網絡中,作為「權益」。
- 系統根據抵押的代幣數量、持有時間或其他因素,隨機或按規則選擇驗證者來創建新區塊。
- 驗證者因參與共識獲得獎勵,無需大量計算。
- 特點:
- 低能耗:無需大量計算,節能環保。
- 經濟激勵:持有更多代幣的驗證者有更高機率被選中,但需承擔代幣鎖定風險。
- 懲罰機制:惡意行為(如驗證錯誤數據)可能導致抵押代幣被沒收(Slashing)。
- 例子:以太坊2.0、Cardano、Tezos。
- 優點:
- 能耗低,環境友好。
- 交易速度較快,適合高吞吐量應用。
- 鼓勵長期持有,增強網絡穩定性。
- 缺點:
- 可能導致「富者愈富」,代幣集中者更易獲得權利。
- 安全性相對PoW尚未經長期大規模驗證。
- 需要設計複雜的懲罰機制防止惡意行為。
PoW vs PoS 比較
特性 | PoW(工作量證明) | PoS(權益證明) |
---|---|---|
共識依據 | 計算能力 | 代幣持有量和抵押 |
能耗 | 高 | 低 |
安全性 | 高度驗證,抗攻擊強 | 較高,但需設計防範攻擊 |
參與門檻 | 需要專業硬體(如礦機) | 需要持有代幣 |
速度 | 較慢 | 較快 |
例子 | 比特幣、以太坊(早期) | 以太坊2.0、Cardano |
補充:其他規則:
委託權益證明(Delegated Proof of Stake, DPoS)
- 原理:代幣持有者投票選出少數代表(委託人)來驗證交易和生成區塊。
- 特點:高效、快速,但去中心化程度較低。
- 例子:EOS、Tron。
- 優點:交易速度快,適合商業應用。
- 缺點:依賴少數代表,可能導致中心化。
實用拜占庭容錯(Practical Byzantine Fault Tolerance, PBFT)
- 原理:節點通過多輪投票達成共識,能容忍一定比例的惡意節點(通常小於1/3)。
- 特點:高效,適合聯盟鏈,但需要已知節點身份。
- 例子:Hyperledger Fabric。
- 優點:低能耗,快速確認。
- 缺點:不適合完全開放的公有鏈。