區(qū)塊鏈就是運行在P2P網(wǎng)絡上的去中心化賬本。在公有鏈區(qū)塊鏈項目例如比特幣,成千上萬的用戶在使用這個區(qū)塊鏈。我們怎么去在這樣的系統(tǒng)中獲得信任呢,并且在私有區(qū)塊鏈中也是一樣的情況。這就是共識機制的來源。共識保證了區(qū)塊鏈上的參與者可以互相信任,并且對下個區(qū)塊進行驗證。共識也確保了網(wǎng)絡中的規(guī)則被遵守,同時承認在區(qū)塊鏈環(huán)境下只有一個真理。
根據(jù)你使用的區(qū)塊鏈種類不同,你需要不同的共識算法來確保區(qū)塊鏈上最后的區(qū)塊能夠在任何時候都反應出全網(wǎng)的狀態(tài)。在本文中,我們會大致說明不同的共識算法。
工作量證明(POW)
我們先從比特幣和以太坊說起。工作量證明算法需要礦工解決復雜的密碼數(shù)學難題。所以這是個依賴于算力的游戲。簡單說,你將區(qū)塊中的數(shù)據(jù)都打包并加密,直到你獲得有效的哈希值。
優(yōu)勢:尋找有效的哈希值很困難,但是很容易控制哈希是正確的,所以無法欺騙整個系統(tǒng)。系統(tǒng)可以承受大量節(jié)點。
缺點:需要消耗非常多的能源,而且不是很環(huán)保。如果有人能控制51%的算力,就會有被攻擊的風險。
權益證明(POS)
以太坊正在朝著PoS共識機制改變。下個區(qū)塊的礦工會基于隨機參數(shù),例如他們擁有的代幣數(shù)量,他們擁有這個代幣的時間等等來確定。同時也有其他機制,例如存款證明或者是燃燒證明等等。其實這個很簡單,如果節(jié)點X有1個代幣,節(jié)點Y有2個,那么節(jié)點Y就會有2倍幾率去驗證一個區(qū)塊。
優(yōu)點:比起工作量證明,更加節(jié)約能源。
缺點:更多的安全問題?如果同時在不同的鏈上工作,也不會有懲罰。這樣做,就很難去保證轉賬的真實性。
消逝時間證明(PoET)
消逝時間證明是超級賬本鋸齒湖項目中使用的共識。每個參與者都需要有個等待時間,來確保安全的程序集。獲得最短等待時間的參與者會被選為挖出區(qū)塊,經(jīng)過等待時間,挖出區(qū)塊。
優(yōu)勢:挖出區(qū)塊的人會一直變化,同樣的人每次都不會選擇下個區(qū)塊。
劣勢:安全程序集是復雜的技術,相對工作量證明來說,更容易進行欺詐。也有中心化的趨勢,因為我們必須使用第三方信任機構來確保這個程序集是真的安全。
簡化的拜占庭容錯算法(SBFT)
在這個算法中,區(qū)塊驗證者是一個知名的機構。例如在整個商業(yè)網(wǎng)絡中可以是一個監(jiān)管者。這個區(qū)塊驗證者創(chuàng)造并提出新的區(qū)塊轉賬。在SBFT共識中,一定數(shù)量的節(jié)點一定要接受這個區(qū)塊,當然這取決于錯誤節(jié)點的數(shù)量。在這樣的系統(tǒng)中,最少要有2f+1的節(jié)點必須要接受商業(yè)網(wǎng)絡中的新區(qū)塊,f就是錯誤節(jié)點的數(shù)量。
舉例來說,我們假設現(xiàn)在系統(tǒng)中有30個參與者,其中包含了5個錯誤節(jié)點。作為需要驗證的新區(qū)塊,11(2×5+1)個節(jié)點。
這個錯誤可以是惡意的,也可能是無效的節(jié)點。
優(yōu)點:比工作量證明更快,有更好的擴容性。
缺點:有中心化趨勢。一個驗證者提出下個區(qū)塊。
權威證明(PoA)
適合私有鏈網(wǎng)絡,并且不需要分布式信任體系。原理相對簡單:網(wǎng)絡中的一些人在滿足某些條件之后被認證為驗證者,例如身份認證。這些驗證者負責維持區(qū)塊鏈數(shù)據(jù)。
優(yōu)點:非常適合私有鏈,速度非???。
缺點:犧牲了信任。
結論
我們對區(qū)塊鏈世界的共識機制做出了概覽,這篇文章只是列舉了一部分可能性,當然還有其他可能的共識機制??傮w來說,我們可以將這些共識分為3類:
- 標準的工作量共識
- 基于共識的許可性投票(PoA,SBFT)
- 基于共識的許可性投注(PoET)
到底選擇哪個共識來進行區(qū)塊鏈的實施取決于哪類網(wǎng)絡和數(shù)據(jù)。
投注類型的可能更加適合月大型網(wǎng)絡。投票類型的可能更適合小型網(wǎng)絡,同時將延時降到最小化。