淺談波卡平行鏈訊息傳遞機制 HRMP

摘要:

本文根據 Polkadot github 第 1900 號合併--Implement HRMP,先介紹了 Polkadot 跨鏈相關的背景知識、HRMP 相關的基本概念,然後分析了 HRMP channel 通訊的基本過程, 並與 Polkadot 跨鏈最終方案 XCMP 進行了對比分析。

背景:

Polkadot 是一個 Relaychain+Parachain 組合的多鏈系統。

Parachain 的提出背景是為了解決區塊鏈可擴充套件性 (Scalability) 和靈活性 (Flexibility):

· (1)透過累加多個 Parachain 的 TPS,提高整個多鏈系統的吞吐量。
· (2)針對不同的業務場景,Parachain 可進行專門定製。簡單說, Parachain 就是一個實現分片 (Shard) 的例子。而 Relaychain 做為 Polkadot 多鏈系統的中樞, 則為 Parachain 提供了一致性安全保證及跨鏈訊息路由機制。那麼 Parachains 之間如何進行跨鏈通訊呢?  HRMP(Horizontally Relay-routed Message Passing - 水平中繼路由訊息傳遞)便是其當前的解決方案。

一、 Relaychain 和 Parachain 拓撲邊界

上圖中: 1 Relaychain + Parachain A + Parachain B

· Relaychain: 4 個 Validator (Relay1,Relay2,Relay3,Relay4)
· Parachain A: 1 個 Collator + 1 個 Full node + 1 個 Light node, 及 2 個 Validator(Relay1,Relay3)
· Parachain B: 1 個 Collator + 1 個 Full node + 1 個 Light node, 及 2 個 Validator(Relay2,Relay4) 。Collator 是一類連線在每· 個 Parachain 和 Relaychain 之間的特殊節點, 即一部分連線 Parachain,一部分連線 Relaychain。這樣做至少有兩個理由:
· (1) 透過它可以直接將 Parachain block 傳送到 Relaychain 網路,從而被隨機分配的 Validator 接收並驗證。
· (2) Collator 做為 Relaychain 的 Full 或 Light 節點保持和 Relaychain 的同步, 能及時接收到新的 Relaychain block 通知,這個資訊被用於 Parachain 的共識和出塊機制。

二、 HRMP 相關概念

根據 Web3 基金會的術語表,和 HRMP 相關的概念如下:

· UMP: (Upward Message Passing) A vertical message passing mechanism from a Parachain to the relay chain。
· DMP: (Downward Message Passing)。Message passing from the relay-chain to a Parachain。
· VMP: (Vertical Message Passing) A family of mechanisms that are responsible for message exchange between the relay chain and Parachains。

· HRMP: (Horizontally Relay-routed Message Passing)。A mechanism for message passing between Parachains (hence horizontal) that leverages the relay-chain storage。Predates XCMP。

· XCMP (Cross-Chain Message Passing) A type of horizontal message passing (i。e。between Parachains) that allows secure message passing directly between Parachains and has minimal resource requirements from the relay chain, thus highly scalable。

總結一下:

UMP 是 Parachain 到 Relaychain 的訊息傳遞。
DMP 是 Relaychain 到 Parachain 的訊息傳遞。
VMP = UMP + DMP
HRMP 是 Parachain 之間訊息傳遞的過渡方案,它把跨鏈訊息存在了 Relaychain 上,嚴重佔用 Relaychain 的儲存資源。
XCMP 是 Parachain 之間訊息傳遞的終極方案, 允許 Parachain 之間直接傳遞資訊且只佔用 Relaychain 最小的資源。

三、HRMP Channel 時序圖

(1) Parachain A 和 Parachain B 都向 Relaychain 提交註冊。
(2) Parachain A 向 Relaychain 發起建立到 Parachain B 的訊息通道的請求 (cap: 當前允許接收的最大訊息數, max: 當前允許接收訊息的最大位元組數)。
(3) Router::init_open_channel 被呼叫的同時, Relaychain 透過 DMP 機制向 Parachain B 傳送 HrmpNewChannelOpenRequest 訊息。
(4) Parachain B 收到 HrmpNewChannelOpenRequest 訊息後, 向 Relaychain 回覆接受建立 (para_a, para_b) 的訊息通道的請求。
(5) Router::accept_open_channel 被呼叫的同時, 通道被建立, Relaychain 透過 DMP 機制向 Parachain A 傳送 HrmpChannelAccepted 訊息。
(6) Parachain A 收到 HrmpChannelAccepted 訊息後, 向 Relaychain 傳送到 Parachain B 的訊息 data
(7) Router::queue_outbound_hrmp 將 Parachain A 的訊息出口佇列 data 轉移到 Parachain B 的訊息入口佇列
(8) Router::prune_hrmp 從 Parachain B 的訊息入口佇列查詢並返回訊息 data (watermark 是 Relaychain blocknumber, 表示小於這個高度的傳入訊息都已被處理)
(9) Parachain A 向 Relaychain 發起登出到 Parachain B 的訊息通道的請求。
(10) Router::close_channel 被呼叫的同時, Relaychain 透過 DMP 機制向 Parachain B 傳送 HrmpChannelClosing 訊息。
(11)  通道後設資料被刪除。

四、HRMP vs XCMP

我們對比一下 Web3 基金會定義的 XCMP, 假定按照 Gossip 演算法傳送訊息。

(1) Parachain 之間有相同節點

圖中顯示了基於 Gossip 演算法傳遞訊息的情況,假定由最新產生 ParaBlock 的 Parachain A 網路中的 Collator 節點發起

跨鏈訊息將直接從 Parachain A 網路傳遞到 Parachain B 網路。

(2) Parachain 之間沒有相同節點

圖中顯示了 FallBack 方式傳遞訊息的情況,他們之間沒有共同的全節點
我們假設 Parachain A 向 Parachain C 傳送跨鏈訊息。

當 Parachain C 的 Validator 通知跨鏈訊息沒有被傳遞到 Parachain C 時,它們將會向 Parachain A 的 Validator 請求他們 Parachain 出口佇列中的跨鏈訊息,收到相應的迴應後,再按照 Gossip 演算法將跨鏈訊息傳遞到 Parachain C 網路。

當跨鏈訊息被加入到他們的訊息出口佇列時, 跨鏈訊息被儲存在他們平行鏈中的 Collator 節點和Full 節點上。當平行鏈的區塊頭被納入中繼鏈上時, 平行鏈的 Validators 也會儲存這些跨鏈訊息。

為了保證跨鏈訊息的可用性,要求所有的 Validator 儲存跨鏈訊息的糾刪碼,糾刪碼由傳送跨鏈訊息的平行鏈中的 valiadators 生成和分發。只要 Validators 至少儲存了三分之二, 跨鏈訊息就能復原。如果低於三分之二, Validators 將會受到經濟懲罰。以此來保證跨鏈訊息的可用性。

綜上, XCMP 機制中, Relaychain 只保留了跨鏈訊息的 hash, 而跨鏈訊息則以糾刪碼的方式儲存在了傳送跨鏈訊息的平行鏈中的 Collator, FullNode 和 Validator 上。

五、 總結

從語義上講, HRMP 模仿了 XCMP 的業務介面, 將跨鏈訊息儲存在 Relaychain 上使事情變得簡單,同時對 Relaychain 資源要求較高,價格昂貴。

而 XCMP 比較靈活,擴充套件性高,但實現難度大,方案還在演進中。當 XCMP 實現後, HRMP 自然會被遺棄。

參考連結:

Polkadot’s Messaging Scheme
Parachain Implementation Guide
Implement HRMP
Research At Web3
Cumulus Overview

歡迎學習 Substrate: 
https://substrate.dev/

關注 Substrate 進展:
https://github.com/paritytech/substrate

關注 Polkadot 進展:
https://github.com/paritytech/polkadot

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读