加入PolkaWorld 社區,共建Web 3.0!

Polkadot 的首批5 條平行鏈在12 月18 日成功上線,這標誌著波卡正式跨入“平行鏈時代”。大家很期待看到的,就是平行鏈之間的跨鏈交互將帶來什麼樣的創新和網絡效應。

在這篇文章中,我們就來了解一下波卡平行鏈之間跨鏈互操作的基礎—— XCMP 協議。

XCMP 是什麼

XCMP 全稱是“跨鏈消息傳遞協議(Cross-Chain Message Passing)” ,它是波卡的跨鏈消息傳遞協議之一,規範了同一中繼鏈的平行鏈之間跨鏈傳遞消息的方式。

XCMP 協議用了一種基於Merkle 樹的簡單排隊機制,以確保跨鏈信息的準確性。

XCMP 的意義——平行鏈間的互操作性

平行鏈之間能夠互相跨鍊是波卡設計的核心要素之一,它讓波卡生態成為一個互聯的多鏈生態系統。

波卡架構示意圖

傳統的區塊鍊是高度孤立的,雖然在自己鏈的生態內的合約之間可以互相調用,但各區塊鏈之間的跨鏈困難重重,就像一個個閉關鎖國的國家。

而波卡的願景是促成一個多鏈生態,接入波卡中繼鏈的每條平行鏈不需要全能,而是可以專注做自己擅長的事,朝著那個方向去優化,再通過跨鏈來和其他的平行鏈交互來取長補短。

例如,一個遊戲開發商想在波卡的多鏈生態中開發一款遊戲,它可以讓遊戲運行在一條性能良好的遊戲平行鏈上,使用NFT 平行鏈提供的遊戲角色作為素材,使用DeFi 平行鏈提供的穩定幣作為遊戲道具的交易媒介。

這樣一來,各條平行鏈就像開展自由貿易的國家一樣,可以發揮自己的比較優勢。隨著平行鏈越來越多,其他平行鏈可以利用的“組件” 也越來越多,從而開闢出更多新的使用場景,形成網絡效應。

而做到這一切的前提,就是平行鏈之間要能夠有一套跨鏈的協議,來規範整個消息傳遞的過程,就像國際貿易中要有通行的貿易準則一樣。這套協議就是XCMP。

需要說明的一點是,XCMP 能跨的不僅僅包括資產。平行鏈之間不僅可以使用XCMP 發送token,還可以發送任何類型的數據和消息,比如平行鏈之間可以跨鏈調用合約。這意味著,類似於以太坊中合約之間的可組合性,波卡的平行鏈之間可以擁有鏈層面的互操作性,也可以說是跨鏈可組合性。

如果你想進一步了解XCMP 的意義,可以查看我們之前的這篇文章,裡面有波卡生態多位開發者對XCMP 的解讀。

XCMP 如何工作?

波卡網絡中有兩個重要的參與者——驗證人節點和收集人節點。

驗證人節點在中繼鏈上,負責中繼鏈的出塊,它們會驗證收集人提供的候選區塊。

收集人節點在平行鏈上,每條平行鏈的收集人都是中繼鍊和該平行鏈的全節點,它們會收集平行鏈的交易,並為驗證人提供候選區塊。除此之外,收集人還會通過XCMP 發送和接收來自其他來自其他平行鏈的消息。

假設平行鏈A 的一個合約想要向平行鏈B 發送一條消息,從而調用B 鏈上的一個合約,來在B 鏈中進行資產轉賬。

A 鏈的收集人會把這條消息和其目的地、時間戳一起,放到A 鏈的輸出隊列中。

B 鏈的收集人向網絡請求新消息時發現了這條消息,然後把它放到自己的輸入隊列中。

A 鍊和B 鏈的驗證人也會各自讀取輸出和輸入隊列,所以它們可以驗證這條消息傳遞確實發生了。

當B 鏈的收集人在B 鏈上出下一個塊的時候,就會從輸入隊列中處理到這條新消息,這條消息就會在B 鏈上執行合約,按照計劃完成資產轉賬。

然後收集人把這個區塊提交給驗證人,驗證人會驗證這條消息已經處理過了,並且其他方面也沒問題,於是驗證人就會把這個區塊包含到中繼鏈上。整個跨鏈消息傳遞的過程就結束了。

下面是一個Parity 製作的科普視頻,描述了XCMP 如何工作。

XCMP 的設計

XCMP 目前正在開發中,細節可能會有變化。但是,總體架構和設計決策如下:

跨鏈消息不會傳遞到中繼鏈。跨鏈消息的規格會有上限(為以字節為單位)。平行鏈可以攔截來自其他平行鏈的消息,在這種情況下,調度平行鏈將知道這個區塊。收集人節點負責在鏈之間路由消息。收集人生成一個“輸出(engress)” 消息列表,並將從其他平行鏈接收“輸入(ingress)” 消息。在每個區塊,平行鏈應該從所有其他平行鏈的某個子集路由消息。當收集人出了一個新的區塊來交給驗證人時,它將收集最新的入站隊列信息並進行處理。驗證人將檢查下一個平行鏈區塊的新候選塊包含了對該平行鏈的預期入站消息的處理。

XCMP 隊列必須首先通過打開兩個平行鏈之間的通道來啟動。通道由發送方和接收方的平行鏈辨識,這意味著它是一個單向通道。一對平行鏈之間最多可以有兩個通道,一個用於向另一個鏈發送消息,另一個用於接收消息。通道的打開需要DOT 押金,當通道關閉時將返還押金。

XCMP 方案可以實現以下屬性:

去信任性:由於同一組驗證人在保證正確消息傳遞的同時確保一個平行鏈與另一個平行鏈的安全,XCMP 所需的信任不超過單個區塊鏈所需的信任。一致性:提供了絕對的保證,即接收到的消息與發送的消息完全一致,即使有任何鏈重組。有效性:Polkadot 保證消息不會丟失並保持可用。這是通過分發可用於重建消息的糾刪碼片段來實現的。保持正確的序列:通過輸入/輸出驗證,可以保證保持平行鏈區塊輸出消息的正確順序。效率:這個協議避免了太多的帶寬佔用,並讓消息盡快到達。

XCMP vs XCM

XCMP 和XCM 的簡寫相似,但實際的含義相差甚遠。為了避免混淆,我們也在這裡做一下區分。

XCM 是波卡中的跨共識消息格式(Cross-Consensus Message Format)的簡稱,它是一種消息格式,而不是一種消息傳遞協議。也就是說,它本身並不能在系統之間發送消息,它更像是一門語言,僅僅是表達接收者應該如何理解消息。

XCM 是“跨共識” 的,所以它不僅可以用於通過XCMP 、橋等來跨鏈發送消息,還可以用於在不同的系統(如智能合約和Pallet)之間傳遞消息。

XCMP 進展

目前XCMP 在開發中,還未上線。目前平行鏈間跨鏈通信使用的是過渡方案HRMP(水平中繼路由消息傳遞),比如Karura 和Bifrost 之間的跨鏈就用到了HRMP。等到XCMP 上線後,HRMP 就會光榮退休。

HRMP 與XCMP 有同樣的功能,區別是,它對資源的消耗要大得多,因為它將所有的消息都存在中繼鏈存儲中,而在XCMP 中只有和消息關聯的元數據會作為哈希存儲在中繼鏈存儲中。

波卡創始人Gavin Wood 博士在最近的新年社區答疑視頻中也表示,2022 年Parity 的重點開發工作就包括了繼續提升XCMP 的性能。

PolkaWorld Telegram 群:t.me/polkaworldPolkaWorld Youtube 頻道:https://www.youtube.com/c/PolkaWorldPolkaWorld Twitter:@polkaworld_orgPolkaWorld 網站:https://polkaworld.pro/