什么是Tendermint?(1)
什么是Tendermint?
- 一、Tendermint介紹
- 1.1 什么是 Tendermint?
- 1.2 Tendermint 與同類軟件對比
- 1.2.1 Zookeeper, etcd, consul
- 1.2.2 比特幣、以太坊及其他加密貨幣
- 1.2.3 其他區塊鏈項目
- 1.3 cosmos與tendermint
- 1.4 總結
- 1.5 參考文檔
一、Tendermint介紹
1.1 什么是 Tendermint?
Tendermint 是一種能夠為多臺機器安全和保證數據一致性復制應用程序的軟件。從安全性層面看,分布式系統中即使 1/3 的隨機節點即使宕機了,Tendermint 依然能夠保證分布式系統正常運行。另外在數據一致性方面,故障的節點能夠看到相同的事務日志并計算出相同的狀態。安全且保持一致性復制是分布式系統的基本問題, 在很多應用程序中起著關鍵性的作用,比如貨幣系統、選舉和基礎設備編排等系統。
分布式系統需具備容忍節點離線或出錯,也就是拜占庭容錯。拜占庭容錯理論歷史悠久,區塊鏈技術落地成功的案例、比如比特幣、以太坊的成功促使該理論在計算機領域的實現得以流行。區塊鏈技術著重結合對等網絡(P2P) 和密碼認證對拜占庭容錯加以進化。 交易被批量打包成塊,每個塊通過加密哈希連接上一個塊從而形成鏈,這也是把該技術命名為 區塊鏈 (BlockChain) 的原因。
Tendermint 包含兩個組件: 區塊鏈共識引擎 (blockchain consensus engine)、 通用應用接口(generic application interface) 共識引擎被稱為 Tendermint Core ,確保交易記錄在任何一個節點都能一致被排序。通用應用接口被稱為 應用區塊鏈接口 (Application BlockChain Interface) 簡稱為 ABCI , 交易能夠被任何編程語言處理。大部分區塊鏈和共識方案預先打包內置狀態機(比如存儲鍵值對或者通過腳本),而開發者通過 Tendermint 可以對任意編程語言編碼的應用實現 BFT 狀態機復制, 并且開發環境對開發者也很適合。
Tendermint 以易用、易懂、高性能為設計原則,對各種分布式應用程序都有用。
1.2 Tendermint 與同類軟件對比
Tendermint 與兩類軟件相似。一類是分布式鍵值對存儲軟件,例如 Zookeeper, etcd, 和 consul, 但他們使用了 non-BFT 共識。 另外一類就是區塊鏈技術。區塊鏈技術包含加密貨幣,例如比特幣和以太坊,還包含非傳統類的分布式賬本,譬如 Hyperledger 的 Burrow
1.2.1 Zookeeper, etcd, consul
Zookeeper, etcd 和 consul 都是典型的鍵值對存儲和 non-BFT 共識算法的實現。Zookeeper 使用 Zookeeper Atomic Broadcast 版本的 Paxos 算法;etcd 和 consul 使用 比較新和簡單的 Raft 共識算法。非拜占庭容錯共識實現的分布式集群中,假設包含 3-5 個節點,可以允許一半的節點離線,但是如果出現一個拜占庭錯誤節點(作惡節點)足以摧毀該分布式系統。
三者都各有特色稍微不同地實現了鍵值對存儲,但都重點圍繞著給分布式系統提供基礎服務,例如動態配置、服務發現、鎖、領導節點選舉 (leader-election)
Tendermint 和上述類型的軟件本質作用差不錯,但有兩個重要的不同點:
- 支持拜占庭容錯算法,意味著智能容忍三分之一以內的節點錯誤,這個錯誤包括任意節點離線和節點作惡
- 獨立于特定類型軟件,例如鍵值存儲類。而 Tendermint
只是關注任意狀態機復制,開發者根據軟件需求業務邏輯,例如通過狀態機復制實現鍵值對存儲、加密貨幣乃至分布式電子投票平臺等分布式應用。
1.2.2 比特幣、以太坊及其他加密貨幣
Tendermint 誕生于傳統的加密貨幣之后。相比于比特幣的工作量證明 (Proof of Work) ,它實現的共識算法更高效和安全。早期的 Tendermint 內置了簡單的數字貨幣并實現了共識功能。 節點需要繳納保證金,如果作惡保證金就會被沒收。Tendermint 實際上也是一種股權證明 (Proof of stake)
加入可股權證明算法之后,Tendermint 演變為區塊鏈共識引擎,允許任何機器都可以加入作為節點的分布式系統。這也意味這 Tendermint 可以作為其他區塊鏈項目即插可用的共識引擎, 替換原有的共識模塊。也就是說,舉個例子你可以使用 Tendermint 共識運行任何語言實現的以太坊節點源碼作為 ABCI 應用(上文提到,最終實現了一種基于股權證明共識以太坊。 事實上,我們基于以太坊實現了上述的 demo
the Cosmos network 共識算法就是內置了 Tendermint
1.2.3 其他區塊鏈項目
- Fabric 采用了與 Tendermint 相似的方法,但是它更偏向于如何管理狀態,并要求所有的應用行為能夠運行在 docker 容器中,我理解 Fabric 的 chaincode 就像以太坊的智能合約。它基于 PBFT 實現。在 Tendermint
中,可以把這種基于容器的行為作為 ABCI 應用。 - Burrow 實現了以太坊虛擬機和交易機制,并擴展了名字注冊 (name-registery),許可權限、原生合約提供多種方式調用區塊鏈接口 (REST 和 JSON-RPC)。 它使用
Tendermint 作為共識引擎,提供的特殊的應用狀態(這里的狀態由賬戶、驗證人集合、和名字注冊)
1.3 cosmos與tendermint
關于Cosmos的介紹詳情見下一篇博文。
Tendermint與Cosmos一起存在于一個堆棧中,Cosmos是一個區塊鏈平臺,充當調解人并自稱為“區塊鏈互聯網”;該平臺僅在幾天前推出了區塊鏈,啟動了Cosmos / Tendermint生態系統的實際存在。整個生態系統的運作方式與以太坊類似,只是它更模塊化、更靈活、更易于開發。
Cosmos SDK充當生態系統的應用層(類似于以太坊的EVM),而Tendermint代表共識層(BFT容錯權益證明共識算法)和網絡層(Tendermint Core)。
在Tendermint Core堆棧下連接的共識算法+ p2p網絡協議通過生態系統的另一個稱為應用程序區塊鏈接口(ABCI)的獨立元素連接到Cosmos SDK。
Cosmos SDK是ABCI的基本實現,代表了生態系統的模塊化部分;它是一個準系統應用程序層,開發人員可以使用自定義功能進行開發和增強。這使得現有的區塊鏈可以構建基于Tendermint的應用程序,這些應用程序可以連接到生態系統并在彼此之間交換消息和價值。
這就是為什么Tendermint和Cosmos使用“區塊鏈互聯網”綽號的原因;整個系統希望成為一個中心,允許不同區塊鏈之間的互操作性。
該項目背后的一家營利性加利福尼亞公司(也稱為Tendermint)將上述三個主要元素分開,然后在Tendermint堆棧下連接網絡/共識層。
這樣做是為了使技術的組件更易于使用和修復,而無需在想要更改某些內容時為整個生態系統進行開發。主要開發人員Jae Kwon飾演Ethan Buchman,他們希望創建一些易于理解,實現和開發的東西,而Tendermint是他們努力的最終結果。
在Tendermint之前,構建區塊鏈需要從頭開始構建所有三個層(網絡,共識,應用程序)。以太坊通過提供虛擬機區塊鏈來簡化這一點,任何人都可以在其上以智能合約的形式部署自定義邏輯。一個問題仍然存在:區塊鏈本身的發展。Tendermint大大簡化了這個過程,因為開發人員只需要擔心應用程序層。
網絡和共識層已經通過Tendermint Core引擎提供;需要做的就是通過選擇的編程語言調整ABCI,開發獨特的應用程序并開始使用Tendermint的功能。
Tendermint團隊通過獲取以太坊的代碼庫,剝離PoW并將最終結果插入其Tendermint Core之上來做這樣的事情。這創建了Ethermint,類似以太坊的協議,具有權益證明功能。所有現有的以太坊工具(Truffle,Metamask,…)都與Ethermint兼容,你可以將智能合約移植到那里,而無需任何額外的工作。
我們仍然沒有提到的整個等式的一個重要元素是區塊鏈間通信協議(IBC),它對于區塊鏈互操作性非常重要。IBC允許異構鏈在彼此之間傳輸價值和數據,最終解鎖具有不同應用程序和驗證器集的區塊鏈之間的互操作性。
為了避免未來成百上千個區塊鏈可能帶來的可擴展性問題,Cosmos提出了一種具有兩類區塊鏈的模塊化架構:Hubs和區域。
區域是常規的異構區塊鏈,而 Hub 是專門設計用于將區域連接在一起的區塊鏈。當區域與中心創建 IBC 連接時,它可以自動訪問(即發送和接收)連接到它的所有其他區域。因此,每個區域只需要使用一組受限制的集線器建立有限數量的連接。
中心還可以防止區域之間的雙重支出。這意味著,當區域從中心接收令牌時,它只需要信任此令牌的源區域和中心。第一個中心(Cosmos Hub)幾天前已經啟動。有些鏈條不會完全兼容Tendermint;開發人員設想了所謂的掛鉤區來處理這個問題。
Tendermint的密碼學本身并不是那么先進,ECDSA簽名是生態系統中最“奇特”的技術。在最近的發布后直播中提到了BLS簽名聚合,零知識證明和Ristretto帳戶,但這些似乎都還沒有出現。
該技術可用于創建公共和私有鏈,前者通過PoS運行,后者通過許可節點運行;兩個系統都將是BFT。Tendermint Core上的方塊可以有一秒鐘的區塊時間,并被視為立即最終;否則,可以安全地假設網絡遭受了33%的攻擊(超過三分之一的驗證者是惡意的)。
區塊鏈需要具有拜占庭容錯能力,即能夠容忍潛在的惡意節點,這些節點正在向網絡傳達虛假狀態和消息并危及共識。拜占庭容錯系統上的科學很少,因為這個話題在學術界并不受歡迎。
所做的一些研究集中在多達7個節點的小樣本網絡上;Tendermint開發人員想要一些可以在更高層次上擴展的東西。即使比特幣引入了一個能夠支持數千個獨立節點的系統,該系統也曾經(并且仍然擁有)一個管理域,這大大限制了它的可擴展性。
Kwon和他的合作伙伴設想了一種BFT協議,該協議可以在無許可設置中擴展到數百個節點,并以權益證明(PoS)作為底層安全機制。他們提出了基于BFT的系統,該系統具有我們已經命名的兩個關鍵元素:Tendermint Core,用于達成共識和“八卦”,以及Cosmos SDK作為應用層。
他們的BFT權益證明算法通過使用部分同步網絡模型克服了拜占庭將軍問題,這意味著對區塊進行投票的驗證者不需要同時采取行動。這個系統中的區塊不是按時間表投票的,也沒有確定的大小。
在被認為是“完全同步”的比特幣中,我們有一個設定的10分鐘時間框架,節點必須尋找,收集,驗證和添加交易到區塊。對于以太坊,這個時間范圍只有15秒。這一切都很好,直到同步性被打破;一些節點可能會脫機并遭受延遲問題,在這種情況下,鏈可能會停止或分叉。
Tendermint旨在實現一個更集中的模型,該模型拒絕對其以異步方式運行的節點進行這些計時限制。
該協議更加異步:不是每輪花費預定的時間段,而是在超過2/3的節點達成共識后,回合的每個步驟都會進行。這種缺乏同步是部分的,項目將其稱為“弱異步”。驗證者是眾所周知的,可以相互溝通,以協調他們的努力,并確保始終達成網絡共識。所有這些都意味著,事實上,他們的網絡永遠不會分叉。
Tendermint定期重新分配驗證者提出區塊的權利,以略微緩解該過程集中化的潛在問題。在提出區塊后,驗證者在多輪確定性過程中投票。
為了擴展這一點,我們需要意識到,在協議的世界里,我們有非確定性和確定性的協議。非確定性協議是我們在完全異步系統中看到的協議。純異步情況的共識可能依賴于隨機預言機,并且通常會產生很高的消息復雜性開銷,因為它們依賴于所有通信的可靠廣播。
Tendermint通過走確定性路線來避免這種高開銷;實際上沒有什么是隨機的,而是通過定義的數學函數完成的,該函數允許我們做出預測,即協議保證做出決策。
使用 Tendermint,驗證器在確定性加權輪循機制格式的幫助下進行輪換。驗證者擁有的賭注越多,他們被選為領導者的次數就越多。目前,該協議的上限為一百個驗證器,但是,如果需要,團隊可能會考慮添加更多驗證器。這確保了系統在異步環境中是安全的,并且在弱同步環境中是活躍的。總體而言,共識機制犧牲了一定程度的活性,以實現共識安全性和即時終結性。
1.4 總結
Tendermint是一個有趣的概念,在紙面上看起來和聽起來可能比在現實中更復雜。它基本上是互操作性的EOS,與以太坊及其大量克隆項目有很多相似之處。Tendermint的主要目標是解決區塊鏈互操作性問題,它在這個市場上面臨著強烈的反對意見。Ark,ICON,Polkadot,AION和類似的項目都有相同的目標,所以誰會脫穎而出還有待觀察。
1.5 參考文檔
1.區塊鏈 PoS 共識——Tendermint
2.What is Tendermint? How does Tendermint consensus work?
總結
以上是生活随笔為你收集整理的什么是Tendermint?(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两招提高孩子识字兴趣和效果
- 下一篇: 杰里之.696 系列 K 歌宝解决第一声