Kusama已经开启了第8次卡槽拍卖了,这也代表着Kusama的中继链上共享安全的平行链将有第8个。
Kusama的中继链结构和波卡的中继链是一样的。因为共享安全的设计,不同异构链可以完成消息通讯。面对异构链的不同,波卡的跨链协议需要具备一些不同的通信方式。
XCM就是不同平行链之间通信的消息格式。根据GavinWood对XCM介绍,我们从其中摘出部分介绍内容,用来了解XCM。
XCM是一种消息格式。它不是消息传递协议。它不能用于在系统之间实际“发送”任何消息,它的作用仅在于表达接收者应该做什么。
Polkadot带有三个不同的系统,用于在其组成链之间实际通信XCM消息:UMP、DMP和XCMP。
UMP(向上消息传递)允许平行链向它们的中继链发送消息。
DMP(向下消息传递)允许中继链将消息向下传递到其平行链。
XCMP允许平行链之间发送消息。
XCM则可被用于通过这三个通信通道中的任意一个来表达消息的含义。
除了在链之间发送消息之外,XCM在其他语境也很有用,比如,由于XCM抽象且通用,因此它可以用作为钱包提供持久交易格式的手段,用于创建许多常见交易。对于业务逻辑变化很小的链(例如比特币),交易格式或者钱包用来向链发送指令的格式,一般会一直保持一致。
XCM旨在成为共识系统之间交流思想的语言。它应该足够通用,以便在整个不断发展的生态系统中保持正确且有用。它是可扩展的,可扩展性意味着可变化,也意味向前兼容。可以高效在链上运行,能在计量环境中运行。
XCM可用于多种系统,包括gas计量的智能合约平台和社区平行链、系统平行链与其中继链之间的可信交互。
虽然XCM的目标是通用的、灵活的和面向未来的,但它当然必须满足实际需求,尤其是链之间的代币转移。在整个DeFi世界中,可选的费用支付是很常见的。可以使用XCM语言进行一些特定操作。
重要的是,有许多希望支持的代币转移模型:可能只需要简单地控制远程链上的帐户,允许本地链在远程链上拥有一个地址以接收资金并最终将其控制的资金转移到该远程链上的其他账户中。
但这个过程里可能有两个共识系统,它们都是特定代币的系统。例如USDT或USDC这样的代币,在几个不同的链上都有实例,并且完全可以互换。应该可以在一条链上销毁这样的代币,并在另一条支持的链上铸造相应的代币。在XCM中,可以称之为传送(teleport),因为资产的转移实际上是通过在一侧销毁它,并在另一侧创建一个克隆来实现的。
XCM格式的核心在于XCVM。这代表跨共识虚拟机。这是一台超高级别的非图灵完备计算机,其指令设计为与交易大致处于同一级别。
XCM中的“消息”实际上只是一个运行在XCVM上的程序。它是一个或多个XCM指令。程序会一直执行,直到它运行到最后或遇到错误为止才会结束并停止。
XCM中的位置是分层的,共识中的一些部分被完全封装成单独的部分。例如Polkadot的平行链完全存在于整个Polkadot共识中的内部位置。只要有一个共识系统的任何变化都意味着另一个共识系统的变化,而前一个系统是后者的内部系统。
在XCM中工作时,通常需要引用某种资产。是因为几乎所有现有的公共区块链都依赖于一些原生数字资产来为其内部经济和安全机制提供支柱。对于比特币等工作量证明区块链,原生资产(BTC)用于奖励开发区块链的矿工并防止双重支出。对于Polkadot等权益证明区块链,原生资产(DOT)用作一种抵押形式,网络管理员(称为权益人)必须承担风险才能生成有效区块并获得实物奖励。
XCM中的费用支付是一个相当重要的用例。Polkadot社区中的大多数平行链都会要求其对话者为他们希望进行的任何操作付费,以免“垃圾交易”和DDOS。
当链有充分的理由相信它们的对话者可信时,也可以不付费,例如Polkadot中继链与PolkadotStatemint公共利益链通信时就是这种情况。但是,对于一般情况而言,费用是确保XCM消息及其传输协议不会被过度使用的好方法。
我们来看看XCM消息到达Polkadot时如何支付费用。
对于确实需要支付一定费用的系统,XCM提供了使用资产购买执行资源的能力。概括来讲,这包括了三个部分:
提供一些资产
就计算时间(用Substrate中的说法就是weight)交换资产。
XCM按照指示执行