Tendermint 是為 Cosmos 開發的一種基於拜占庭容錯(BFT)的 PoS 共識機制。它最初的軟體由 Tendermint(公司)開發,起源可以追溯到 2014 年。
Tendermint 由兩個核心技術元件組成:區塊鏈共識引擎 Tendermint Core 和通用應用程式介面 ABCI。
Tendermint Core 是 Cosmos 的預設共識引擎。它用來確保相同的交易在去中心化網路中的每台機器上以相同的順序記錄。簡單來說,Tendermint Core 能夠在多台機器機器上複製資訊來確保資料的一致性。在 Tendermint Core 的支援下,Cosmos 網路中每個正確運行的機器都可以取得完全相同的交易日誌並計算相同的交易狀態。
因此在這種機制下,即使多達三分之一的網路節點出現任意種類的錯誤,區塊鏈網路也能正常運作。 Cosmos 的安全性因此得以保證。同時,Tendermint Core 還具有鎖定機制。如果有驗證節點成功破壞了網路安全或曾經試圖這麼做,它們就會被 Tendermint 識別並鎖定。它可以幫助網路在安全性事件發生後儘快進行責任追究並確認錯誤發生原因。
另一方面,在效能上,Tendermint Core 也為 Cosmos 帶來了相當大的優勢。 Tendermint 共識可以為 Cosmos 提供快速的交易確認速度,實現交易的即時確認性。在它的支持下,Cosmos 的區塊終結時間為 1-2 秒,理論上最高的 TPS 可以達到 10,000。
但 Tendermint 的設計並不完美。它的問題在於如果參與形成共識的節點過多,就會降低網路的速度。 Cosmos Hub 就對其網路上的驗證節點進行了限制。在 Cosmos Hub 中,並非任何人都能成為網路的驗證者。只有質押 $ATOM 價值排名前 100 名的節點才能成為驗證者。這種設計為了確保效能,會在一定程度上犧牲網路的去中心化程度。
除了Tendermint Core 共識引擎,Tendermint 還包括一個通用的應用程式介面,被稱為Application BlockChain Interface (ABCI)。 ABCI 的作用是充當共識引擎和應用程式之間的橋樑。 Tendermint BFT 可以透過 ABCI 與應用程式連接。
ABCI 使交易能夠以任意程式語言處理。與其他區塊鏈解決方案預先打包內建的腳本語言不同,ABCI 允許開發人員使用適合他們的任何程式語言和開發環境。打個比方,ABCI 就像翻譯器一樣。它能夠將任意語言翻譯成一種通用語言,幫助應用程式與共識引擎進行通話(交易訊息傳遞)。