使用“扫一扫”即可将网页分享至朋友圈。
深入了解波卡跨共识消息 XCM(2)
在近期的 Zero Knowledge 播客节目中,Parity 联合创始人 Rob Habermeier 分享了 XCM 如何允许平行链相互通信。本文是该播客的第二部分。
AnnaRose:
有个概念叫碎片化。例如,如果在两条链之间,你用了多个桥去连接相同资产,这些资产在某一端是合成的,那么如果你有多个版本的桥接资产,就可能会导致碎片化。这样可能会出现有趣的套利机会,但我认为这也削弱了很多东西。你们有一个储备的概念,是不是说在 Statemine 上可能会有 USDC,然后其他链可以直接通过 XCM 使用它,而不是通过其他桥,这有点像是网络中的规范 USDC。你们是这样设想的吗?
Rob:
是的,差不多。我们以 USDC 作为例子,各条链获得的本质上是 Statemine 上对 USDC 的声明,那么你就不需要有 USDC 的各种包装过的(Wrapped)版本,只需要把 Statemine 作为 USDC 代币的可信储备。
AnnaRose:
但是如果有其他桥存在,也还是会遇到同样的问题。就像如果你用另一个桥桥接来自以太坊的 USDC,你又有它的 Statemine 版本,两种 USDC 都来了,那么你在平行链 X、Y、Z 上还是会有同样的碎片。
Rob:
我猜是会有这种情况的。这是市场需要处理的问题。
AnnaRose:
如果你有多个枢纽,会出现问题吗?就像你在 Statemine 中有某种规范的资产,它会移动到平行链 A,然后使用 XCM 将它更进一步移动到另一条链。这些枢纽是否造成了一些问题,还是说它总是以某种方式指向原始来源?
Rob:
是的。这种应用的工作方式是,你总是会接触到 Statemine/Statemint 链的基础。所以任何枢纽实际上都是接到储备资产然后再出去的,而不是从一条链直接接到另一条。传送不是这么运作的,但在储备资产转移中是这样的。
AnnaRose:
好的。而且你提到了可信传送者,这是否意味着平行链本身是受信任的,是不是你将一些平行链列入传送白名单,但可能还有其他你未列入白名单的平行链仍在传送东西,你只是不认可而已。我其实不明白你如何让它可信。
Rob:
好吧,举例来说,在 Polkadot 和 Kusama 生态系统中,DOT 和 KSM 的可信传送者链是我们所说的系统级公共利益链,例如 Statemint/Statemine,所以只有它们是 Polkdadot 治理信任的可以正确地铸造和销毁 DOT/KSM 的链。
你或许可以建立某种侧通道或其他方法,XCM 的其他功能之一是你可以从一个链到另一个链进行任意函数调用,所以你可以想象两条链建立一个协议,他们通过这个协议铸造/销毁彼此的代币。这取决于生态平行链的治理,治理可以决定他们信任哪些其他生态来正确铸造和销毁他们的代币。这就是我说的 “可信” 的意思,也就是除非通过了发行链的治理的同意,否则不允许这样做。
AnnaRose:
我不明白这个过程发生在哪里。这个规则是内置在 XCM 中的吗?比如它说这些平行链可以做出这个选择,或者是说平行链本身可以决定这个,并排除其他链。而且我不明白他们如何排除其他链。
Rob:
这主要取决于代币的分类是什么。因为代币,例如平行链上的一些代币,通常用于发行链上的某种服务或流程。重要的是,你在另一条链上拥有的代币,是通过一系列操作,对存储在发行链上的那些服务或基础资产的有效声明。为此,对于发行链,最终必须将外链代币识别为自己的。那么,如果是通过储备的方法,那么它总是跟踪余额并确切地知道每个其他链有多少。如果是传送,比如某个链来找我说,“我有一千个你的代币,我想传送过来”。你没有权力这样做,我不认这些代币。这意味着存在于另一条链上的代币实际上毫无价值,它们其实并不对应于对服务或资产的声明。
AnnaRose:
但你们怎么阻止这种情况呢?我是在想,如果它是一个智能合约平行链,并且可以创建一个智能合约,这就像充当桥的一侧。可能这就是我理解错了的地方,我一直认为它像智能合约一样,在另一边也有一个智能合约,两者可以互相交谈,但实际上可能 XCM 的运作方式不同?是不是我对传送者的工作方式理解错了?
Rob:
首先,你可以在 XCM 上构建任何类型的协议,因为它支持任何图灵完备的函数调用。它能做的一件事就是支持费用支付机制,就像在其他链上支付 gas 费一样。但说到储备资产和传送资产,在 XCM 中什么是优先的。我们用 Substrate 处理链设计的方式是模块化,你有不同的组件,比如一个智能合约执行组件、一个治理组件等,打包在一起就形成了你的链,而其中一个组件就是 XCM 执行器。
XCM 实际上是一种编程语言,它不是图灵完备的编程语言,但的确是一种编程语言。还有一个跨共识虚拟机 XCVM,来执行这些指令。当你让一条用 Substrate 编写的链使用 XCM 时,你所做的是将 XCVM 连接到你的链,并使其成为你的链的一部分。你说 “这是处理传入 XCM 指令的东西,它会执行其他链给它的命令”,然后我会继续传递其中的一些内容。就像对于这个函数调用,你可能会创建某种自定义适配,比如 “将函数调用视为智能合约调用”,或者你可能会说 “将它们视为买单”/“将它们视为卖单” 等等。所以它是可插拔的,你可以将自己的逻辑插入其中,你可以将这种基础级别的虚拟机引入你的链中。
AnnaRose:
XCM 或 XCVM 是否内置有白名单和黑名单,它是否已经决定了 “这是一个平行链,这是一个原生平行链代币,它们被允许存在于这些地方”。我觉得应该不是吧,我想象它应该是更无需许可的?有点像每个链都可以决定他们觉得谁是值得信赖的传送者。我只是不明白为什么你无法将这些代币注入到这个新的平行链中,具体是如何防范的?因为它似乎是无需许可的。
Rob:
这是一个很好的问题。它是关于一条链如何引用和识别另一条链的解决方法。所以有一个来源的概念,即消息的发起者。如果你只看一个智能合约系统,来源就是它的账户。在以太坊上,它们被称为 20 字节十六进制字符串,要么是公钥的哈希,要么是一堆合约创建参数的哈希。那么现在,当你谈论从其他链接收消息时,你需要知道从哪个链,以及从该链上的哪个账户接收消息,这就是你进行许可的方式。如果你收到一条消息,你将验证某些来源来做不同的事情。
来源系统的工作方式有点像文件路径或 URL。有一种通用的来源,有点像是整个世界。然后你在其中有共识机制,比如 Polkdadot 或 Kusama,就像主权区域。然后下面有平行链,再下面有账户。在链如何确定它们自己的来源上,是比较灵活的,比如它们链上的来源有什么,取决于它们自己。你可以让智能合约成为链的有效来源,因为这只是他们自己的链的一个子来源。XCMP 的职责之一是维护来源 —— 某条消息来自平行链 A,并通过 XCMP 发送给平行链 B,平行链 B 接收数据和消息的来源。
你也可以有相对来源。比如我要提到我的邻居,我不需要说哪个国家、哪个城镇、哪个邮编,我只用说 “就是住在和我隔了三个房子的 Joe”。所以你可以对来源做同样的事情,即相对来源,比如 “这是来自你影响范围内的平行链 X”。
说回到链实际上如何禁止传送,本质上他们可以做的是他们可以配置允许哪些来源将资产传送给他们。所以我会说 “我相信 Joe 会在他那边销毁代币并将它们发送给我”。但是,如果我从 Bob、Alice 或 Eve 那里收到一条消息,上面写着 “嘿,我这边已经销毁了代币了,快把这笔记到你的账户上”。我会说 “我从来没有把我家的钥匙给过你们啊,你谁啊?”
Joe 没有权力给 Alice、Bob 或 Eve 我的钥匙。这种许可是不可传递的,因为最终这些代币必须在我的链上可回收。现在 Joe 可以做一些傻事儿,所以 Joe 有能力在他那边销毁和铸造代币。他可以创建一个系统,在这个系统之上还有更多的代币和衍生品,允许其他链参与,但这是 Joe 的事儿。如果我们觉得 Joe 没有能力在这方面做得很好,那么我们一开始就不应该赋予他铸造和销毁代币的能力。
AnnaRose:
但是,万一 Joe 真的做得很差,衍生品脱离了他的控制,这些衍生品到处都是了。是不是像另一条链可以去领取衍生品,然后拿回你这边说 “这是从 Joe 那里拿的”,会不会有这种互相关联的来源?原平行链真的能够识别出这个来源是恶意的吗?或者说它会接受吗?比如它是基于衍生品的衍生品,是合成的资产,但它来自 Joe 那里。
Rob:
我觉得你的问题可能是,他们可以欺骗 Joe 去做错事吗?因为其实如果有人来找我说,“嘿,我有你代币的衍生代币,请把你的代币记入我的地址”。我不会照做的,因为那是不同的代币。所以他们只能去欺骗 Joe 用这些衍生品做错事。但是你其实可以有其他防御措施,比如最早就跟踪代币的总发行量,保证它永远不会超发,不会有无限印钞的情况。
如果你使用基于传送的系统的话,一旦这个东西进入更广的、复杂的、图灵完备的生态,你无法一直跟踪到谁在哪里 claim 了什么东西。这就是为什么传送应该只在极少数情况下使用,默认的做法应该是始终保持储备余额。平行链可能会成为它自己的代币的储备链,这是我们看到在兴起的模式;对于在其他链上发行的、不是该链的主要代币的二级代币,你可以使用 Statemint 或 Statemine,或者用智能合约来储备自己链的资产。
AnnaRose:
我在想是否有像 ERC-20 这样的东西,是不是有 XCM-20?
Rob:
有 XC-20。
AnnaRose:
如果这些现有的平行链上有类似 ERC-20 的东西怎么办?所以对平行链来说,它们有自己的储备和基础代币。但是,如果你在它之上构建东西,这是否会产生更多问题?还是说储备金仍然可以存在于部署它的第一条链上?
Rob:
这其实是一个设计决策,取决于智能合约的开发者。但我们看到一些标准已经开始出现,比如 ERC-20 加上额外的东西,这对于让代币与 XCM 环境和跨链原生类型更兼容是必要的。但任何方法都有优点和缺点。如果你使用智能合约作为储备金,你最终可能会为 gas 支付更多费用。而如果你有一个专门用于储备的链,储备操作会相对便宜,但它们存在于代币的实际逻辑之外的其他地方。所以这些是跨链 App 开发者必须做出的决定。
AnnaRose:
我在努力地去跟上你的思路。可能是我之前做了太多采访了,我总是想像它像桥一样,就像从 A 点到 B 点,但在波卡中它是与整个共识捆绑在一起的,不仅仅是一条消息,不仅仅是一个代币转移。你能帮我梳理一下,消息是如何从一侧到另一侧,然后返回的吗?
Rob:
这是我们区分消息传递层和消息本身的原因之一。
AnnaRose:
顺便说一句,我知道我一直都混淆了 XCM 和 XCMP,我得对听众说抱歉。
Rob:
这就是为什么我们在考虑改掉这个名字。这就是为什么做出这些决定很重要的原因,因为无论何时你对任何东西进行工程设计,都会用到黑箱。你需要了解你的工具,它们的作用,而不一定要了解它们如何工作的所有复杂细节。
从开发应用的人的角度来看,一条消息具体是如何传递的并不重要,你只关心它是否到达,它到达的速度,以及你必须为此支付多少费用。而这些东西都抽象到了 XCMP 协议中,我们保证消息确实会到达。除了在某些极端情况平行链出现故障的情况下,比如平行链的租约结束了且不再续租,或者他们关闭了通道,那么在最后的一些消息可能会被丢弃。但在大多数情况下,只要两条链都启动了并且通道仍然打开,那么消息就会到达,并且会在几个区块内到达。
所以你可以有任何类型的确认或回调或任何你需要在协议之上构建的东西。所以关于 XCM 的一个很酷的地方是,正如我所提到的,它是一种编程语言,所以你可以写 If-Then,或者 If-Then-Else ,即我会尝试做这件事,然后如果它成功了,我会做另一件事,也就是发回一条消息。或者你可以做 Else,即如果它失败了,那么就做另一件事。你可以将这些需要在某些远程链上执行的长条件指令序列串在一起。所以本质上就像你正在对另一条链进行编程来做某些事情,并且可以在此之上构建一堆更复杂的协议。
AnnaRose:
哇,那是不是意味着你不必在两端都编程了?我显然还是习惯用智能合约的模式思考,是不是类似于你有一个智能合约平台,你已经创建了一个合约,它与 XCMP 交互。你可以在这个里面编程,让它在另一条链上做某件事,但你不用在另一套链上部署什么东西。你是不是也可以仅使用这套编程语言去另一条链上做一些事情,并带回你需要的任何东西。
Rob:
你可以用它来做很多事情,现在它还不是图灵完备的。造成这种情况的原因之一是费用支付,因为这样你就可以提前预测,你实际上需要向另一条链支付多少,才能执行你发送的所有指令,但你可以构建仅使用 XCM 的多功能应用程序。
AnnaRose:
无需在另一条链上部署某些东西。
Rob:
对。我的意思是,这就是它的目的,因为如果我们看看我们的设计理念,我们不希望每条链都有智能合约。那么你需要有方法,去在不是智能合约平台的链上执行条件逻辑。
对于本身就是智能合约平台的链,你可能有不太复杂的 XCM 程序来与它们互操作,因为逻辑可以由你在接收链上发送消息的智能合约处理。但对于那些只是做基本的事情的链,你可以利用 XCM 来实现与那些确实有条件的链的更复杂的交互。
“广东财经网”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与
我们联系删除或处理,客服邮箱1098101642@qq.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同
其观点或证实其内容的真实性。
- 声音提醒
- 60秒后自动更新
【民政部回应何时恢复婚姻登记】民政部社会事务司二级巡视员杨宗涛表示,婚姻登记场所是人群聚集场所,部分地区暂停婚姻登记工作是对人民群众安全负责。未停止登记的地方推广用电话、网络、qq群预约登记,控制登记人数,分批分段登记,减少人员聚集和在登记机关停留时间。已停止婚姻登记地方将根据当地疫情控制情况逐渐恢复。
15:54欧洲央行副行长金多斯:欧洲央行还没有达到逆转利率。宽松政策的副作用更明显了。
15:54财经网站Forexlive分析师Justin Low评瑞士1月CPI月率:尽管通胀年率保持稳定,但核心通胀率有所下降,这一点令人更加担忧。这只是进一步巩固了瑞士央行维持现有货币政策不变,并可能在未来寻求更多宽松措施的观点。
15:54【武汉两大批发市场商户开业率超过80%】商务部市场建设司司长朱小良10日称,目前武汉生活必需品供应基本正常,除冷鲜肉、鲜叶菜等少数品种存在结构性短缺外,大部分重要生活物资供应充足,未发生明显抢购或脱销断档情况。当地白沙洲和四季美两大批发市场正常营业,商户开业率超过80%,日交易量上升至3000吨以上。(国是直通车)
15:53【日本2019年经常项目顺差增长4.4%】日本财务省10日发布的国际收支初步统计报告显示,主要受外国人入境游消费扩大影响,2019年日本经常项目顺差增长4.4%。报告显示,2019年日本经常项目顺差为20.06万亿日元(1美元约合109.8日元)。其中,商品贸易方面,由于液化天然气价格下跌等因素,进口下降5.6%至75.56万亿日元;由于汽车部件及钢铁等产品出口减少,出口下降6.3%至76.12万亿日元。货物贸易顺差减少53.8%,为5536亿日元。(新华社)
15:53欧元兑美元EUR/USD短线波动不大,现报1.0952。
15:53瑞士1月CPI年率:0.2%,前值:0.2%,预期:0.1%;瑞士1月CPI月率:-0.2%,前值:0%,预期:-0.2%。
15:52英镑兑美元GBP/USD短线走低13点,现报1.2890。
15:52【宁德时代“供电”国产特斯拉 有望拉低售价20%】全国乘联会秘书长崔东树分析认为,“随着特斯拉国产化率提升和产能爬坡,未来特斯拉国产车型的价格下探空间还是很大的。”他预计今年下半年,国产Model 3车型的售价就有望降至25万元,降幅接近20%。(新京报)
15:51【内蒙古:对不裁员或少裁员企业返还上年度50%失业保险费】据内蒙古新型冠状病毒肺炎疫情防控工作指挥部消息,疫情期间,内蒙古对不裁员或少裁员的企业返还上年度实际缴纳失业保险费的50%,对面临暂时性经营困难的中小企业,返还标准提高到上年度6个月企业及其职工缴纳社会保险费的50%。
15:51【商务部:2019年服务进出口总额54152.9亿元 同比增长2.8%】商务部新闻发言人表示,2019年,在服务贸易创新发展试点等政策的激励下,我国服务贸易总体保持平稳向上态势,逆差明显下降,结构显著优化,高质量发展成效初步显现。全年服务进出口总额54152.9亿元(人民币,下同),同比增长2.8%。其中,出口总额19564.0亿元,同比增长8.9%;进口总额34588.9亿元,同比减少0.4%。(第一财经)
15:51【振华股份:疫情导致下游客户开工推迟 产品库存上升】振华化学公告,公司目前生产经营稳定,所有产能均正常开工,原材料采购能基本满足生产需要,由于疫情导致下游客户开工推迟,公司出货量减少,产品库存有所上升。公司将根据客户需求、疫情及市场变化,适度调整生产经营策略,尽可能保持生产经营的稳定。
15:50环旭电子2月10日晚间公告,公司2020年1月合并营业收入为23.27亿元,较去年同期的合并营业收入减少27.83%,较2019年12月合并营业收入环比减少37.23%。
15:49精测电子:与京东方集团签订了多份销售合同,合同累计金额达到6.96亿元。
17:12华夏银行:银保监会同意本公司在全国银行间债券市场发行不超过100亿元人民币的金融债券,募集资金全部用于绿色信贷。
17:03