區塊鏈樹莓雕塑
Ⅰ Tendermint詳解
摘要
您熟知並喜愛的區塊鏈有一個相當嚴格的結構。作為一名開發人員,在這種情況下您有兩種選擇:在受限的環境中構建應用程序,或者進行代碼分叉並創建自己的鏈。然而,創建自己的鏈並非易事——您還需要啟動網路並決定所使用的共識機制。
Tendermint是用來啟動區塊鏈的開源軟體,讓您可以用任何語言編寫應用程序。更厲害的是,它可以與其他區塊鏈進行通信。
創建加密貨幣或區塊鏈網路需要投入大量工作,遠遠不止於初始化資料庫。它需要在安全性、去中心化和可擴展性之間為激勵和權衡取得微妙的平衡。
有些團隊已經 探索 了一系列不同的方法,來構建最強大的區塊鏈生態系統,這也在情理之中了。在這篇文章中,我們將詳細了解其中一種方法:Tendermint。
如果您對區塊鏈有所了解,就會感覺Tendermint的大部分內容都似曾相識。在深入研究之前,我們首先回顧一些關鍵概念。
Tendermint是一種 區塊鏈堆棧 。比特幣和以太坊等同樣也是區塊鏈堆棧。請記住,這並非只關乎區塊鏈資料庫本身,還關乎節點的對等網路、它們如何相互作用,以及您通過交易和智能合約可以做到的事情。其目標是在即便不信任其他任何人的情況下,讓所有人都統一一種 狀態 (比如資料庫的快照)。
在很大程度上,如今的主要區塊鏈已經想出了達成這一點的「秘籍」。然而,它們通常依賴於 一體化架構 :這是一個軟體工程概念,意味著組件相互連接且相互依賴。您不能從中取走一部分,然後插入到別的架構中。
如果您想保證靈活性,一體化架構並非理想的選擇。在相反類型的模型(具有 模塊化架構 )中,您可以在不必擔心破壞任何架構的情況下調整單個組件。對於一體化架構,您在升級單個組件時必須確保每個組件保持兼容。
現在,我們理解了其中的差別,可以繼續來了解Tendermint協議。
您可能已經知道,比特幣最大的創新之處在於它解決了所謂的 拜占庭將軍問題 。在這里我們不會詳細討論這個問題(如果您感興趣,請參閱我們關於拜占庭容錯的文章)。您只需要知道,它詳細說明了參與者必須在分布式環境中進行通信的場景。
這些參與者不知道其他人是否在撒謊,也不知道他們之間發送的消息是否被篡改。即便存在這些問題,如果參與者可以針對一組事實達成一致,則系統會被認為存在 拜占庭容錯 。
顯然,在去中心化的環境中,正確把握這一點至關重要。不具有拜占庭容錯的加密貨幣並不能真正發揮作用——您需要某種中心化組織進行協調,這就與目的背道而馳。如果很多數字貨幣一樣,比特幣通過使用工作量證明(PoW)共識演算法來解決這個問題。
我們已經了解一體化/模塊化架構之間的區別,也知道去中心化加密貨幣網路需要具有拜占庭容錯能力。接下來我們談談我們通常在區塊鏈中看到的三層架構: 應用 層、 共識 層和 網路 層。
共識層和網路層是讓網路節點相互通信並盡量就一組事實達成一致的地方。應用層則可讓您自行進行操作——好比以太坊的去中心化應用程序和智能合約或者比特幣中的自定義交易。
然而,Tendermint是公司的名稱(由最初撰寫白皮書的開發人員Jae Kwon創立),而Tendermint Core是這家公司正在開發的實際軟體。更具體地說,這款軟體有兩個主要組件:核心共識引擎(Tendermint core)和應用程序介面(ABCI)。
Tendermint Core是一個能夠實現容錯的系統。本質上,它是一台大型分布式計算機,可在同一時間向每個人顯示相同的狀態。只要至少三分之二的參與者是誠實的,一切就會順利進行。但幾乎每個區塊鏈都是這樣的,難道不是嗎?它究竟有什麼特別之處?
首先,Tendermint Core使用的共識機制是權益證明(PoS)。每個周期從一組驗證者中選擇一個隨機節點。隨後,該節點必須提出下一個區塊(在所謂的 循環 系統上進行)。如果其他驗證者對它滿意,就會添加新的區塊,並更新鏈。結果可以即時確定——與比特幣或以太坊不同,它不需要等待確認來確保您的交易有效。
別著急,它還有其他特色!Tendermint Core採用模塊化架構,應用層與共識層和網路層分離。簡而言之,這意味著您可以將自己的應用程序層插入到堆棧中,而無需擔心繁雜的激勵機制或共識演算法。
這對終端用戶來說並不值得大驚小怪。但對於開發人員來說,能夠利用現有框架就意味著他們可以直接構建應用程序,而無需建立整個網路。來自區塊鏈的數據可以通過管道傳輸到集成層,讓開發人員可以用任何語言編寫軟體。
神奇的事情發生在所謂的應用程序區塊鏈界面(或簡稱ABCI)上。您可以把它想像成樹莓派電腦上的GPIO引腳。您可將各種第三方組件連接到這些引腳,從LED到精心設計的植物灑水系統。ABCI以類似的方式定義了區塊鏈以及在區塊鏈上運行的應用程序之間的邊界。
應用程序介面和共識機制的分離為分布式應用程序提供了更大的靈活性,可以將任何編程語言合並到它們的業務邏輯當中。
您只需要看看Ethermint這個具體示例就可以知道它的用處:Ethermint採用了以太坊代碼庫,刪除了工作量證明機制,並將以太坊虛擬機建立在Tendermint之上。
這使得一些有趣的操作成為可能。首先,以太坊開發人員可輕松將他們的智能合約移植到新引擎上,或者使用Solidity語言編寫新的合約。除了提供以太坊功能之外,Ethermint還可作為以太坊權益證明,讓我們一睹Casper在以太坊2.0中實現的樣子。
「區塊鏈互聯網」的承諾吸引了許多人使用Tendermint協議。互操作性是加密貨幣領域期待已久的一個補充,因為它意味著數百個單獨的區塊鏈將變得交叉兼容。
目前,Cosmos SDK已投入大量工作,Cosmos SDK是一個開源框架,讓任何人都能創建特定於應用程序的公共或私有區塊鏈。隨後,這些區塊鏈可以通過所謂的Cosmos Hub接入更廣泛的Cosmos網路,並在那裡與其他區塊鏈進行交流。
很多熱門的項目已經使用Cosmos SDK來構建,比如BSC、KAVA、Band Protocol、Terra和IRISnet。
作為一個區塊鏈引擎,Tendermint已經引起了加密貨幣領域眾多利益相關者的注意,包括開發人員和終端用戶。