共識機制:區塊鏈網絡中節點就某件事情達成一致的方式。
PoW機制:
工作量證明機制:系統中節點通過計算一個問題(比如符合條件的hash值),並給出符合要求的答案。最先得出結果的節點就可以獲得記賬權以及適當的獎勵,bictoin、LTC等貨幣型區塊鏈就應用POW機制。一般發佈代幣可以採用此機制。
PoS機制:
股權證明機制:2012 年時 Sunny King 提出 。系統通過計算每個節點持有加密貨幣的數量和時間,來決定誰擁有記賬權,並賦予相應的利息。
DPoS機制:
代理權益證明機制:是Pos的改進,也是一種基於投票的公式機制。與Pos不同的是,記賬節點是通過其他節點投票選出的。一旦選出的節點不能完成任務,則其他節點會選出另外的節點替代它。EOS、LBTC、TRON等採用此機制。
POI機制:
重要性證明機制:使用賬戶重要性評分來分配記賬權的概率。
POP機制:
參與度證明機制:結合了DPOS與POI的思想。
PBFT機制:
實用拜占庭機制:來源於拜占庭將軍問題。以狀態機運作,包括節點狀態,消息狀態, 由主節點帶領大家統一步調處理消息,而消息能否繼續遷移到下一個狀態,則通過多少節點達成一致來決定。Fabric採用PBFT算法。
過程:
pre-prepare : 主節點參與把request分配一個唯一的編號 request-number n, 並把request跟n一起組成pre-prepare消息廣播給所有成員(backup節點)
prepare : 所有成員(backup節點),收到pre-prepare消息, 依靠簽名字段檢查消息是否來源於主節點,確認無誤,將request編號和本節點簽名組成prepare消息,廣播給其他所有成員,表示自己認可這請求編號和準備好了。
Commit :所有節點,若收到的prepare消息,依靠簽名檢查是否正確,若prepare消息數量超過全部節點數量的3分之二, 則認爲系統達成一致認可該請求和請求編號,對所有節點廣播commit消息,表示該節點可以進行request的業務。
Reply : 所有節點, 若收到commit消息,依靠簽名檢查消息是否正確,若commit的消息數量超過所有節點的3分之一,則完成request要求的業務,並構建reply消息,直接回復給client。Client根據是否收到超過3分之1個節點的正確回覆,判斷系統是否完成了請求request。
參考:http://www.luyixian.cn/news_show_258898.aspx
https://blog.csdn.net/zhj_fly/article/details/80302922
注意:只能用於私有鏈或者聯盟鏈,需要對節點的加入進行權限控制;不能用於公有鏈,因爲公有鏈中所有節點都可以隨意加入退出,無法抵擋女巫攻擊(sybil attack)。
DBFT機制:
授權拜占庭容錯:這種機制是用權益來選出記賬人,然後記賬人之間通過拜占庭容錯算法達成共識,是一種通過代理投票來實現大規模節點參與共識的拜占庭容錯共識機制,最大限度地確保系統的最終性,使區塊鏈能夠適用於真正的金融應用場景。NEO採用此機制。
相對於PBFT,DBFT主要做了以下改進:
1)將C/S架構的請求響應模式,改進爲適合P2P網絡的對等節點模式;
2)將靜態的共識參與節點改進爲可動態進入、退出的動態共識參與節點;
3)爲共識參與節點的產生設計了一套基於持有權益比例的投票機制,通過投票決定共識參與節點(記賬節點);
4)在區塊鏈中引入數字證書,解決了投票中對記賬節點真實身份的認證問題。
參考:https://zhidao.baidu.com/question/923891766954547699.html
Paxos機制:
1990年Leslie Lamport在論文《The Part-time Parliament》中提出Paxos共識算法,在工程角度實現了一種最大保障分佈式系統一致性的機制。Paxos算法被廣泛應用在Chubby、ZooKeeper中。
問題是指分佈式的系統中存在故障(crash fault),但不存在惡意(corrupt)節點的場景(即可能消息丟失/重複,但無錯誤消息)下的共識達成問題。
參考:https://www.cnblogs.com/dennyzhangdd/p/6781688.html
Pool 驗證池:
基於傳統的成熟的分佈式一致性技術(Pasox、Raft),加上數據驗證機制。不需要加密貨幣也可以工作,實現秒級共識驗證。但是其去中心化程度相對較低,更適合多方參與的多中心商業模式。