摘要
您所知道且熱衷的區塊鏈有著非常嚴謹的架構。身為開發人員,在這種情況下您有兩種選擇:在限制的環境中建立應用程式或將進行代碼分叉並建構屬於自己的鏈。然而,開發自己的鏈並不容易,您還需要建立網路並決定所使用的
共識機制。
Tendermint 是用來啟動區塊鏈的開源軟體,讓您能使用任何語言編寫應用程式。更好的是,它們可以跨區塊鏈溝通。
相較於只是將資料庫初始化,建立
加密貨幣或
區塊鏈網路更為費力。它需要在安全性、去中心化和可擴展性之間為獎勵和權衡取得微妙的平衡。
有些團隊已經研究了各種各樣的方法,設法建立最強大的區塊鏈生態系統,也就在意料之中了。在本文中,我們將探究這其中一種方式:
Tendermint 。
如果您對區塊鏈略知一二,那 Tendermint 的大部分內容對您來說並不陌生。在深入探討之前,讓我們先複習一些重要的概念。
瞭解區塊鏈架構
Tendermint 是一種
區塊鏈堆疊,像
比特幣和
以太坊等也是。請記住,這不只是涉及區塊鏈資料庫本身,而是關乎
節點的
點對點網路、其互動方式,還有您透過交易及
智能合約可以辦到的事。它的目標是在即使不信任其他任何人的情況下,讓所有人都同意一種
狀態(比如資料庫的快照)。
在大多數情況下,目前的主要區塊鏈已經有辦法能達成這一點,但它們通常仰賴單體式架構:一種軟體工程概念,表示元件為相互關聯且相互依存。您不能只取走其中一部分然後插入到別的架構中。
如果您追求的是靈活度,那單體架構並不是很好的選擇。在相反類型的模型中(具有模組化架構),您可以調整個別元件而無需擔心破壞任何架構。對於單體式架構而言,您在升級單一元件時必須確保每個元件都保持相容。
現在我們瞭解了其中差別,接著繼續談談 Tendermint 協定。
拜占庭容錯(BFT)
您可能知道比特幣的創舉在於其解決了所謂的
拜占庭將軍問題。我們不會在本篇詳細討論這個問題(如果您有興趣瞭解更多, 請閱讀我們關於
拜占庭容錯的文章)。您只需要知道它詳述了參與者必須在分散式環境中進行通訊的情況。
這些參與者不知道其他人是否在說謊,或者他們之間傳送的訊息是否遭到竄改。即使存在這些問題,如果參與者可以針對一套事實達成一致,則系統被稱為存在拜占庭容錯。
顯然,在去中心化的環境中,正確處理這一點相當重要。不具有拜占庭容錯的加密貨幣實際上起不了作用,您需要某種中心化組織進行協調,而這與目的背道而馳。像許多數位貨幣一樣,比特幣透過使用
工作量證明(PoW) 共識演算法來解決這個問題。
區塊鏈的三層結構
我們知道了單體式/模組化架構之間的區別,也明白去中心化的加密貨幣網路需具備拜占庭容錯。我們來談談通常在區塊鏈中會看到的層級結構:應用層、共識層和網路層。
想開始使用加密貨幣嗎?於幣安買入比特幣 (BTC)!
首先,讓我們快速釐清術語。由於我們只關注該項技術,在這裡我們將交替使用「Tendermint」和「Tendermint Core」這兩個術語。
事實上,Tendermint 是公司的名稱(由撰寫原始白皮書的開發人員 Jae Kwon 創立),而 Tendermint Core 是該公司正在開發的實際軟體。更具體地說,該軟體包含兩個主要元件:核心共識引擎(Tendermint Core)和應用程式介面(ABCI)。
Tendermint Core 是一個實現容錯的系統。基本上,它是一台大型分散式電腦,可以同時向每個人顯示相同的狀態。只要至少三分之二的參與者是誠實的,一切都會順利進行。但幾乎每個區塊鏈都是如此,不是嗎?Tendermint Core 究竟有什麼特別之處?
首先,所使用的共識機制是
權益證明(PoS)機制。每個時期從一組驗證人選擇一個隨機節點。接著,該節點必須提出下一個
區塊(在所謂的
循環系統中進行)。如果其他驗證者對此感到滿意,則新增區塊,並更新鏈。立即確定結果——與比特幣或以太坊不同,您無需等待
確認以確保交易有效。
但是等等,還不只如此!Tendermint Core 是模組化架構,其應用層與共識層和網路層分離。簡單來說,這表示您可以將自己的應用層插入堆疊。無需擔心麻煩的獎勵或共識演算法。
也許這對最終使用者來說並沒有什麼好大驚小怪的。但是對開發人員而言,能夠利用現有框架代表他們可以直接開發應用程式,而無需建立整個網路。來自區塊鏈的資料可以透過管道傳送到整合層,讓開發人員能夠以任何語言編寫軟體。
神奇的事會發生在所謂的應用程式區塊鏈介面(或簡稱為 ABCI )上。把這想像成您在樹莓派電腦上的 GPIO 接腳。您可以將各種第三方元件連接到這些接腳上:從 LED 到精心設計的植物灑水系統。ABCI 以類似的方式定義了區塊鏈以及在其上運行的應用程式之間的界線。
Tendermint Core 有什麼厲害之處?
應用程式介面和共識機制的分離為各種去中心化應用程式提供了更高的靈活性,可以將任何程式語言納入其商業邏輯。
您只需要看看
Ethermint 這個實際範例就會明白其用處:Ethermint 是一個採用了以太坊程式碼庫的計劃,刪除了工作量證明機制,並將以太坊虛擬機建立在 Tendermint 上。
這可能導致一些有趣的事情發生。首先是以太坊開發人員可以輕鬆地將其智能合約轉移到新的引擎,或者用 Solidity 語言編寫新合約。除了提供以太坊功能之外,Ethermint 還可作為以太坊權益證明,讓我們一睹
Casper在
以太坊 2.0中實現的樣子。
區塊鏈互操作性
「區塊鏈網路」的承諾吸引了許多人使用 Tendermint 協定。
互操作性是加密貨幣領域期待已久的另一個特性,因為這意味著數以百計的單獨區塊鏈將變得彼此相容。
目前,
Cosmos SDK 已投入大量心力開發中。Cosmos SDK 是一種開源框架,讓任何人建構應用程式專用的公共或私有區塊鏈。接著,這些區塊鏈可以透過所謂的 Cosmos Hub 插入更廣的 Cosmos 網路,並在那裡與其他人進行通訊。
作為區塊鏈引擎,Tendermint 引起了加密貨幣領域從開發人員到最終使用者等眾多相關人士的關注。
如果這項軟體持續受到青睞,它很可能會成為區塊鏈網路的支柱。正如我們所見,有些計劃已經啟用了 Cosmos SDK 來實現這個願景。