第一部分 中,我們從開發一條單獨的區塊鏈以及區塊鏈應用程序的視角介紹了 Cosmos 。但如前所述,Cosmos 最關建的特性之一是互操作性,即賦能多種區塊鏈之間的交互。爲了更好地理解這一特性的運作原理,我們首先需要了解 Cosmos 中用於支撐其互操作性的基礎架構「 Hub 以及 Zone 」。

原文標題:《How does Cosmos work? How does it compare to Bitcoin and Ethereum? (Pt. 2)》
作者:Preethi Kasireddy
翻譯 & 校對:安仔 Clint & 阿劍

Hub 和 Zone

Cosmos 網絡中的區塊鏈應用了一種中心輻射模型:
一文讀懂 Hub 與 Zone 架構如何實現 Cosmos 互操作性

位於中心的是 Hub (「中心樞紐」)。Hub 管理着許多被稱爲 「Zone」 的獨立區塊鏈(下文 「 Zone 」 指代區塊鏈),由 Hub 來追蹤記錄各個 Zone 的狀態,而每一個 Zone 有義務不停地把自身產出的新區塊反向彙報給 Hub 。類似地,每一個 Zone 也需要同步 Hub 的狀態。

但這裏有個棘手的問題 —— Zone 之間並不直接同步各自的狀態,而是通過發向 Hub 的數據包間接通信。要想弄清楚這一流程,我們首先需要調研其背後的支撐機制:跨鏈通信(IBC)。

IBC 是如何工作的

Hub 與 Zone 直接通信,而 Zone 與 Zone 之間通過 IBC 間接通信。當 Zone 對 Hub 建立起一個 IBC 連接,它可以自動訪問其他連接到該 Hub 上的 Zone ,這意味着 Zone 無需與其他 Zone 連接,而僅僅連接到 Hub 上即可。

通過保持各種跨 Zone 代幣的固定總額,Hub 可以預防雙重支付問題(Double Spend)。這些代幣可以通過一種被稱爲「幣包」 的特殊 IBC 數據包而實現 Zone 之間的跨鏈轉移。

當一個 Zone 通過 Hub 收到來自其他 Zone 的代幣時,它只需要信任 Hub 以及代幣來源的 Zone,而不需要信任網絡中所有其它的 Zone 。

讓我們看個例子:

假設當前由兩條區塊鏈:Zone 1 以及 Zone 2 。現在如果我們想要從 Zone 1 上發送代幣到 Zone 2 ,會發生什麼呢?

一文讀懂 Hub 與 Zone 架構如何實現 Cosmos 互操作性

要讓數據包從 Zone 1 發送到 Zone 2 ,Zone 1 首先要向 Hub 發送一個指向 Zone 2 的數據包。

一文讀懂 Hub 與 Zone 架構如何實現 Cosmos 互操作性

緊接着 Hub 向 Zone 2 發送一則證明,表示 Zone 1 向其發佈了一個數據包。

一文讀懂 Hub 與 Zone 架構如何實現 Cosmos 互操作性

在此之後,Zone 2 必須驗證關於 Zone 1 的證明是否真實。爲此,Zone 2 要利用 Zone 1 存儲在 Hub 中的區塊頭。我們前面提到過 Hub 幫助 Zone 同步記錄其它每一個 Zone 的狀態,而 Hub 是通過記錄其它 Zone 的區塊頭實現這一功能的。

一文讀懂 Hub 與 Zone 架構如何實現 Cosmos 互操作性

現在你可能會疑問:爲什麼 Cosmos 不直接利用 IBC 建立 Zone 與 Zone 之間的連接?爲什麼需要進行 Hub 和 Zone 的設計?事實上,隨着接入到網絡中 Zone 的數量上升,以直連方式實現通信會導致鏈路數量呈平方級上升。以 100 個 Zone 接入到網絡中爲例,如果各個 Zone 直接都要建立起 IBC 連接,則網絡中需要有 4950 條通信鏈路!如此快速的增長顯然會令網絡不堪重負。

採用「 Hub 與 Zone 」模型令 Cosmos 能夠無視 Zone 的數量而實現跨鏈通信,並支持網絡的不斷拓展

一文讀懂 Hub 與 Zone 架構如何實現 Cosmos 互操作性

Cosmos 網絡的正常運轉離不開 IBC ,正是因爲它才能讓多條承載着不同應用和驗證者集的獨立區塊鏈(即 Zone )實現互操作

創世「Hub」: Cosmos Hub

如前所述,Hub 是連接不同 Zone 的組件,而 Cosmos Hub 正是 Cosmos 網絡中第一個 Hub ,它通過 IBC 連接其它的 Zone。Cosmos 網絡上構建的第一個區塊鏈(或者說 Zone )會應用該主 Hub 來與網絡中其他的 Zone 進行交互。這就意味着 Cosmos Hub 必須具備足夠高的安全性(即許多驗證者)來保證使用它的 Zone 能安全地進行互操作。

橋接非 Tendermint 共識的區塊鏈

目前爲止,我們探討了基於 Tendermint 共識的區塊鏈(即 Zone )是如何利用 IBC 和 Hub 進行交互的。然而 Cosmos 並不侷限於
Tendermint 共識鏈的跨鏈操作。

我將在下文粗略解釋 Cosmos 如何兼容其它不同共識算法的區塊鏈。

一般來說,區塊鏈可以分成兩種類型:不可逆鏈和概率鏈。

不可逆鏈(Determinmistic chain)指的是每個區塊的狀態都是確定的(finalized),在未來的任意時刻你都可以從創始塊開始復現推演每個區塊的狀態(例如基於 Tendermint 共識的區塊鏈);概率鏈(Probabilistic chain)是指你只能根據區塊鏈網絡參與者在不同分叉鏈上的比例,而以一定概率認爲某條鏈是主鏈(例如比特幣)。Cosmos 中的 Hub 理論上可以接入上述兩者,只不過對於概率鏈的支持在實踐中要相對麻煩一些。

這是因爲從底層設計來講,IBC 發揮作用的前提在於區塊鏈的不可逆。如果區塊鏈是概率鏈,Hub 就不能保證跨 Zone 的代幣總額固定。如前所述,Hub 如果想要實現無雙重支付的跨 Zone 代幣轉移,就必須保證在 Zone 與 Zone 之間某一代幣的總額是固定的。

Cosoms 試圖通過 「Peg Zone」 來實現概率鏈的互操作性。

Peg Zone 是追蹤記錄另一條區塊鏈狀態的區塊鏈,它要將自己橋接的某條概率鏈上的狀態確定爲不可逆的,使得這些狀態得以與 IBC 兼容。

一文讀懂 Hub 與 Zone 架構如何實現 Cosmos 互操作性

還跟得上嗎,少年?現在我只剩下最後一個(同時也是最重要的)問題要跟你探討:區塊鏈究竟爲什麼需要要互操作性?

爲什麼互操作性如此重要?

衆所周知,區塊鏈是不可逆賬本。然而和其他軟件一樣,隨着時間推移,用於構建區塊鏈的軟件也需要進行迭代和升級。一蹴而就、無懈可擊的軟件簡直是天方夜譚,所以軟件的改動不可避免。「治理」問題就是討論如何對區塊鏈底層軟件的改動進行提案、決議以及應用。

以比特幣爲例,由比特幣基金會、比特幣核心開發者、礦工以及用戶來發起底層改動的提案,並以協作的方式實現升級。而以太坊則依靠開發者和用戶社區的羣策羣力來做出此類決議。

Cosmos 的做法與上述兩者大相徑庭。不同於常見的、統攝全網的治理機制,Cosmos 允許每個 Hub 構建自己的治理策略。

任何持幣人都可以發起變更提案,由該 Zone 或 Hub 的驗證者和持幣委託人對提案進行投票。提案的內容包括但不限於對系統預置參數的變更(例如區塊 gas 上限)、軟件更新,甚至是 hub 在處理竊幣、入侵或漏洞時所採取的政策性升級。

同樣每個 Zone 也具備各自的治理機制。

舉例而言,Cosmos 支持在 Hub 端強制應用不可逆性的同時,每一個 Zone 都可以根據自身需要設置是否不可逆。想要了解更多,可以閱讀這篇文章 《Cosmos 中的 Hub 治理機制流程》

在我看來這種設計十分強大,同時也被大大低估了。如果非要從本篇博文中提取出什麼核心論點的話,也就是下面這一段話了:

Cosmos 在底層設計上不認爲能通過有限的規則治理大千世界中形形色色的經濟網絡,不認爲存在特定的一個規則集合讓大家都稱心如意。這一道理不言自明,看看比特幣自運行以來由於哲學和政治分歧引起的衆多分叉。另一方面,從以太坊的治理中我們可以看出,持幣人無法以規範的形式實現治理或是形成合力拒絕不規範的治理,這對生態的發展起到了副作用,阻礙了以太坊的更新升級。

Cosmos 試圖通過獨立區塊鏈之間的互操作性解決這一問題,即使並且尤其這些區塊鏈擁有不同的治理政策。因此 Cosmos 最核心的價值屬性就是在社會和經濟領域的可拓展性。它爲其生態之上的用戶和開發者提供了無限的自由,以及不加約束的實驗潛能。