bCamp 是一個未來區塊鏈技術合夥人“發現、發掘、成長、成功”的平臺。這裏有最真、最新的區塊鏈技術活動和資訊分享,這裏有業內頂級技術大咖的技術點撥,這裏有最閃亮的技術思想火花碰撞,這裏有技術投資人的伯樂之眼。

共識算法的比較:Casper vs Tendermint

共識算法的比較:Casper vs Tendermint

1

權益證明的漫漫長路

1982 年,拜占庭將軍問題首次被 Lamport,Shostak 和 Pease 提出。Cosmos 的 Ethan Buchman 這樣描述它:”這是一個在可妥協的通信網絡中實現分佈式協議的問題,也就是在不可靠的環境中建立一個可靠的系統的問題“。從 1982 年到 1999 年,都沒有人能夠創造一個可以解決拜占庭將軍問題系統。長久以來,拜占庭將軍問題與計算都是無關的,因爲在那個時候,互聯網演進出基於雲的中央中心化計算模式,所需要解決的只是容錯問題。

所以,故障容錯算法得到普及,例如 1998 年發明的 Paxos 算法和 2013 年發明的 Raft 算法被廣泛的應用。而 1999 年發明的實用拜占庭容錯(PBFT)卻沒有被學術界之外採用。直到 2008 年,中本聰將網絡規模級別的分佈式拜占庭容錯 (BFT) 算法設計到區塊鏈方案中,才使拜占庭容錯得到推廣。當這種原型出現之後,系統研究界的人都開始圍繞將學術界“奇物”應用到真實世界而去構思各種想法。

在 2011 年,BitcoinTalk 論壇對一個叫做權益證明 (PoS) 的概念組織了一場討論。最初的 PoS 協議例如點點幣,實現結果的並不理想。第一個真正提出將 BFT 研究應用到 PoS 公有區塊鏈環境中是 Jae Kwon,他在 2014 年創造了 Tendermint。

在當時,PoS 研究做出了很大的假設:假設系統中的一系列對等節點都是靜態的,並且在長時間內都是穩定的。在區塊鏈環境中完全是不現實的。 Jae Kwon 的重大突破是使 Tendermint 能夠使用區塊,哈希鏈接,動態驗證器集合和循環的領導者選舉來將 BFT 研究適應複製狀態機(區塊鏈)的領域。

在 Tendermint 環境中,出現了大量的共識算法(Honeybadger, Ouroboros, Tezos, Casper),它們都包含了 BTF 研究的元素以及在區塊鏈上其他模塊觀察的元素。

爲權益證明做的所有研究都指向一個重要問題:在不耗盡物質稀缺資源的情況下,我們可以達到工作量證明(PoW)的安全級別嗎?這個問題可以轉化爲:PoS 的投票權以鏈上貨幣計價而不是計算力計價。區塊鏈的 POS 共識問題比可擴展性更被廣泛討論,運行 PoW 挖礦的高開銷成本以及環境外部性方面存在的問題都刺激了大量資源湧入 PoS 安全研究。

本文主要探討了在加密貨幣中使用了權益證明的三個主要 PoS 協議的特性:由 Vlad Zamfir 帶領研究的 Casper the Friendly Ghost(CTFG) 和由 Vitalik Buterin 帶領研究 Casper the Friendly Finality Gadget(CFFG) 以及 Jae Kwon 帶領研究的 Tendermint。

2

權益證明的陷阱

無利害關係

起初,有多種不同的說法來描述權益證明的一般陷阱,無利害關係就在這時被提出。Jae Kwon 2014 年 5 月以“錯誤選擇謬論”的不幸名字第一次提到這個問題。在 2014 年 7 月 Vitalik 把比特幣開發者所描述的確切定義的問題普及推廣爲“無利害關係”。問題呈現出此情況:驗證者通過在給定高度爲多個有衝突的區塊投票可以有效的破壞安全性而不用付出任何代價。

簡單的 PoS 實現對於這些攻擊而言是非常脆弱的。災難性的是,因爲沒有任何的激勵來鼓勵大家永遠集中在一個獨一的鏈上,並且每次激勵都要同時在相互衝突的鏈條上進行重複簽名,所以爲了獲得更多的區塊獎勵,在經濟上最優的策略就變成了儘可能的在多個分杈上進行投票。下面這張圖就展示了:

共識算法的比較:Casper vs Tendermint在簡單的 PoS 設計中競爭鏈上的期待投票數高於單一鏈上期待的投票數

在工作量證明中,對於在多個鏈上進行挖礦的礦工“懲罰”是他們必須分開他們的計算力(非常稀缺的資源)。在現代非簡併的 PoS 設計中,這種成本必須嵌入到協議裏面以此模仿物理 PoW 挖礦的限制。

Vitalik Buterin 在 2014 年 1 月引入的“slasher”概念或協議內懲罰可以減輕這個攻擊。Jae Kwon 在同一年進一步推算了此方法,這是實現 Tendermint 共識協議的第一個迭代進展。苛刻以及允許這種懲罰的條件,對於所有的非簡併 BFT 協議都是有幫助的,甚至在本文中出現的三種共識都採用了。

3

遠程攻擊

遠程攻擊來源於用戶不得不撤回保證金的權利。這就產生了一個基本問題,因爲這意味着攻擊者可以從任意長度的距離建立一個分杈而不用擔心被削減。一旦保證金被解除綁定,激勵不從某個高度區塊前進行長距離投票就被取消了。換句話說,當超過 2/3 的驗證者解除了綁定,那麼他們就可以惡意的創造包含之前驗證者集的第二條鏈,這可能導致任意的交易。

對於權益證明協議這是相當致命的,因爲安全模型必然是“主觀”的。當參與網絡要求大量的社會信息,那麼這個安全模型就會被稱爲是“主觀的”。一個新節點加入網絡之後,對於當前網絡的狀態可能會得出不同的結論,因爲他們的決策是基於主觀信息的,即社會聲譽。在相反面,工作量證明的安全模型必然是“客觀的”,因爲當前網絡狀態總是工作量最多的那個狀態,新節點對於網絡狀態的結論總是相同的,因爲他們的決策是基於客觀信息。

PoS 的遠程攻擊在弱主觀性模型下進行了糾正,這要求接入到網絡中的後續新節點:

  • 當前必須是被綁定的。只相信當前有保證金的驗證節點。

  • 解除綁定保證金必須要經過一個”解凍”期。解除綁定之後,代幣需要數週到數月的“解凍”時間,用以實現“同步性”前提(即延遲的消息)。

  • 禁止在 N 個塊之前恢復,其中 N 是保證金的長度。 這個規則使任何長程分杈無效。

  • 可選擇的將驗證者集存放在 PoW 的鏈上

共識算法的比較:Casper vs Tendermint

Casper (s)和 Tendermint 採用一種簡單的鎖定機制(“Tendermint”中俗稱“凍結”)來鎖定股權一段時間(幾周到幾個月後“解凍”),以防止任何惡意聯合驗證者 違反安全。在 CFFG 算法中,一個分杈選擇規則永遠只能修改最終塊之後的塊阻止了遠程攻擊。通過使用時間戳,在 CFFG 中的長距離分叉試圖修改比最終塊還要更早的塊的時候會被協議直接忽略掉。

4

卡特爾形式

第三,最後的障礙是面臨任意價值的任何經濟形式都將面對一個真正的寡頭壟斷問題,就算本土加密貨幣也不例外。

“加密貨幣令人難以置信的集中,挖礦算力也是一樣。寡頭壟斷競爭是很多現實市場的常態。少數相對富有的驗證者之間的協調比多數相對貧窮驗證者之間的協調要容易的多。在我們這種情況下,卡特爾形式是完全被預料到的。”

——Vlad Zamfir,Casper 的歷史第 4 章節

Tendermint 依靠額外協議管理方法來與寡頭壟斷驗證者進行對抗。雖然在審查制度方面沒有任何協議措施,但依靠帶外社會信息解決卡特爾形成,其中的基本原理是:用戶最終將不可避免地注意到卡特爾的形成,社會上也會對此到處八卦,然後放棄或者投票重新組織受到攻擊的區塊鏈。

到目前爲止,Vlad 的 Casper 協議是唯一一個明確使用共識內審查激勵來打擊卡特爾形式一種模式。

5

概述

有很多不同的方式來實現權益證明的算法,但是權益證明設計的兩個主要原理是基於鏈的 PoS 和基於拜占庭容錯 (BFT) 的 PoS。Tendermint 是基於拜占庭容錯的 PoS 設計,CTFG 是基於鏈的 PoS 設計,而 CFFG 則混合了兩者。

計算機科學中的 CAP 理論返回在分佈式數據系統中提供超過 2/3 擔保的不可能性:可用性、一致性、分區容錯。基於鏈的 PoS 算法傾向於選擇可用性高的而不選擇一致性高的,因爲可用性高意味着所有的交易都能被處理,不過要以犧牲整個網絡中一致性狀態複製爲代價。基於 BFT 的卻相反,會傾向於選擇高一致性。

6

基於 BTF 的權益證明

拜占庭容錯共識算法源於 30 多年的豐富研究。Tendermint (2014)是 Castro 和 Liskov 在 1999 年引入的實用拜占庭容錯 (PBFT) 算法的第一個 PoS 的改編版。基於 BFT 的 PoS 協議僞隨機的安排一個驗證者在多輪投票的過程中提出一個區塊。但是,提交和最終化區塊取決於大多數——所有驗證者中 2/3 的驗證者在提交的區塊中籤名。在區塊最終化之前可能需要進行幾輪 (譯者注:這種多輪投票和現實世界的波爾卡舞蹈類似, 這也是 polkadot 名字的由來) 簽名。BFT 系統只能容錯 1/3 的失敗,其中失敗包括故障或是惡意的攻擊。

7

Tendermint 核心

Tendermint 主要包含兩個主要的技術:區塊鏈共識引擎和通用的應用接口。共識引擎被稱爲 Tendermint 核心模塊,確保相同的交易在每個機器中都按照相同的順序被記錄下來。應用接口被稱爲應用區塊鏈接口 (ABCI),讓交易可以被任何編程語言編寫的程序處理。

在覈心模塊中,Tendermint 基於循環投票機制進行工作,這也是共識協議的原理。一個回合被分成 3 個處理步驟:驗證者提出一個塊、發送提交意圖、簽名後提交一個新區塊。這種機制爲原子廣播提供了一個安全的狀態複製機,增加了一個責任層——安全故障可以完全歸結於 Tendermint。

Tendermint 共識算法從驗證者集開始。驗證者們都維護了一份區塊鏈的全拷貝,並且可以用公鑰來識別驗證者的身份。在每個新的塊高度他們輪流的提出一個區塊。每輪投票都只有一個驗證者可以提出塊,並且要用驗證者相應的私鑰對此進行簽名,這樣的話如果有錯誤發生就可以找到爲此負責的驗證者。然後剩下的驗證者就需要對每個提議都進行投票,投票都需要用自己的私鑰進行簽名。這些組成一個回合。不過可能因爲網絡的異步需要好幾個回合才能提交一個新塊。

共識算法的比較:Casper vs Tendermint

驗證者提交塊的時候由於幾種原因可能會失敗:當前的提議可能下線了,或者網絡可能遇到了延遲。Tendermint 允許驗證者可以被跳過(就是輪到一個驗證者出塊的時候但是此驗證者沒出塊)。驗證者在移到下一輪投票之前等待一小段時間來接收提議者(此輪出塊的驗證者)提出的整個區塊。這種對超時的依賴讓 Tendermint 成爲一個弱同步協議,而不是一個異步協議。不過,剩下的協議是異步的,並且驗證者只有在接收到了超過 2/3 的驗證者集消息時纔會進行處理事物。正是因爲這樣,所以 Tendermint 需要大多數的驗證者可以 100% 正常運行,如果 1/3 或更多的驗證者離線或脫機,網路就會停止運行了。

假設少於 1/3 的驗證者是拜占庭,Tendermint 保證安全永遠不會被破壞——也就是,驗證者(2/3 以上)永遠不會在同一個高度提交衝突的區塊。因此,基於 Temdermint 的區塊鏈永遠不會分叉。

目前爲止,Tendermint 的設計決策確實是把安全性和不可改變性地位放在了靈活性之上。在現實世界上有相當高的可能性是,系統真的會停止運行,參與者將會需要在協議外組織在某種軟件上更新後重啓系統。

在數字加密貨幣社區中只有少數人理解 Casper 以及爲什麼它很有價值的時候,Tendermint 就爲 Casper 研究奠定了基礎。這個洞察力就是:如果一個鏈的本身是高度容錯的,那麼你就可以依賴鏈來對於誰來生產區塊做出一個好的決定,但是如果鏈的本身就是不可靠的,那麼你就陷入了雞和雞蛋的問題中去了,這也是之前所有其他共識算法的滅頂之災。

這個設計決策被認爲不如可用性優先的協議例如以太坊和比特幣。比特幣中的權衡是:如果它的網絡被分裂了,比特幣在各種攻擊的情況下就失去了它的安全保證。這其實就是一個不可修改理論,也就是你的置信區間是 100% 的時候,那麼你跟隨的就是一條正確的鏈,你會使用這條鏈來選擇誰來生產下個區塊,但是一旦你轉移到一條不安全的鏈上之後,並沒有一條明確的路徑讓你回到正確的鏈上。

8

Tendermint 的明確屬性

  • 可證明的活躍性

  • 安全閾值:1/3 的驗證者

  • 公有 / 私有鏈相容

  • 即時的最終確定性:1-3 秒,取決於驗證者數量

  • 一致性優先

  • 在弱同步性網絡的共識安全

9

基於鏈的權益證明

基於鏈的權益證明模仿了工作量證明共識算法,在此權益證明中協議讓僞隨機選擇出來的驗證者產生一個新塊,新塊是哈希連接(包含上個塊的哈希值)到前一個最長鏈的父區塊上。基於鏈的 PoS 非常依賴同步的網絡,通常優先考慮可用性而非一致性。Casper(s) 對於傾向於活躍性而非安全性環境而言,它就是 Tendermint 核心思想的一個改編。

10

CFFG

CTFG 是一個明確的 PoS 構造,但是 CFFG 是一個覆蓋在已存在的以太坊 PoW 提議機制上的 PoS——融合了 PoW 和 PoS 兩者,由 Vitalik Buterin 帶領實現。

比特幣和以太坊的 PoW 共識協議都不會做“最終”決定,並且區塊可能會潛在的被重新組織到一些過去區塊高度。當區塊沒有機會再被修改的時候才能稱爲“最終確定”的。因爲工作量證明沒有提供這樣的修改保證,所以它被認爲是共識不安全的。相反,當我們持續加長鏈的時候區塊的最終確定性概率也越來越高。爲了爲以太坊區塊鏈增加想要的最終確定性和 51% 的攻擊阻力,CFFG 實現的邏輯就完美的提供了這種效果。

CFFG 將通過多個步驟推出,以保守的方式將以太坊的 PoW 安全模式逐漸過渡到 PoS 安全模式。Casper 的第一個迭代將會是實現這裏討論的混合 PoW/PoS 協議,Casper 的最後一個迭代很有可能吸取 CFFG 和 CTFG 的教訓,朝着一個完整的 PoS 協議發展。

CFFG 是基於鏈的 PoS 和基於 BFT 的 PoS 的之間的混合體,因爲它吸取了兩者的思想。它的模塊化覆蓋設計讓現在的 PoW 鏈的更新變得更加容易,因爲它對於將系統升級到完全不同的共識模式而言是一種更保守的方法。

Casper 的應用邏輯存在於智能合約的內部。要想在 Casper 中成爲驗證者,必須要有 ETH 並且要將 ETH 存儲到 Casper 智能合約中作爲槓桿的權益。在 Casper 第一次迭代中區塊提議的機制會被保留:它依然使用 Nakamoto PoW 共識,礦工可以創建區塊。不過爲了最終化區塊,Casper 的 PoS 覆蓋掌握控制權,並且擁有自己的驗證者在 PoW 礦工之後進行投票。

Casper 的 PoS 共識最重要的一個部分就是檢查點 (checkpoints)。Casper 在 50 區塊增量的時候評估最終確定性就稱之爲檢查點,每 50 個塊片段就稱之爲週期 (epoch)。通過驗證者在每個週期發送投票消息時觸發這個處理過程。

在一個週期前最終化檢查點需要 2 個週期才能完成,也就是需要兩輪投票。例如,當超過 2/3 的驗證者(也就是大多數)給一個檢查點 c 投票了,那麼就說這個檢查點已經被”審判”了。下一個週期,當大多數人給檢查點 c 投票了,會發生兩件事情:c 變成了被審判的並且 c 已經最終化了。c 這個週期也就代表着最後一個最終化的週期 (LFE)。

回顧一下,一個區塊最終化需要兩個條件:

  • 大多數 (超過 2/3) 驗證者在週期 1 的時候給區塊 1 進行了投票,因此審判了區塊 1

  • 大多數 (超過 2/3) 驗證者在週期 2 的時候給區塊 2 進行了投票,區塊 2 是區塊 1 的子區塊,因此在週期 2 的時候最終化了區塊 1

在理想執行中,一個區塊的最終化是按照下面的步驟的:

區塊 1 的 2/3 投票→審判區塊 1→2/3 投票區塊 2→最終化區塊 1

其中區塊 2 是區塊 1 的子區塊

共識算法的比較:Casper vs Tendermint

當一個檢查點被最終化之後驗證者就會得到報酬。不過,如果有兩個最終化的檢查點在相同高度上分杈時,那麼就破壞了安全性,這個時候就達到了消減的條件,最少 1/3 的保證金將會被消減掉。當安全性被破壞的時候可以將錯誤歸因的證據當作交易廣播給 PoW 的礦工。然後 PoW 就將這個證據交易組成一個區塊來進行挖礦,提交了這個證據的驗證者會得到查找者的費用。當此事發生的時候,簽署了在衝突區塊的有罪驗證者將會在兩條鏈上被消減掉。

現在如果一個礦工進行蠻力攻擊,那麼會發生什麼?現在 Casper 的最終化區塊鏈可以防止 PoW 的攻擊者,就算是 51% 或者更多的計算力重寫最新檢查點之外的歷史也會被阻止。因此,Casper 協議提供了安全。不像 CTFG,因爲 CFFG 就是不同提議機制上的一層覆蓋,Casper 不能確保活躍性,因爲活躍性是取決於提議機制的。

驗證者是被激勵着集合在權威鏈上的,因爲如果他們持續在不同的鏈上進行投票將會受到懲罰。slasher 2.0 的形成讓驗證者不僅僅會爲雙重投票而受罰也要爲在不正確的鏈上進行投票而受到懲罰。不過這也造成了一個“泄氣”的窘境,因爲驗證者擔心如果出現一個分杈而自己不確定到底哪個纔是權威的,然後投錯票之後被消減所以選擇退出投票。

11

CFFG 的明確屬性

  • 最終化:超過 20 分鐘最終化。每隔 50 塊(一個週期)就最終化一次區塊,防止 PoW 挖礦暴利攻擊

  • 共識安全性

  • 可證明的活躍性

  • 優先可用性

12

CTFG

CTFG 是 Vlad Zamfir 的正確構造 (CBC) 共識協議專用於對抗寡頭壟斷的真實世界的環境。CTFG 是工作量證明中 GHOS 或 GHOST 協議的 PoS 改編版,用於其分杈選擇規則。CTFG 背後的指導設計原則是基於加密經濟學的,使用旨在實現評估安全的正規方法。與前面詳細說明的 CFFG 混合協議不同,CTFG 是純粹的權益證明的概念。

“Casper 剛剛開始的時候只是簡單的‘友好的幽靈’,它對於 PoS 而言是 GHOST 的改編,完善的激勵讓卡特爾‘友善地’變成‘非卡特爾’的驗證者。”

——Vlad Zamfir,Casper 的歷史第 5 章

與工作量證明類似,CTFG 會爲一致性和可用性進行權衡。特別,在區塊沒有被最終化的時候,隨着在鏈中的深度越深的它們就會越安全。CTFG 與 CFFG 有一點相似,鏈頭部的處理總是比區塊最終化的處理要快很多。

Casper 的 PoS 提議機制與 Tendermint 提議機制最大的區別是相比較僞隨機選擇領導者,前者的驗證者可以基於自己見到的塊提出塊。

Casper 提供的一個獨特功能是參數化安全閾值。與比特幣中使用 6 個確認來確定一個經濟最終狀態類似,CTFG 中的“評估安全”提供了一個驗證者可以有一個與其他驗證者不同的安全閾值功能。Casper 的設計目標是在網絡維持 PoS 低開銷的時候能夠允許驗證者選擇自己的容錯閾值。

Casper 對 Tendermint 的核心優勢在於網絡隨時可以容納一定數量的驗證者。因爲 Tendermint 中的區塊在創建的時候需要最終化,所以區塊的確認時間應該短一點。爲了達到短區塊時間,Tendermint PoS 能夠容納的驗證者數量就需要有個限制。由於 CTFG 和 CFFG 到在區塊創建的時候都不需要安全性,所以以太坊網絡相對於 cosmos 容納 100 個驗證者來說,可以容納驗證者的數量會更加的多一點。

13

CTFG 的明確屬性

  • 可用性。Casper 的節點在它們達成共識之前可以塊分杈。

  • 異步安全性。

  • 生存。Casper 的決策可以在部分同步中存活,但是不能在異步中存活。

  • 卡特爾阻力。Casper 的整個前提是建立在抵制寡頭壟斷攻擊者基礎之上,因此不會有任何勾結的驗證者可以超越協議。

  • 安全性。取決於每個驗證者的評估安全閾值。

14

未來的工作

公鏈在產品上運行是一個比較新生的技術。在這個範例中到目前爲止顯示出不會腐敗的唯一安全模型就是工作量證明。權益證明的設計空間還非常的大,而且工程學上權衡的理解也遠遠不夠,因爲權益證明是一個研究前沿也沒有足夠的數據。不用多說,要達到一個最佳的 PoS 共識算法,我們還有很多未來工作需要完成。

Tendermint 的一個改進可能是新的提出機制,或者將 Tendermint 的多輪投票過程壓縮成一輪投票。

第二個未來工作的領域可能是利用更高級的加密技術讓區塊頭的簽名更小一點。因爲我們是通過 Cosmos 來建立一個“區塊鏈的互聯網”,所以將輕客戶端證明從一條鏈上移到另一條鏈上就是我們的核心工作。從這個觀點來看的話,使用更加高級的密碼學將區塊頭的大小減少三十倍或者更多是非常有利的。目前,100 驗證者,Tendermint 的區塊頭接近 4KB,它們都是驗證者的簽名。我們可以使用高級的加密技術讓 100 個簽名從 3.2KB 減少到 64 字節。

還有一些優化 p2p 層的方法,這樣我們就可以顯著減少點對點需要最終化塊的流量。在未來的工作中,不僅僅是壓縮區塊頭中的數據量,還會減少發送到對端的數據量。這樣的話,在 Cosmos 網絡初始 100 個驗證者的閾值之上,Tendermint 還可以增加更大的驗證者集。

共識算法的比較:Casper vs Tendermint

內容來源:搜狐財經

作者:中鈔研究院

原文鏈接:

http://www.sohu.com/a/205487939_498774

共識算法的比較:Casper vs Tendermint

_
_

以下是我們的知識星球,歡迎有興趣的小夥伴加入我們,共同成長 !

_
_

共識算法的比較:Casper vs Tendermint