Tendermint 大體上與兩類軟件很類似。第一類包含了分布式的鍵值存儲,比如 Zookeeper,etcd 和 consul,它們都使用了非拜占庭容錯共識。第二類就是 “區(qū)塊鏈技術(shù)”,它既包括了像比特幣和以太坊這樣的加密貨幣,也包括了像 Hyperledger Burrow 這樣的分布式賬本設(shè)計。
Zookeeper, etcd, consul
Zookeeper,etcd 和 consul 都是在一個經(jīng)典的非拜占庭容錯共識算法上實現(xiàn)了一個鍵值存儲。Zookeeper 使用了一個叫做 Zookeeper Atomic Broadcast 的 Paxos 版本,而 etcd 和 consul 使用了更年輕,也更簡單的 Raft 共識算法。一個典型的集群由 3-5 臺機器構(gòu)成,雖然可以經(jīng)受住 1/2 的機器發(fā)生問題,但是只要發(fā)生一次拜占庭故障就可以摧毀整個系統(tǒng)。它們每一個都提供了一個稍微有別于鍵值存儲的實現(xiàn),但是都將關(guān)注點放在提供分布式系統(tǒng)的基礎(chǔ)服務,比如動態(tài)配置,服務發(fā)現(xiàn),鎖,選取領(lǐng)導人等等。
Tendermint 是一個本質(zhì)上類似的軟件,但是有兩點關(guān)鍵不同:它是拜占庭容錯的,這意味著它可以經(jīng)受 1/3 機器發(fā)生任意形式的故障 -- 包括黑客和惡意攻擊。
它并不像鍵值存儲一樣針對某一指定類型的應用。相反,它關(guān)注與任意的狀態(tài)機復制,因此開發(fā)者可以量身打造適合自己的應用邏輯,從鍵值存儲到加密貨幣到電子投票平臺,甚至更多的應用都可適用。
以上內(nèi)容取自于 consul.io 和 Hashicorp sites.
Bitcoin, Ethereum, etc.
在比特幣和以太坊這樣的傳統(tǒng)加密貨幣下出現(xiàn)了 Tendermint,它的目的在于提供一個比比特幣的工作量證明更加有效和安全的共識算法。在早期,Tendermint 內(nèi)置了簡單的貨幣來參與共識,用戶必須向一個安全賬戶中“綁定”一定數(shù)量的貨幣,如果他們表現(xiàn)不端,這些錢就會被收回 -- 這一點使得 Tendermint 成為一個 POS 算法。
自那時起,Tendermint 已經(jīng)進化為一個能夠承載任意應用狀態(tài)的通用區(qū)塊鏈共識引擎。這意味著它可以成為其他區(qū)塊鏈軟件共識引擎的一個即插即用的替代品。所以基于當前的以太坊代碼庫,無論是以 Rust,Go,Haskell,任何人都可以使用 Tendermint 共識運行一個 ABCI 應用。實際上,我們已經(jīng)完成了這一點(https://github.com/tendermint/ethermint)。此外,我們也計劃為 Bitcoin,ZCash,和其他確定性的應用完成同樣的工作。另一個基于 Tendermint 構(gòu)建的加密貨幣應用是 Cosmos。
Fabric, Burrow
Fabric 采用了與 Tendermint 類似的方法,但是更關(guān)注于如何管理狀態(tài),并且要求所有的應用行為能夠在多個 docker 容器,它們叫做 “chaincode” 的模塊中運行。它使用了來自 IBM (augmented to handle potentially non-deterministic chaincode) 的 PBFT 實現(xiàn)。通過擴展 Tendermint 來處理未來工作存在的不確定性,在 Tendermint 中以一個 ABCI 應用實現(xiàn)這個基于 docker 的行為是完全有可能的。Burrow 是一個以太坊虛擬機和以太坊交易機制的實現(xiàn),同時附帶有名字注冊,許可權(quán)和天然合約,可替代區(qū)塊鏈 API等額外特性。它使用 Tendermint 作為它的共識引擎,提供了一個特殊的應用狀態(tài)。