Tendermint主要包含兩個主要的技術:
區塊鏈共識引擎和通用的應用接口。共識引擎被稱為Tendermint核心模塊,確保相同的交易在每個機器中都按照相同的順序被記錄下來。應用接口被稱為應用區塊鏈接口(ABCI),讓交易可以被任何編程語言編寫的程序處理。
在核心模塊中,Tendermint基于循環投票機制進行工作,這也是共識協議的原理。一個回合被分成3個處理步驟:驗證者提出一個塊、發送提交意圖、簽名后提交一個新區塊。這種機制為原子廣播提供了一個安全的狀態復制機,增加了一個責任層——安全故障可以完全歸結于Tendermint。
Tendermint共識算法從驗證者集開始。驗證者們都維護了一份區塊鏈的全拷貝,并且可以用公鑰來識別驗證者的身份。在每個新的塊高度他們輪流的提出一個區塊。每輪投票都只有一個驗證者可以提出塊,并且要用驗證者相應的私鑰對此進行簽名,這樣的話如果有錯誤發生就可以找到為此負責的驗證者。然后剩下的驗證者就需要對每個提議都進行投票,投票都需要用自己的私鑰進行簽名。這些組成一個回合。不過可能因為網絡的異步需要好幾個回合才能提交一個新塊。
驗證者提交塊的時候由于幾種原因可能會失敗:當前的提議可能下線了,或者網絡可能遇到了延遲。Tendermint允許驗證者可以被跳過(就是輪到一個驗證者出塊的時候但是此驗證者沒出塊)。驗證者在移到下一輪投票之前等待一小段時間來接收提議者(此輪出塊的驗證者)提出的整個區塊。這種對超時的依賴讓Tendermint成為一個弱同步協議,而不是一個異步協議。不過,剩下的協議是異步的,并且驗證者只有在接收到了超過2/3的驗證者集消息時才會進行處理事物。正是因為這樣,所以Tendermint需要大多數的驗證者可以100%正常運行,如果1/3或更多的驗證者離線或脫機,網路就會停止運行了。
假設少于1/3的驗證者是拜占庭,Tendermint保證安全永遠不會被破壞——也就是,驗證者(2/3以上)永遠不會在同一個高度提交沖突的區塊。因此,基于Temdermint的區塊鏈永遠不會分叉。
目前為止,Tendermint的設計決策確實是把安全性和不可改變性地位放在了靈活性之上。在現實世界上有相當高的可能性是,系統真的會停止運行,參與者將會需要在協議外組織在某種軟件上更新后重啟系統。
在數字
加密貨幣社區中只有少數人理解 Casper以及為什么它很有價值的時候,Tendermint就為Casper研究奠定了基礎。這個洞察力就是:如果一個鏈的本身是高度容錯的,那么你就可以依賴鏈來對于誰來生產區塊做出一個好的決定,但是如果鏈的本身就是不可靠的,那么你就陷入了雞和雞蛋的問題中去了,這也是之前所有其他共識算法的滅頂之災。
這個設計決策被認為不如可用性優先的協議例如
以太坊和
比特幣。比特幣中的權衡是:如果它的網絡被分裂了,比特幣在各種攻擊的情況下就失去了它的安全保證。這其實就是一個不可修改理論,也就是你的置信區間是100%的時候,那么你跟隨的就是一條正確的鏈,你會使用這條鏈來選擇誰來生產下個區塊,但是一旦你轉移到一條不安全的鏈上之后,并沒有一條明確的路徑讓你回到正確的鏈上。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。