跨鏈加密貨幣資產轉移是開發團隊在 Cosmos 中實現的核心功能。在 Cosmos 生態中,加密資產可以透過 IBC 協議進行轉移。IBC 協議是一種能夠促進互操作能力的跨鏈通訊協議(Inter-Blockchain Communication Protocol)。值得一提的是,IBC 協議只有在轉出和轉入區塊鏈都具有最終性時才能使用。
但是,比特幣和以太坊都不具有最終性保證;他們都是概率最終性。[注:不久的將來 Casper the Friendly Finality Gadget (FFG) 實現後,以太坊會具有最終性。(編者注:中譯本見文末超連結)] 概率最終性意味著,隨著某個區塊後面的鏈的長度的增加,這條鏈也就更不容易被重新組織,也就更能讓我們相信這個區塊是“最終的”。但是因為概率最終性不能完全防止區塊鏈的重新組織,所以透過 IBC 協議安全地跨鏈轉移資產是不可行的。這就提出了一個問題:Cosmos 分割槽(Zone)是如何與已經存在的不具有最終性的區塊鏈進行互操作的。
掛鉤分割槽(Peg Zone)
掛鉤分割槽是 Cosmos 的解決方案。一個掛鉤分割槽是一條基於賬戶模式的區塊鏈,它將 Cosmos 中的分割槽與像 Bitcoin、Ethereum 這樣的外部的區塊鏈連線起來。它扮演了一個介面卡分割槽的角色;或者是像在 Casper 演講中說的那樣,它是一個“最終性工具”。透過設定一個“最終性閾值”,當區塊鏈中新增一定數量的區塊後認為區塊鏈具有了偽最終性(Pseudo-finality)。一般來說,這種“連線”分割槽設計可以被認為是一種兩路掛鉤(2WP)。
像 Tendermint Core這樣的共識引擎提供了實時最終性。如果想更好的瞭解它是如何工作的,請閱讀關於 Tendermint 共識的更多內容
連線以太坊
以太坊掛鉤分割槽將是 Cosmos 中第一批實現的這種分割槽之一。它與 Ethermint 非常不同,後者剝離了 PoW 挖礦,然後在 Tendermint 共識機制和新的網路協議棧之上實現 EVM。而以太坊掛鉤分割槽會使得 ERC20 代幣和以太幣能夠在原生的以太坊和 Cosmos 網路中透過 IBC 連線的所有分割槽間轉移。
掛鉤分割槽的細則還在開發中,你可以關注它的 Github 程式碼庫: Peggy
,下面是倉庫連結。
- Cosmos GitHub:
Peggy:https://github.com/cosmos/peggy
Peggy
在 Cosmos 中,因為我們可以使用 IBC 協議轉移任何加密資產,所以容易進行互操作。然而,在 Cosmos 和以太坊之間轉移加密貨幣在技術上是十分複雜的,這是因為 IBC 資料包不能以太坊中被高效地解碼。這又是因為 EVM 沒有設計成與 IBC 相容。這些問題只有 Peggy 才能解決。
Peggy 有一個曲折的開端。第一個嘗試把 Cosmos 和以太坊連線起來的是一個叫 ETGate 的駭客馬拉松專案,但後來證實 ETGate 需要大量消耗 Gas。ETGate 是由 Joon 設計的,他是第二屆 HackAtom 的大獎獲得者。他也加入了 Cosmos 開發 Peggy。
ETGate 最初嘗試直接將 Cosmos 樞紐(Hub)和以太坊連線起來的。它嘗試在 EVM 內部編譯出相容性。就像這樣:
[ 以太坊 ] <- ETGate -> [ Cosmos 樞紐 ]
當面對 Tendermint 和以太坊使用不同的構件的問題時,這種設計是非常不實用的。Tendermint 中使用的每一個基礎構件都與以太坊中的基礎構件不相容。事實證明,嘗試在 EVM 中客服相容性問題、構建可互操作區塊的成本非常昂貴。
以下是構建可互操作區塊的模組分析:
- 序列化格式: Tendermint 的序列化物件的編碼方法是 go-wire。以太坊用的是 RLP (Recursive Length Prefix)。
- 簽名方案: Tendermint 使用的是 ed25519,而以太坊用的是 secp256k1。
- 資料結構: Tendermint 把鍵值對存在 IAVL+ 樹中,而以太坊把它們存在 Patricia 樹中。
ETGate 的設計消耗大量計算資源,因為它在 EVM 中解碼 IBC 資料包。IBC 資料包中的內容是 Tendermint 頭、交易、IAVL+ 樹證明和 ed25519 簽名。
在意識到我們可以透過把解析轉換機制放在 EVM 之外,即定製的區塊鏈中完成,此方式將節省大量 Gas,Peggy 的設計思路就變得清晰了。
Peggy 的 5 個組成部分
- 以太坊智慧合約:將會有一組以太坊智慧合約扮演資產保管人的角色,它們能夠保管以太坊中的代幣和 Cosmos 中的代幣。
- 見證人(Witness):見證人元件能夠證明以太坊中發生的事件。100 個區塊(也就是最終性門檻)產生之後,見證人會在不具有最終性的區塊鏈上實現偽最終性。它執行一個完全驗證的以太坊節點,以便透過將
WitnessTX
提交到掛鉤分割槽中來證明以太坊中的狀態更改。我們在這裡使用一個共享的安全模型,讓一組 Cosmos 樞紐驗證人同時作為掛鉤分割槽的見證人。 - 掛鉤分割槽:掛鉤分割槽是建立在 Tendermint 上的,用於連線不同型別區塊鏈。它允許使用者執行或者查詢交易。這就是 Cosmos 如何與以太坊進行通訊的。
- 簽名者:簽名者使用以太坊能夠解析的 secp256k1 簽名方案對資訊進行簽名,以便智慧合約能夠高效地驗證簽名。簽名元件透過
SignTx
訊息生成一個 secp256k1 簽名並將其釋出到掛鉤分割槽中,以便在管道中的智慧合約中轉發事務進行驗證。 - 中繼器: 中繼器元件批次轉發交易資訊。這些交易由簽名者模組進行簽名後被轉發到以太坊智慧合約中。
總結
現實世界中的例子:把 Cosmos 中的代幣轉到以太坊中
例如,你想取出一些 Cosmos 的 Photon 代幣並且把他們變成等值的以太幣。該怎樣利用 Peggy 完成的呢?為簡單起見,我們會略去低層次的技術細節,只描述主要的流程。
- 首先從 Cosmos 樞紐中開始。你先透過 IBC 協議把一些 Photon 轉移到掛鉤分割槽中。掛鉤分割槽接收到傳來的 IBC 資料包:一個包含傳送 Photon 代幣的訊息。簽名者監視著這個掛鉤分割槽並且對這些 IBC 交易進行簽名,高效的把這些簽名轉換為以太坊能解析的 secp256k1 格式的私鑰。這樣一來,你的交易就在掛鉤分割槽上完成了簽名。
- 關注這個掛鉤分割槽的中繼器等到他們看到超過 2/3 的簽名者這個交易進行了簽名,然後將你簽署的交易批次處理為透過 IBC 傳送的所有其他交易的清單。然後他們把附有簽名的列表轉發到以太坊智慧合約執行的 EVM 上。
- 以太坊智慧合約接下來檢查交易列表是否有效。針對 Photon 智慧合約會生成它的 ERC20 版本。智慧合約產生 ERC20 Photon 之後,它將 ERC20 Photon 傳送到你在以太坊主網中的地址上。
- 此時,你可以方便地透過例如 0x protocol 或是 OmiseGO 這樣的 ERC20 去中心化交易所(DEX)把 ERC20 Photons 轉換成ETH。
最後
我們正在進行 Peggy 的早期設計。相關以太坊智慧合約已經編寫完成並且正在進行測試。在許多方面上,Peggy 甚至比 Cosmos 樞紐更加複雜。為了使其能正確的執行,Peggy 將需要進行數次迭代。大家可以期待 Peggy 在今年下半年上線,也就是在 Cosmos 主網上線後。對於以太坊專案而言,很多問題都亟待解決:可擴充套件性解決方案的需求,吞吐量的增加以及降低執行成本。以上問題都十分重要。因此,Peggy 的部署是重中之重,在開發其餘生態系統專案的同時,Cosmos / Tendermint 團隊已經將其大部分資源用於 Peggy 的開發。
正在進行的工作
以太坊智慧合約一旦部署之後就無法修改,因此非常難以更新。在智慧合約更新管理方面還缺乏組織結構。Peggy 的發展路線圖迫使我們應對這種不確定性,但這是我們希望能夠產生具體解決方案的一個研究領域。