深入了解波卡跨共识消息 XCM(3)
加入 PolkaWorld 社区,共建 Web 3.0!
在近期的 Zero Knowledge 播客节目中,Parity 联合创始人 Rob Habermeier 分享了 XCM 如何允许平行链相互通信。本文是该播客的第三部分,点击跳转至第一部分、第二部分。
AnnaRose:
我想举一个隐私相关的例子。想象有一个隐私平行链,做的事情很简单,就是隐私化的 Swap。那么整个跨链交互的过程是怎样的呢?
Rob:
如果你有类似账户抽象的东西,就像智能合约代表用户行事一样,你有一个用户生成某种零知识证明,将其发送到平行链 X,然后将零知识证明转发给隐私平行链。隐私链确定某些事情正在发生,例如 Swap。然后你在这些类型的私有系统中拥有某种类型的标识符,代表已经存入的东西或已经完成的交易,或者拥有的 LP 代币,这个标识符可以通过 XCM 发回。那么你就能对存在于零知识生态系统中的 Claim 拥有透明的跨链托管。
AnnaRose:
哇,这太酷了。事实上,你说你实际上可以通过 XCM 发送证明,所以你可以发送相当复杂的东西。所以另一个问题是,你可以用 XCM 发送什么样的东西呢?因为听起来好像什么都能发,而不仅是做代币转移,或者对发送的内容真的有什么限制吗?
Rob:
你可以通过 XCM 发送消息,就像在任何智能合约或任何链的任何子组件上调用任何函数一样。然后你甚至可以将其结果放入一个保持寄存器中,然后将其转发到另一个链,这样你就可以有多跳。你可以让 XCM 说 “我想在这个智能合约上调用这个函数,如果成功了,那么我甚至还想发到另一条链”。所以你可以做的是你可以设置这些多跳指令,这些指令是协议自动的。因此,你只有大量的数据和操作。
AnnaRose:
听起来像是在包装数据吗?证明是要依赖于它吗?你只是把它当作一个标识符回传给这个东西,还是真的在发送实际的证明?
Rob:
你会发送证明,但这只是你对其他链的调用的一部分,比如,我想用这些参数调用这个函数。这个函数就是 “我接受与这个电路相对应的证明”。因此,证明实际上是在其他链中的其他地方提交到系统中的。然后它会跟着 hop,然后最终进入端点。因此,用户现在实际上不必直接在该智能合约上调用该函数。对于零知识证明,你总是需要在链下创建它们,这是个问题,但你不一定需要用户将其提交到直接处理它们的链。
AnnaRose:
但是你必须验证它们,这是我很好奇的验证部分 —— 验证发生在哪里?
Rob:
验证将发生在接收 XCM 的链上。但我想这就是你可以进入 If-Then-Else 情况的地方。即我们将把包含这个证明的消息发送到这个链,然后这个链将检查该证明是否有效,如果它有效,它会更新一些内部结构。然后情况确实如此,那么我们就做某一件事,因为我们知道证明实际上是有效的。否则就是它无效,那我们就进入一些错误路径,说 “嘿,那个证明就是垃圾”。我的意思是,你需要为执行时间付费。如果你是提交垃圾证明的用户,那么你需要为此付费,而什么也没发生,你浪费了你的钱和别人的时间。
AnnaRose:
XCM 本身是否可以构建这些证明者和验证者,你们会把这些东西放入 Pallet(模块)里吗?还是说你总是需要在每一边都构建这些东西?
Rob:
现在,你必须在两边都建立它们。我认为挑战在于提出一个合理的抽象,它可以涵盖许多不同的用例或更密集的抽象,集中在一个特定的、非常常见的用例上。
XCM 旨在成为一种可升级的格式。XCM V2 目前正在朝 XCM V3 升级。而且,链可以做某种版本协商。因此可以合理地预期,一旦我们知道多链想要的关于零知识证明的东西是什么,那么这些东西可能会更直接地被包含在 XCM 中或更高层次上。否则,大家将不得不使用 XCM 更通用的一面来构建它们。
AnnaRose:
让我们稍微谈谈 XCM V3,因为你刚刚提到它正在升级过程中。那么现在在 Polkadot 上部署的是哪个版本,V2 吗?
Rob:
对,就是 V2。
AnnaRose:
好的。Kusama 上的版本呢,也是 V2 吗?
Rob:
我记得也是 V2。
AnnaRose:
那么 V3 是什么样子,有什么不同的地方呢?我们之前聊的功能都是 V2 里的吗?
Rob:
大部分是聊的 V2 的。一些更复杂的费用支付和错误处理是 V3 的,但是像储备转账和传送之类都在 V2 中。那么 V3 增加了什么内容呢?
一是通过桥支持 XCM,也就是跨共识消息。这就是说,Polkadot 上的平行链可以通过桥与 Kusama 上的另一个平行链通信。还会有中继器,因为我们正在跨越共识分歧。甚至可以与 Cosmos 生态中基于 Substrate 的或实现了 XCM 的链进行通信。在短期内,将 XCM 添加到 Cosmos 链的最简单方法是用 Substrate 实现你的链,对于以太坊也是同样的道理。总的来说就是 V3 增加了一些对桥接有用的原语。
它还增加了对 NFT 的支持。所以不仅支持同质化代币,还可以用 XCM 转移 NFT。
还增加了多阶段费用支付。就是用一种更人性化的方式,让链为其他链上的执行付费。
AnnaRose:
你们是如何设想 XCM 与其他桥一起工作的?是不是说,你会有一个桥,就像 Nomad 或 AXR 一样,它们会在自己的某个地方实现 XCM,然后允许它与自己的桥交互吗,这是你们设想的方式吗?还是说会有一个全新的桥,建立在两个 XCM 端点之上,可能一个在 Polkdadot 内部,一个在它之外?
Rob:
是的。你需要可以支持任意数据的桥,我知道有很多桥都是可以支持的。实际上桥并不是最重要的,而是两端的适配器,所以你其实是把这个虚拟机和 XCM 消息的执行放在桥的两端。当然,现在你必须对安全假设进行更多分析,并且必须更加积极地配置该虚拟机,让它不会表现更差,因为它来自另一个共识环境。
有意思的是,桥本身并不太重要。但是我认为基于轻客户端的桥是最好的选择。原因是,首先我不喜欢多重签名桥,我觉得除了喜欢赚很多钱的人之外,没人会喜欢吧。轻客户端桥比较安全,但问题是它们非常耗 gas,而且进行轻客户端证明检查的成本很高。但轻客户端桥可以快速安全地传递数据,这很棒,只不过对于 Layer 1 做轻客户端桥的实现来说有点贵。
还有就是 Optimistic 桥,更适合同质化的场景。比如在做市的时候,可以对还没有到账的代币做事,然后当它们在 “欺诈期” 之后到达时,我们会收集到可观的利润。但在消息内编程方面它的表现就没那么好了,因为你要怎样去对一个应用做市呢?但是可能会有一些可以利用 Optimistic 桥的用例,但是我可能会比较担心用户体验。
AnnaRose:
Rob,非常感谢你带领我们走上了解 XCM 和 XCMP 的旅程。感谢你带我探索所有这些我好奇了蛮久的问题。我真的很想去使用一下 XCM,因为现在能在 Polkadot 上使用它来发送一些东西了吧。现在有没有什么我们可以用用的东西?
Rob:
各个通道现在正在打开中。第一个通道是,你可以将代币发送到 Statemine,还可以将它们发送回去。但现在平行链之间的通道刚开始开放,这至少需要几天,但可能需要几周才能稳定下来。(注:本播客录制于 4 月,目前 XCM 已经上线至波卡,平行链间已经开启了若干通道)
AnnaRose:
酷,再次感谢 Rob 的到来。
Rob:
Cheers。
原播客:https://zeroknowledge.fm/229-2/
翻译:PolkaWorld
PolkaWorld Telegram 群:
t.me/polkaworld
PolkaWorld Youtube 频道:
https://www.youtube.com/c/PolkaWorld
PolkaWorld Twitter:
@polkaworld_org
PolkaWorld 网站:
https://polkaworld.pro/
更多内容
关注 PolkaWorld
发现 Web 3.0 时代新机遇
点个 “在看” 再走吧!