风险提示:请理性看待区块链,树立正确的货币观念和投资理念,不要盲目跟风投资,本站内容不构成投资建议,请谨慎对待。 免责声明:本站所发布文章仅代表个人观点,与CoinVoice官方立场无关

浅谈波卡平行链消息传递机制 HRMP

PolkaWorld
2020年11月13日

浅谈波卡平行链消息传递机制 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 拓扑边界

浅谈波卡平行链消息传递机制 HRMP

上图中 : 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 相关概念

浅谈波卡平行链消息传递机制 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 时序图

浅谈波卡平行链消息传递机制 HRMP

  • (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 之间有相同节点

浅谈波卡平行链消息传递机制 HRMP图中显示了基于 Gossip 算法传递消息的情况,假定由最新产生 ParaBlock 的 Parachain A 网络中的 Collator 节点发起

跨链消息将直接从 Parachain A 网络传递到 Parachain B 网络。

(2) Parachain 之间没有相同节点

浅谈波卡平行链消息传递机制 HRMP图中显示了 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

浅谈波卡平行链消息传递机制 HRMP

更多内容:

视频图解 XCMP:波卡平行链消息是如何跨链传递的?

波卡 XCMP 跨链消息传递最新进展|波卡 Wiki

Polkadot 的跨链消息传递方案(XCMP)

话题|波卡的跨链信息传递 (XCMP) 意味着什么?

扫码关注公众号,回复 “1” 加入波卡群

浅谈波卡平行链消息传递机制 HRMP

关注 PolkaWorld

发现 Web 3.0 时代新机遇

点个 “在看” 再走吧


声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。

评论0条

PolkaWorld

简介:波卡(Polkadot)第一中文社区,带你寻找 Web 3.0 时代新机遇!

专栏

更多>>