http://www.admarmetal.com

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

作者:Fatemeh Shirazi、Logan Saether、Alistair Stewart、Rob Habermier、Gavin Wood

最近几个月,Web3 基金会的研究团队一直在做跨链消息传递(XCMP)功能的文字概述。它是 Web3 基金会王牌项目 Polkadot 的关键组件。我们很高兴与您分享我们的工作!

跨链消息传递(XCMP)方案是 Polkadot 协议的一个子集。它定义了在除了共享中继链的安全性之外没有其他的信任假设的情况下,消息如何得以在平行链之间传递。这篇文章阐述了平行链的消息传递协议,并在很大程度上依赖于 Polkadot 独特的中继链体系结构和设计。

协议包括:

· 就共识而言:消息的排队和排序机制。
· 与中继链的其他部分结合,特别是 GRANDPA 的最终确定机制:数据可用性。
· 与平行链验证功能结合使用:消息输入和输出。
· 此外,本文还回顾了交付、如何实现一致的历史记录以及防止DoS攻击的想法。最后,我们结合 SPREE 回顾了 XCMP,并总结了 XCMP 所实现的特性来结尾。

消息语义和网络细节(如对等发现)在本文中没有提到。

介绍

Polkadot “1.0 版” 的一个关键特性,是让原本隔离的平行链以安全和去信任的方式在彼此之间发送消息。

出于此目的,我们定义 message 的方式与定义 transaction 的方式基本相同。两者都是指来自接收链以外的数据,而且都暗示并要求链按照其内部逻辑对数据做出反应。考虑到实际系统的延迟水平,链不能拒绝或混淆数据的含义。例如,在一分PK10的语境中,这种属性意味着一分PK10中的有缺陷或恶意的矿工不能重新分配资金,因此这是一个好的加密经济共识系统的基础。

transaction 和 message 之间的关键区别在于,transaction 包含一个签名,以证明数据的出处(从而证明指令的权威性)。而对于 message,出处仅通过 Polkadot 的抗拜占庭加密经济验证基础设施来证明,在很大程度上跟以太坊合约间消息传递的方式是一样的。

例子

在详细讨论 XCMP 的每个组件之前,让我们先举一个例子,说明如何将某智能合约平行链(图 1 中的 A)上的出站消息连接到某分布式金融(DeFi)平行链(图 1 中的 B)的入站队列,以便从 DeFi 平行链的收集人(collator)进入下一个候选区块。

在中继链 300 区块高度,智能合约平行链发起针对“32”的端点的消息,该端点是DeFi平行链的平行链ID。消息将首先包含在智能合约平行链的出站或出站队列中。

智能合约平行链的所有节点将开始在网络中对消息进行八卦(参见下面的“传递”一节)。如果智能合约链中的某些节点也是 DeFi 链的完整节点,并且这些节点通过转发消息来充当两个八卦网络之间的粘合剂。如果不存在需要遍历的网络共享节点,则调用回退(请参阅下面的回退部分)机制。

一旦消息到达 DeFi 平行链的收集人,它们就会接收此消息(以及它接收到的任何其他消息)并将其输入入站或入口队列,以便在其下一个候选块中进行处理。

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

图1:显示了两个平行链 A 和 B 对应的收集人和全节点。有两个节点同时是平行链A网络和平行链 B 网络的全节点。

DeFi 平行链上的收集人将产生中继链区块 301 的候选块。此候选块将要求证明它从 A 的块上执行的消息是正确的消息。中继链块 300 包含 A 中区块的平行链区块头,也就是包括可用于认证消息的消息根散列的少量数据。

此候选块将包括中继链轻客户端证明,证明此消息根位于中继链中,并将此证明与发送链发送的消息一起组合。

DeFi 平行链的平行链验证人将能够使用这些证明,来验证来自 DeFi 平行链的提议候选块的完整性。随后,智能合约链的原始消息被包含在了 DeFi 平行链中,无需额外的节点提供安全性,并依赖于来自 Polkadot 的共享安全。

排队和排序消息

Polkadot 中的每个平行链的区块都可能生成一个空的消息列表发送到其他块。这些列表被称为出口队列(egress queues)。一旦消息被发送,它就进入平行链的入口队列。平行链必须按顺序处理入口列表。

一个收集人或验证人试图为某个平行链的出口队列收集消息,它调用该平行链的入口,并在传播池中搜索相关消息,等待尚未被八卦的消息。

传递消息

假设每个平行链都有一个全节点的连接网络。我们假设每个完整节点都知道系统中其他完整节点的子集,我们称之为相邻节点。请注意,我们对这些网络的拓扑结构和直径没有任何假设。

发送消息的最简单方法是使用八卦协议(gossip protocol)。回想一下,同龄人之间经常就他们对当前假期的看法进行交流。为了实现更高效的传递,未发送的消息只会被传递到具有相同视图的相邻节点。

如果这两个网络之间有共同的节点,消息将从一个平行链网络传播到另一个平行链网络。

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

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。