不同的區塊鏈項目,我們需要不同的共識算法來確保區塊鏈上最后的區塊能在任何時候都反映出全網狀態。那區塊鏈主流的共識算法都有哪些呢?它們的優缺點又是什么呢?下面就和大家一起來扒一扒。
工作量證明(POW)
我們先從比特幣和以太坊說起。工作量證明算法需要礦工解決復雜的密碼數學難題。所以這是個依賴於算力的游戲。簡單說,你將區塊中的數據都打包並加密,直到你獲得有效的哈希值。
優勢:尋找有效的哈希值很困難,但是很容易控制哈希是正確的,所以無法欺騙整個系統。系統可以承受大量節點。
缺點:需要消耗非常多的能源,而且不是很環保。如果有人能控制51%的算力,就會有被攻擊的風險。
權益證明(POS)
以太坊正在朝着PoS共識機制改變。下個區塊的礦工會基於隨機參數,例如他們擁有的代幣數量,他們擁有這個代幣的時間等等來確定。同時也有其他機制,例如存款證明或者是燃燒證明等等。其實這個很簡單,如果節點X有1個代幣,節點Y有2個,那么節點Y就會有2倍幾率去驗證一個區塊。
優點:比起工作量證明,更加節約能源。
缺點:更多的安全問題?如果同時在不同的鏈上工作,也不會有懲罰。這樣做,就很難去保證轉賬的真實性。
消逝時間證明(PoET)
消逝時間證明是超級賬本鋸齒湖項目中使用的共識。每個參與者都需要有個等待時間,來確保安全的程序集。獲得最短等待時間的參與者會被選為挖出區塊,經過等待時間,挖出區塊。
優勢:挖出區塊的人會一直變化,同樣的人每次都不會選擇下個區塊。
劣勢:安全程序集是復雜的技術,相對工作量證明來說,更容易進行欺詐。也有中心化的趨勢,因為我們必須使用第三方信任機構來確保這個程序集是真的安全。
簡化的拜占庭容錯算法(SBFT)
在這個算法中,區塊驗證者是一個知名的機構。例如在整個商業網絡中可以是一個監管者。這個區塊驗證者創造並提出新的區塊轉賬。在SBFT共識中,一定數量的節點一定要接受這個區塊,當然這取決於錯誤節點的數量。在這樣的系統中,最少要有2f+1的節點必須要接受商業網絡中的新區塊,f就是錯誤節點的數量。
舉例來說,我們假設現在系統中有30個參與者,其中包含了5個錯誤節點。作為需要驗證的新區塊,11(2×5+1)個節點。
這個錯誤可以是惡意的,也可能是無效的節點。
優點:比工作量證明更快,有更好的擴容性。
缺點:有中心化趨勢。一個驗證者提出下個區塊。
權威證明(PoA)
適合私有鏈網絡,並且不需要分布式信任體系。原理相對簡單:網絡中的一些人在滿足某些條件之后被認證為驗證者,例如身份認證。這些驗證者負責維持區塊鏈數據。
優點:非常適合私有鏈,速度非常快。
缺點:犧牲了信任。