作者:CoaX1d;来源:PolkaWorld
在漫长的等待之后,我们终于迎来了一个令人激动的话题:XCMP 的未来形态。
Web3 基金会的研究团队在过去几个月中设计并原型化了 XCMP 技术。XCMP 旨在优化波卡(Polkadot)的跨分片消息传递系统,取代当前的 HRMP(水平中继路由消息传递)系统,将所有计算和链上资源消耗转移到链外。
本文讨论了 XCMP 的设计是如何服务于波卡跨链消息传递的总体目标的。
整体设计考虑
消息的有序或无序传递
是否保证消息送达
如果消息未收到并被丢弃,对发送方或接收方有何后果
消息传递的速度和证明的大小
协议的可维护性、灵活性
安全假设
XCMP 的目标
优化跨分片消息传递,实现快速、可扩展的异构分片区块链系统。
目前有一个叫 HRMP(水平中继路由消息传递)的跨链消息传递实现,但它的不足之处是迫使波卡中继链做大量工作。XCMP 旨在取代 HRMP 系统,并将所有计算和以前的链上资源消耗完全转移至链外。
XCMP 的设计:Merkle 套娃模型
XCMP 具体设计采用 “Merkle Matryoshka Dolls”(Merkle 套娃模型),通过嵌套使用精简的二进制 Merkle 结构来优化证明过程,避免使用状态证明。
套娃过程
将XCMP消息放入最小的套娃——XCMPMessageMMR。
将所有的XCMPMessageMMR根都放入第二个套娃——XCMPChannelTree。
XCMPChannelTree的根进入ParachainHeader。
ParachainHeader进入第三个套娃——ParaHeaderTree。
ParaHeaderTree的根进入最大的套娃——BEEFYMMR。
完成这一切后,我们得到了一个包含所有平行链从所有其他平行链发送的所有消息的单一套娃或根哈希(即 BEEFY 根)。
验证过程
实现/集成方向
XCMP 被设计为 HRMP 的直接替代,将通过简单的模块集成到现有的波卡系统中,保持与现有 XCM 和平行链模块的兼容。
对按需核心时间的适应
XCMP 的设计是否能适应未来的按需核心时间和 corejam 呢?
在波卡网络中,核心时间(Coretime)指的是链上处理能力和资源的分配。“按需” 意味着根据需求动态调整资源分配,从而优化网络性能和效率。
这会带来消息验证的时间敏感性问题。具体来说,如果目标链在一段时间内没有出块,那么在这段时间内发送到该链的消息(通过套娃模型嵌套的证明)将会基于已经过时的 BEEFY 根哈希进行验证。如果目标链未及时更新它的 BEEFY 根哈希,它可能无法验证这些消息的真实性。
为了解决这个问题,建议在证明结构中加入一个额外的层级(新的套娃)。这个新层级的加入可以让目标链的收集人首先识别出这个证明将会失败,然后对原始的证明进行小幅修正,以适应更新的 BEEFY 根。通过这种方式,即使目标链在较长时间内没有生成新的区块,也能有效地处理和验证旧的消息。添加这个新层级对于中继者(Relayer)来说是一个较小的步骤,并且不需要目的地链额外增加存储空间。
因此,尽管波卡网络尚未实现按需核心时间功能,但 XCMP 的设计是面向未来的,它提供了一种方法来解决按需核心时间带来的额外复杂性,保证了系统的灵活性和消息的可验证性。
结论
XCMP 的设计和原型在本地测试网上已经完成,并将进一步实施。
XCMP 标志着波卡的跨分片消息传递能力进一步提高,增强了其互操作性。XCMP 的未来设计将持续关注社区的反馈,以满足更广泛的需求。