1. 程式人生 > >共識演算法比較:Tendermint的BFT與EOS的dPoS

共識演算法比較:Tendermint的BFT與EOS的dPoS

這項技術深入研究由Chjango Unchained編寫。本文比較了不同的共識系統,它們為EOS和Tendermint提供了關於每種基礎技術以及它們有什麼樣的獨特地類似證明(PoS)能力。

在由單個組織執行的傳統分散式系統中,信任和安全由防火牆,資訊保安團隊和硬體安全來提供,以確保惡意行為者不會破壞分散式資料庫的一致性。

區塊鏈系統需要一種不同的架構,其中信任機制在許多組織之間分配,但我們必須容忍系統中的對抗角色。區塊鏈系統的設計是安全模型,博弈論,電腦科學和機構聲譽之間的權衡。

比特幣的Nakamoto共識放棄了傳統的分散式系統對傳統拜占庭容錯(BFT)設計中終結性的保證,以換取開放式的准入安全模型。這需要成本。如果惡意行為者可以控制50.1%的hashpower,系統根本不提供任何保證。在25%時,遊戲理論機制中由於自私的挖掘而開始不穩定,並且概率收斂變得不穩定。這些攻擊中的每一個都從根本上改變了輕客戶端證明所需的假設,這些假設使得區塊鏈方法在網際網路上能夠擴散。

Cosmos和EOS是進一步權衡的研究。Cosmos依靠對正式拜占庭容錯的嚴格保證,以建立對模稜兩可的強有力的懲罰,並建立一系列保證,擴充套件到整個區塊鏈的網際網路。EOS在很大程度上依賴於機構聲譽,以達到中本共識與電腦科學研究表明的可能共識之間的形式共識。讓我們仔細來看看。

Tendermint

Tendermint開源專案誕生於2014年,旨在解決比特幣的工作證明共識演算法的速度,可擴充套件性和環境問題。通過使用和改進1988年在麻省理工學院開發的經過驗證的BFT演算法,Tendermint團隊是第一個在概念上展示股權證明加密貨幣的公司,它解決了第一代股權證明加密貨幣所遭受的無關緊要問題。比如NXT和BitShares1.0。

Tendermint Core是一種拜占庭容錯(BFT)共識引擎,可以抵禦雙重攻擊,並且能夠容忍網路中一組高達1/3的拜占庭角色。Tendermint應用程式區塊連結口(ABCI)平臺是一個適用於區塊鏈應用程式開發人員的工具包。該工具包與任何程式語言相容,允許對僅執行業務邏輯的去中心化應用程式進行更高級別的開發,而無需在共識層上進行更低級別的修補。Ethermint等平臺建立在Tendermint ABCI平臺之上。

另一個建立在Tendermint ABCI之上的專案是Cosmos Network,它被設計為“區塊鏈網際網路”。Cosmos設想了一個可互操作的多鏈網路,它提供了在獨立區塊鏈(稱為區域)之間無信任地交換加密資產的方法,通過稱為Cosmos Hub的主集線器鏈。為了使區塊鏈開發人員儘可能輕鬆,Cosmos還附帶了一個名為Cosmos-SDK的工具包,使開發人員可以使用即插即用模組輕鬆建立自定義區塊鏈。

EOS

EOS將自身作為一種用於為消費者構建的企業分散式應用解決方案的作業系統。

與以太坊一樣,EOS是一個支援智慧合約的託管平臺,適用於開源專案和麵向消費者的去中心化應用程式。與以太坊相比,EOS承諾通過權衡分權來實現更好,更具可擴充套件性的系統。其共識系統稱為Delegated-of-Stake,或dPoS,是一個聯盟區塊鏈,由一組稱為排名代表的主節點驗證。與作為分散式全球超級計算機的以太坊虛擬機器不同,EOS承諾構建“去中心化作業系統”。

主要特點一覽

作為同步機制的區塊鏈必須解決缺乏現時的通用問題。因此,Tendermint像所有容錯系統一樣,假定部分節點同步網路。這是與EOS的重要區別,EOS僅在完全同步的機器中具有容錯性。EOS和Tendermint都執行在委託證明的個人變體上。但是,每個協議都以非常不同的方式定義委託“delegate”。

EOS dPoS(democracy-as-proof-of-stake 委託股權證明)

EOS將“delegators委託人”定義為區塊鏈民主選舉的區塊驗證者;該術語與“block validators塊驗證器”可互換使用。有一小組21個“delegates”充當網路中的主節點。代表的“job”是在擴充套件鏈條之外簽署和驗證交易。這些代表被EOS代幣的利益相關者投票選為“office”。Daniel Larimer選擇在EOS中任命21名代表的原因是因為任何更多都不利於利益相關者的關注,從而導致選民做出糟糕的決定。

“你需要2/3多數才能擁有真實性的制度。最初BitShares從100開始。對這100人的監督不夠,因為沒有足夠的選民注意力來決定。將其降低到21可以降低系統成本。網路必須向每個執行完整節點的人付費。“ - Daniel Larimer

Vitalik Buterin將EOS描述為一個聯盟鏈,它刪除了“Merkle證據和任何其他保護措施,允許普通使用者審計系統執行的任何部分,除非他們想親自執行一個完整的節點。”這是不切實際的,因為依靠使用者來執行完整節點以便能夠審計拜占庭(或簡稱疏忽)委託人而沒有像Merkle證明這樣的內建客戶端驗證機制使協調問題難以解決。

沒有所述內建機制,就必須嚴重依賴額外協議手段,甚至成為共識問題。EOS dPoS依賴於其利益相關者外在地準確評估委託人的表現,以(有希望)做出關於僱用和解僱其代表的合理決定(畢竟這是一個民主)。此外,像Cosmos中的重要協議更改是通過治理實現的。

EOS使用代幣投票實現權力發放,利益相關者擁有的EOS代幣越多,其投票權就越大。EOS代幣還可以用作staking vehicles,代替企業和企業執行其去中心化應用程式(dApps)的交易費用。這種替代費用結構在可用性方面存在其他問題,但背景超出了本文的範圍。

最後不可逆塊(LIB)

根據Daniel Larimer在他的Steemit上的說法,LIB“是一個已被2/3或更多當選區塊生產者確認的區塊。沒有節點會自動切換到不在LIB之上的fork。“

在理論上可能會使用此LIB細節來破壞網路中止的活躍性的邊緣情況。

Cosmos共識

Cosmos還使用“delegated委託”的Proof-of-Stake共識機制。但是,術語“delegated”在Cosmos的上下文中使用的方式不同。與EOS不同,“validator”負責驗證交易並將新塊提交給區塊鏈。驗證者通過廣播加密簽名參與共識協議,加密簽名充當投票以擴充套件區塊鏈。“delegator”是指某人想要委託某些代幣(例如Cosmos Hub的ATOM),以便為他們選擇的驗證人提供投票權,以便他們可以獲得一部分阻止獎勵。

要成為驗證者並擁有一定數量的投票權,你必須鎖定預定數量的令牌。這可以是自籌資金,也可以通過讓他們“delegate”你的股權從其他賭注代幣持有人那裡獲得投票權。代表們正在使用他們選擇的驗證器將他們的投注代幣(ATOM)置於危險境地。它們可能會丟失這些令牌,具體取決於驗證器是否符合協議規定。

在塊驗證間隔(稱為迴圈)期間,驗證器集被定義為簽署同意提交下一個塊的事務的驗證器集。此驗證器集是動態的,隨著驗證器加入或退出共識過程而更改。至少需要4個驗證器,但執行Tendermint的共識協議可以具有的驗證器數量沒有上限。 Cosmos Hub將有100個,但隨著時間的推移,這將根據預定的時間表自動增加到300個驗證器。此引數也可以通過治理進行更改。

即時區塊終結

每個區塊鏈都是最終的。根據驗證器的數量,Tendermint中的塊結束可在1秒內完成。通常,塊結束時間約為3秒。

沒有任何股權關係的問題

在股權證明共識系統中,沒有任何利害關係的問題是可怕的,因為留下未解決的問題允許拜占庭行為者在網路內偷竊,不收取任何費用,懲罰或後果。

Tendermint的保稅交易

Tendermint通過使用稱為“bond deposits債券存款”的基於證券存款的抵押品解決了無關緊要的問題。為了解鎖這些債券存款,使用者必須首先解鎖它們,允許它們在一段時間內“thaw解凍”,預計在兩到三個月之間,在所謂的無約束時期。

這使得所有輕型客戶端(行動電話和未與區塊鏈以恆定速率同步的使用者)可以瞭解驗證器集將如何變化。如果沒有這種無約束的時期,他們很容易受到區塊鏈似乎已經從之前的驗證器集中做出某些事情的攻擊,但實際上驗證器集已經很久了,他們已經賣掉了他們的代幣。

EOS中的抵押

在EOS中,協議不存在此類財務懲罰。相反,作為“collateral抵押”,排名代表將在他們被判犯有不法行為的情況下失去聲譽;拜占庭角色所面臨的經濟激勵幾乎沒有。DPoS假設喪失排名代表“job”的機會成本加上競選(獲得選舉)的沉沒成本的組合大於執行雙重支出攻擊所獲得的資金。令人矚目的是,缺乏明確定義的協議內懲罰使得EOS網路容易受到攻擊,因為暫時是無關緊要的問題仍未得到解決。

分叉問責制

只有在給定狀態下設定的驗證器中至少有1/3的驗證器串通時,才能使用Proof-of-Stake協議中的分支。為了阻止惡意分叉的風險,必須採取一些協議內保護措施。

Tendermint

Tendermint中的Fork責任通過識別在鏈中引起惡意分叉的人來確認其驗證者的責任。那些被判有罪的人被他們的債券存款被摧毀而被罰款。這相當於一個重要的支付懲罰,其中在給定狀態期間網路中所有賭注硬幣的1/3都是沒收的。如果發生硬分叉,負責造成它的一方將被“slashed”。

從1/3惡意行為者的hardfork中恢復,額外的協議手段是必要的。利益相關者協調離線允許他們進行重組提議,使他們能夠在大量驗證人員同意少數不良行為者在一定高度上選擇鏈條時分叉區塊鏈。

EOS(TaPos)

EOS處理分叉有些不同。它利用了一種名為Transactions-as-Proof-of-Stake或TaPoS的概念。它要求每個交易都有一個最近的塊頭的相應hash。雜湊做了兩件事:它可以防止重放攻擊,因為具有缺失雜湊的fork上的交易假定fork是偽造的,並且它向網路發訊號通知特定使用者及其賭注代幣在特定鏈上。

不幸的是,TaPoS只能解釋遠端攻擊(這是EOS網路能夠從中恢復的攻擊)。然而,重要的是,它忽略了近期的塊結束,這使得網路容易受到分割槽的影響,例如,並非所有交易都被看到。代表未見證的有效交易因此沒有相應的雜湊值會導致這些交易在這種近期情況下成為孤兒。

CAP定理

否則稱為’Brewer定理’,CAP定理指出在分散式系統中同時滿足3個以上保證中的2個不可能性:一致性,可用性和分割槽容差。

面對DDoS,Tendermint會停止執行。EOS保持執行,但分叉和分叉,使得狀態不一致,攻擊者可利用這些狀態。Tendermint優先考慮可用性的一致性;在EOS中,情況恰恰相反。

結束

由於需要拜占庭式容錯來維持開放,無許可權和去中心化的系統,因此保證網路具有審查能力至關重要。我們希望分散協議及其各自的區塊鏈足夠安全,以至於狀態代理無法操縱資料,即使它們能夠暫時對其進行DDoS操作。如果本地代理(或一般的惡意行為者)決定禁止訪問這些開放系統,我們需要可靠的安全性,而不是手動波浪式技術。

沒有人攻擊現場網路的說法遠不是說它是防黑客的。這就是為什麼當聲稱網路安全時,強調使用數學證明來驗證網路是否安全的原因。鑑於流入每個頂級市場上限加密貨幣的資金數量,專門的攻擊者肯定會嗅出並利用邊緣情況下的漏洞。鑑於此,即使dPoS(Democracy-as-of-Stof-of-Stake)中的0.0001%邊緣情況也意味著它不是防黑客的。

我們通過分散式系統安全分析工具Jepsen.io稽核了Tendermint Core,結果客觀地驗證了Tendermint BFT沒有違反其宣告的保證:https://jepsen.io/analyses/tendermint-0-10-2

最後,隨著研究人員構建協議向上和向前移動到Web3.0空間,我們承認當前的證明方法確實有一些弱點。

股權證明的陷阱:

  • 選民冷漠:對代幣投票的依賴使其成為共識問題。從歷史上看,採用人工投票機制進行治理的權力下放機構的參與率均低於10%。[見:DAO投票EIP186投票,2014年的Bitshares dPoS投票。]
  • 投票集中化的偏見:Buterin歸因於公共偏見導致的博弈論的崩潰。“因為每個選民只有很小的機會影響結果,他們正確投票的動機比社會最優激勵要低幾千倍。這意味著像每個人都把錢幣交給交易所和交易所代表使用者投票的情況,使用者並不真正關心交易所如何用他們的錢投票,這很可能會發生。“
  • 激勵錯位:代幣持有者和網路使用者是兩類不同的人。代幣持有者被激勵推高代幣價格,而且通常情況下,那些高價位的人可能會導致不穩定的價格增長,而不必為使用者帶來強大的系統效用。

======================================================================

分享一些以太坊、EOS、比特幣等區塊鏈相關的互動式線上程式設計實戰教程:

  • tendermint區塊鏈開發詳解,本課程適合希望使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI介面、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操程式碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。
  • EOS教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智慧合約開發與部署、使用程式碼與智慧合約互動等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
  • java以太坊開發教程,主要是針對java和android程式設計師進行區塊鏈以太坊開發的web3j詳解。
  • python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
  • php以太坊,主要是介紹使用php進行智慧合約開發互動,進行賬號建立、交易、轉賬、代幣開發以及過濾器和交易等內容。
  • 以太坊入門教程,主要介紹智慧合約與dapp應用開發,適合入門。
  • 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
  • C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括賬戶管理、狀態與交易、智慧合約開發與互動、過濾器和交易等。
  • java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Java程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
  • php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Php程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。

匯智網原創翻譯,轉載請標明出處。這裡是原文共識演算法比較Tendermint的BFT與EOS的dPoS