導語

共識算法是一種允許用戶或機器在分佈式環境中協調關係的機制。它需要確保系統中的所有代理對單一事實來源能夠最終達成一致意見(即使某些代理持反對意見)。換而言之,系統必須具有良好的容錯性(另請參閱《拜占庭容錯詳解》)。

在中心化的環境當中,單個實體的控制權凌駕於整個系統。多數情況下,由於沒有創建條例詳盡的治理系統,無法使衆多管理員達成共識,導致這些實體往往可以隨意更改系統。 

但如果是在去中心化的環境之中,則全然是另一番景象了。假設我們正在使用分佈式數據庫,如何針對該添加哪些條目達成一致呢?

此環境中充斥着互不信任的陌客,如何克服這種挑戰也許正是解決發展問題的關鍵所在,能夠爲區塊鏈鋪平道路。本文中,我們將瞭解共識算法對於運行加密貨幣和分佈式賬本的重要性。


共識算法和加密貨幣

在加密貨幣環境下,用戶的餘額均記錄在區塊鏈這個數據庫中。每名用戶(更準確地說,每個節點)都維護着同一份數據庫副本,這一點至關重要。如若不然,最終會導致信息衝突問題,從而破壞加密貨幣網絡的全盤宗旨。

公鑰密碼學能夠確保用戶無法使用其他用戶的代幣。但是必須存在可供網絡參與者信任的單一事實來源,才能瞭解資金是否已經用掉。

比特幣創造者中本聰提出了工作量證明系統,以此來協調參與者。我們稍後將詳細介紹工作量證明的工作原理。現在,先來了解一下現有各種共識算法的共同特徵。

首先,我們需要想添加區塊的用戶(亦稱爲驗證者)質押權益。驗證者必須質押具有某種價值的權益,這是爲了防止他們使詐。一旦作弊,他們將失去自己質押的權益。比如失去算力和加密貨幣,甚至還有可能名譽掃地。 

那他們爲什麼要賭上自己的資源冒險?因爲這個過程中還存在獎勵機制。獎勵通常是協議的原生加密貨幣。獎勵也可能是其他用戶支付的手續費、新生成的加密貨幣單位,或者同時包括這兩者。

最後,我們還需要確保透明度。我們需要具備及時發現作弊的能力。理論上,生產區塊會消耗大量成本,但驗證其真實性的成本卻相當低。通過這種機制,普通用戶可輕鬆約束驗證者。


共識算法類型

工作量證明(PoW)

工作量證明 (PoW) 被視爲區塊鏈共識算法的教父。該機制首次應用於比特幣領域,不過實際概念早已存在。在工作量證明中,驗證者(稱爲礦工)會對想要添加的數據進行哈希計算,直到產生特定的解決方案。

哈希是指通過哈希函數運行數據所創建的一串看似隨機的字符串,由字母和數字組成。重複運行同一個數據總是會得出相同的輸出。但是,哪怕更改了一個小細節,產生的哈希值就會截然不同。

僅憑輸出根本無法推斷出函數中輸入了什麼信息。因此,這種方法能有效地證明您在某個特定時間點之前便已知曉某一段數據。您完全可以事先將哈希值告訴別人,而且之後等您透露該數據時,此人只要運行該函數即可查驗輸出是否相同。

在工作量證明中,協議規定了使區塊具有效力的條件。例如,它可能會規定只有得出以 00 開頭的哈希值纔是有效區塊。礦工要想創建符合該組合的區塊,唯一的途徑便是蠻力破解輸入。他們會調整數據參數,測遍每一種猜測,得出不同的結果,直到獲得正確的哈希值。 

對於主區塊鏈,門檻往往相當高。爲了與其他礦工競爭,您需要準備大量的特殊哈希硬件(專用集成電路),爲生產有效區塊創造條件。

在挖礦過程中,您質押的權益包括購買機器的成本以及運行機器所需的電力。專用集成電路 (ASIC) 專爲加密貨幣挖礦而生,對於其他應用毫無用處。您回收初始投資的唯一途徑便是挖礦,如成功添加新塊至區塊鏈上,便能獲得相當可觀的回報。

網絡可輕鬆驗證您所創建區塊的真僞。您也許需要嘗試數萬億種組合才能得出正確的哈希值,但驗證數據卻只需執行一次哈希函數計算。如果您的數據產生了有效的哈希值,那麼網絡會接受該值,您也可因此獲得獎勵。否則,網絡會拒絕該值,您所花費的時間和電力都將付諸東流。


權益證明(PoS)

在比特幣推行早期,權益證明 (PoS) 被視爲工作量證明的替代方案。在權益證明系統中,不存在礦工、專用硬件或大量能源消耗這些概念。您只需準備一臺普通計算機即可。

不過,也不盡然。您還需要下一點兒本錢。在權益證明機制中,雖然無需消耗外部資源(如電力或硬件),但必須提供內部資源,即加密貨幣。每個協議的規則都有所不同,但一般都會設置最低出資量,您必須達到標準纔有資格進行權益質押。

完成此操作後,您錢包中的資金將被鎖定(進行權益質押時無法移動資金)。通常來說,您需要與其他驗證者就哪些交易將進入下一個區塊達成一致。從某種意義來看,這相當於您在對即將選中的區塊進行押寶,而協議只會選擇其中一個區塊。

如果協議選中了您的區塊,那麼您將獲得與所質押權益量呈正比的交易手續費。您鎖定的資金越多,代表收益越可觀。假如您企圖作弊,從而提出無效的交易,那麼您將失去部分(或全部)質押的權益。因此,我們運行着一個類似於權益證明的機制,在這個機制內,誠實守信比作弊使詐能夠獲得更多收益。

一般來說,驗證者的獎勵不會以新造代幣的形式發放。因此,區塊鏈的原生貨幣必須以其他方式發行。可以採用初始發行(即 ICO 或 IEO)的方式,也可以採用先通過工作量證明啓動協議,然後再過渡至權益證明的方式。

目前爲止,純權益證明僅部署在規模較小的加密貨幣中。因此,尚不明確它能否作爲工作量證明的可行替代方案。雖然理論上行得通,但實踐起來完全不是那麼回事。 

一旦權益證明機制在具有大量價值的網絡上推行,整個系統就會變成一個充斥着博弈論和經濟激勵的競技場。只要有利可圖,那些技術高超的黑客就會“入侵”權益證明系統。因此,唯一確定是否可行的途徑,只有將其運用於在線網絡之中。

很快,權益證明會進行大規模測試,而以太坊網絡也即將實施一系列升級措施(統稱爲以太坊 2.0),其中包括執行 Casper。


其他共識算法

工作量證明和權益證明是當前討論熱度最高的共識算法。但除此之外還有許多其他算法,而且各有利弊。詳情請閱讀以下文章:

  • 《延遲工作量證明詳解》

  • 《租賃權益證明共識詳解》

  • 《權威證明詳解》

  • 《銷燬證明詳解》

  • 《委託權益證明詳解》

  • 《混合工作量證明/權益證明共識詳解》


總結

達成共識的機制對分佈式系統的運作至關重要。許多人認爲,比特幣最大的創新便是使用了工作量證明,通過這種機制,用戶往往能夠就一組共享事實達成一致。

如今,共識算法儼然成爲了數字貨幣系統和區塊鏈的基礎,它能夠允許開發者在分佈式網絡上運行代碼。共識算法在區塊鏈技術中佔據着奠基石的地位,對現有各種網絡的長期生存能力具有至關重要的作用。

在所有的共識算法中,工作量證明佔據着主導地位。如今尚未有人提議出更可靠更安全的替代解決方案。話雖如此,專業人員仍在研發大量產品來替代工作量證明,未來幾年,我們有望見證更多的替代解決方案出現。