區塊鏈共識機制算法可以用一句話概括:就是在一個時間段內對事物的前后順序達成共識的一種算法。它大致可以分為7種,包括POW(工作量證明),POS(權益證明),DPOS(股份授權證明),BFT(拜占庭容錯),Paxos(一致性),pool驗證池,投注共識等算法。這些核心區塊鏈共識機制算法具體是什么,會不會衍生出小的算法,下面做進一步說明。
區塊鏈共識機制算法一:POW(工作量證明)
工作量證明系統(或者說協議、函數),是一種應對拒絕服務攻擊和其他服務濫用的經濟對策。它要求發起者進行一定量的運算,也就意味著需要消耗計算機一定的時間。
原理:工作量證明系統主要特征是客戶端需要做一定難度的工作得出一個結果,驗證方卻很容易通過結果來檢查出客戶端是不是做了相應的工作。工作對于請求方是適中的,對于驗證方則是易于驗證的。它與驗證碼不同,驗證碼的設計出發點是易于被人類解決而不易被計算機解決。
簡單理解就是一份證明,用來確認你做過一定量的工作。監測工作的整個過程通常是極為低效的,而通過對工作的結果進行認證來證明完成了相應的工作量,則是一種非常高效的方式。比如現實生活中的畢業證、駕駛證等等,也是通過檢驗結果的方式所取得的證明。
區塊鏈共識機制算法二:POS(權益證明)
在POS算法中,節點記賬權的獲得難度與節點持有的權益成反比,相對于PoW,一定程度減少了數學運算帶來的資源消耗,性能也得到了相應的提升,但依然是基于哈希運算競爭獲取記賬權的方式,可監管性弱。它是Pow的一種升級共識機制。拿挖礦來說,根據每個節點所占代幣的比例和時間,等比例的降低挖礦難度,從而加快找隨機數的速度。
區塊鏈共識機制算法三:DPOS(股份授權證明)
DPoS的工作原理:去中心化表示每個股東按其持股比例擁有影響力,51%股東投票的結果將是不可逆且有約束力的。其挑戰是通過及時而高效的方法達到51%批準。為達到這個目標,每個股東可以將其投票權授予一名代表。獲票數最多的前100位代表按既定時間表輪流產生區塊。每名代表分配到一個時間段來生產區塊。所有的代表將收到等同于一個平均水平的區塊所含交易費的10%作為報酬。如果一個平均水平的區塊含有100股作為交易費,一名代表將獲得1股作為報酬。
DPOS與POS原理相同,只是選了一些“人大代表”。與PoS的主要區別在于節點選舉若干代理人,由代理人驗證和記賬。其合規監管、性能、資源消耗和容錯性與PoS相似。類似于董事會投票,持幣者投出一定數量的節點,代理他們進行驗證和記賬。
區塊鏈共識機制算法四:BFT(拜占庭容錯)
1.DBFT(授權拜占庭容錯)
據悉,小蟻公司就是采用的dBFT機制。這種機制是由權益來選出記賬人,然后記賬人之間通過拜占庭容錯算法來達成共識。此算法在PBFT基礎上進行了以下改進:將C/S架構的請求響應模式,改進為適合P2P網絡的對等節點模式;將靜態的共識參與節點改進為可動態進入、退出的動態共識參與節點;為共識參與節點的產生設計了一套基于持有權益比例的投票機制,通過投票決定共識參與節點(記賬節點);在區塊鏈中引入數字證書,解決了投票中對記賬節點真實身份的認證問題。
2.PBFT(實用拜占庭容錯)
在分布式計算上,不同的計算機透過訊息交換,嘗試達成共識;但有時候,系統上協調計算機或成員計算機可能因系統錯誤并交換錯的訊息,導致影響最終的系統一致性。拜占庭將軍問題就根據錯誤計算機的數量,尋找可能的解決辦法,在保證活性和安全性的前提下提供了(n-1)/3的容錯性。這無法找到一個絕對的答案,但只可以用來驗證一個機制的有效程度。而拜占庭問題的可能解決方法為:在 N ≥ 3F + 1 的情況下一致性是可能解決。其中,N為計算機總數,F為有問題計算機總數。信息在計算機間互相交換后,各計算機列出所有得到的信息,以大多數的結果作為解決辦法。
區塊鏈共識機制算法五:Paxos(一致性算法)
Paxos算法解決的問題是一個分布式系統如何就某個值(決議)達成一致。一個典型的場景是,在一個分布式數據庫系統中,如果各節點的初始狀態一致,每個節點都執行相同的操作序列,那么他們最后能得到一個一致的狀態。為保證每個節點執行相同的命令序列,需要在每一條指令上執行一個“一致性算法”以保證每個節點看到的指令一致。一個通用的一致性算法可以應用在許多場景中,是分布式計算中的重要問題。 節點通信存在兩種模型:共享內存和消息傳遞。Paxos算法就是一種基于消息傳遞模型的一致性算法。
區塊鏈共識機制算法六:Pool(聯營)驗證池
Pool驗證池算法是基于傳統的分布式一致性技術以及數據驗證機制,Pool驗證池是目前行業內大范圍使用的共識機制。它有優點也有缺點,優點是不需要代幣也可以工作,在成熟的分布式Paxos的基礎上,實現秒級共識驗證。缺點是去中心化程度不如比特幣,更適合多方參與的多中心商業模式。
區塊鏈共識機制算法七:投注共識
投注共識算法是以太坊下一代的共識機制“鬼馬小精靈”引入的一個全新概念,可以說屬于PoS。“鬼馬小精靈”的共識是按區塊達成的,而不像PoS那樣按鏈達成。為了防止驗證人在不同的世界中提供不同的投注,我們還有一個簡單嚴格的條款:如果你兩次的投注序號一樣,或者說你提交了一個無法讓“鬼馬小精靈”依照合約處理的投注,你將失去所有保證金。從這一點我們可以看出,“鬼馬小精靈”與傳統的PoS不同的是,“鬼馬小精靈”有懲罰機制,這樣非法節點通過惡意攻擊網絡不僅得不到交易費,而且還面臨著保證金被沒收的風險。