跨鏈:詳解Cosmos跨鏈間是如何相互通信

跨鏈作爲區塊鏈一種不可或缺的技術,我們研究跨鏈,以更好地瞭解區塊鏈之間是如何相互通信。

最初構建區塊鏈時,他們設想能夠提供“一刀切”的解決方案,這意味着所有交易,智能合約或其他任何事物都在單個鏈上執行。 但是,現在很明顯,這樣的系統不太實用,尤其是在存在可伸縮性限制和創新約束的情況下。

跨鏈是兩個相對獨立的區塊鏈之間的互操作性。換句話說,由於區塊鏈是以標準化的方式構建的,因此它允許區塊鏈彼此通信。跨鏈實施主要以資產交換和資產轉移爲代表,既是區塊鏈世界的重要組成部分,也是PPIO的重要研究方向。使用交叉鏈,可以避免單鏈的侷限性。今天,我們將探討Cosmos跨鏈協議的邏輯結構。

根據不同的基礎技術,跨鏈的相互作用可以分爲同構的跨鏈和異類的跨鏈。對於同構鏈,安全機制,共識算法,網絡拓撲和塊生成驗證邏輯是一致的,它們之間的跨鏈交互相對簡單。

另一方面,異構鏈的跨鏈交互相對複雜,並且包括諸如針對比特幣的PoW算法和針對Tendermint的PBFT共識算法之類的技術。區塊組成和確定性保證機制差異很大,因此直接設計跨鏈交互機制並不容易。異構鏈之間的跨鏈交互通常需要第三方輔助服務。

如何實現跨鏈同構?

基於Tendermint開發的鏈可以採用同構跨鏈。 Cosmos中同構鏈之間的資產轉移原理如下。

由於Tendermint使用PBFT+POS共識算法,因此只有在2/3個驗證者同意的情況下,纔會將區塊提交到網絡。可以通過檢查區塊頭以驗證區塊頭在特定鏈中是否合法來驗證驗證器信息。例如Tendermint正在開發兩條鏈:鏈A和鏈B。現在假設資產需要在鏈上轉移。首先,兩個鏈A和B將相互註冊。在註冊過程中,A和B認識到它們的獨立性。然後鏈將相互發送各自的創世塊和ChainID(用於表示不同的鏈)。由於創世塊包含驗證者信息,因此在註冊後,A和B鏈將具有另一條鏈的驗證者信息以及區塊頭信息。

現在,需要將A中的資產轉移到B。首先用戶可以將跨鏈交易包Tx發送到A。A執行packageTx,銷燬或鎖定相關資產,然後將packageTx寫入出口。出口可視爲放置所有外部通知的跨鏈交易的郵箱。

爲了將在鏈A中發生的事件通知鏈B,需要一箇中繼器。中繼器負責將跨鏈消息從鏈A的出口轉發到鏈B的出口。在這種情況下,中繼器在鏈A的出口中查詢packageTx,並獲得packageTx的Merkle證明。該信息被打包到IBC Package PostTx事務中併發送到鏈B,鏈B查詢關於packageTx位置的區塊頭信息。它還將區塊頭信息打包到IBCUpdate Chain Tx中,並將其發送到鏈B。注意中繼器支付了IBC Package PostTx和IBCUpdate Chain Tx的交易成本。

鏈B接收到IBCPacketPostTx事務後,它首先通過該鏈中的驗證器檢查IBCUpdateChainTx中的區塊頭是否爲鏈A的一部分,然後驗證IBCPacketPostTx中跨鏈事務的Merkle證明是否等於該區塊IBCUpdateChainTx中的頭哈希。當所有支票都通過時,B鏈開始執行相關操作(對於B鏈,這意味着生成相關資產等)。

同構跨鏈實現方法

Cosmos中的跨鏈由IBC協議實現。 Cosmos生態系統中定義了以下IBC協議軟件包:IBCRegisterChainTx,IBCUpdateChainTx,IBCPacketCreateTx,IBCPacketPostTx。

IBCRegisterChainTx

在跨鏈的開頭使用以下代碼註冊和發送創世紀區塊。驗證者會將其交給另一方。此代碼只能執行一次,多次執行將報告錯誤。

IBCUpdateChainTx

用於將當前鏈上的最新區塊信息,區塊高度和區塊頭信息傳輸到另一個鏈。

IBCPacketCreateTx

當鏈條接收到交易包時,它將執行跨鏈交易並將相關信息放入出口。

IBCPacketPostTx

跨鏈交易執行後,此軟件包包含Merkle證明,然後由中繼器將其發送到另一個鏈。

plugin

從上面的協議我們可以看到,這些協議包實際上是一個事務。Tendermint有一個plugin模塊,以方便我們擴展。 我們可以在plugin中實現接口,並使用IBC plugin執行跨鏈交易。

上面的代碼是plugin接口的定義。可以看出,該plugin與ABCI接口非常相似,因此IBC事務在deliverTx處交給了該plugin。

異構跨鏈PegZone

對於使用POW共識算法的鏈,例如比特幣和以太坊,它們如何使用Tendermint的IBC協議跨鏈運作?由於這些鏈中使用了POW算法,因此我們無法通過驗證器驗證這些鏈的區塊。我們也無法使用Merkle證明來證明這些鏈上跨鏈交易的合法性。此外,POW共識算法生成的區塊是概率性最終的,並且有可能被回滾。我們需要確保跨鏈交易是真正的最終交易,並且不會回滾。

基於以上考慮,我們使用PegZone方案執行異構跨鏈。PegZone本身實際上是Tendermint開發的代理鏈,它實時跟蹤原始鏈的狀態,並設置安全閾值以等待原始鏈塊的增長。當數字達到安全閾值時,原始鏈狀態被視爲具有僞實時終結性(回滾概率小),這與輕客戶端錢包驗證的原理相同。例如比特幣安全閾值通常設置爲6,而ETF安全閾值可以設置爲20或100。PegZone本身具有實時確定性,可以通過IBC連接到Cosmos Hub以實現跨鏈。

下圖使用PegZone或Peggy以及以太坊作爲跨鏈接的示例。

從上圖可以看出,PegZone可分爲五個部分:

1. smart contract:資產託管在以太坊和Cosmos中代幣託管中的作用。它主要提供四種方法:鎖定,解鎖,鑄造和銷燬。2. witness:這是一個完整的以太坊節點,它監視以太坊合約的事件並等待生成100個區塊。封裝的見證人Tx被提交給PegZone以證明以太坊區塊鏈上的狀態變化。3. PegZone:PegZone是基於Tendermint的區塊鏈,可維護用戶帳戶信息,允許用戶之間進行資產轉移並提供交易查詢。4. signer:Secp256k1用於簽名交易,以便可以通過智能合約有效地驗證簽名;這對應於智能合約的驗證者公鑰集。5. relay:relay負責所有事務轉發。該角色將已簽名的SignTx轉發到智能合約。

Cosmos Hub角色

在Cosmos中的basecoin跨鏈演示中,兩個鏈(鏈A和鏈B)被跨鏈接,並相互發送IBC註冊鏈Tx進行註冊。 跨鏈時,將直接發送IBC協議包以執行資產的跨鏈操作。但是這種直接連接有問題。隨着訪問網絡的區域(相當於一個獨立的區塊鏈)的數量增加,如果直接實現通信,鏈接的數量將以平方的順序增加。以連接到網絡的100個區域爲例。 果每個區域直接需要建立IBC連接,則網絡需要n(n-1)/ 2 = 4950個通信鏈路。如此快速的增長顯然將壓倒整個網絡。

Hub的概念可以解決有關此問題的問題。在Cosmos生態系統中,所有區域都將註冊並向集線器發送IBC軟件包。

Hub運行模式

Hub管理許多區域。所有區域都需要向Hub註冊。Hub跟蹤每個區域的狀態。每個區域將其產生的所有新區塊信息報告給Hub。同時每個區域還需要同步Hub的狀態。每個區域不是通過區域之間直接通信,而是通過將IBC發送到Hub進行間接通信。

當區域建立與Hub的IBC連接時,它可以自動訪問連接到Hub的其他區域,這意味着一個區域不需要連接到其他區域。

當一個區域從連接到Hub的另一個區域接收令牌時,它只需要信任Hub和該區域,而不必信任網絡中的所有其他區域。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章