火星链 火星链
Ctrl+D收藏火星链
首页 > FIL > 正文

Gavin Wood: XCM 第二部分- 版本控制和兼容性

作者:

时间:1900/1/1 0:00:00

在关于XCM的第一篇文章中,介绍了它的基本架构、目标以及如何将其用于一些简单的用例。在这里,我们将继续深入检查XCM的一个有趣方面:

有一个共同的语言可以解决很多交互的问题。它可以让我们一起工作,解决冲突,记录信息以备后用。但是,语言的有用性取决于它所能表达的概念,在一个不断变化的世界中,一种语言必须改变和适应其概念库,否则就有被废弃的危险。

不幸的是,太突然地改变一种,会损害它的主要目的——促进人与人之间的沟通。既然语言必须改变,就必须有办法管理这些改变,而不让新的形式令外行人难以理解。在这方面,一个非常有用的发明是字典,它帮助记录和归档一种语言的概念调色板,以便后代能够更好地理解历史文本。词典的版本可以被看作是语言的形式化“版本”。

时过境迁,但问题依然似曾相识。正如我在上一篇文章中所解释的,XCM只不过是一种语言,尽管是非常专业的语言。这是共识系统相互对话的一种手段,而作为这一需求的XCM在密码产业,特别是Polkadot生态系统飞速发展的情况下,必须有一些方法来确保这些变化不会损害XCM的互操作性。我们现在需要解决的不仅仅是共识空间中的互操作性,还包括共识时间。

Gavin Wood:WebAssembly是智能合约的未来:金色财经报道,波卡创始人Gavin Wood在2021年共识大会上发表讲话时表示,EVM对Polkadot区块链系统提供支持非常重要,至少在可预见的将来。他认为WebAssembly是智能合约的未来,但“传统” EVM现在就在眼前。据悉,WebAssembly是一种软件格式,可以在网络上使用,并且可以轻松地与多种软件语言一起使用。它是由大型网络公司构建的,并且可以在所有主要的浏览器上运行。[2021/5/26 22:44:19]

版本控制

既然我们希望XCM要在大量使用的同时随时间变化,需要采取的一个非常简单的预防措施是确保我们确定哪个版本的XCM我们在实际消息内容之前进行通信。我们通过使用许多版本包装器类型来做到这一点,之所以这样命名是因为它们包装了XCM消息或其组件的版本。在Rust代码中,这看起来非常简单:

pubenumVersionedXcm{??V0(v0::Xcm),??V1(v1::Xcm),??V2(v2::Xcm),}当“overthewire”,XCM总是放在这个版本化的容器中。这确保了那些太旧而无法解释消息的系统能够安全地接收它们,并识别出消息的格式不受它们的支持。它还允许新的系统识别并相应地解释旧的消息。

不只是XCM消息是版本化的;在XCM代码库我们也存在多版本以及它的相关类型。这是因为当链的XCM逻辑升级了。如果不进行版本控制,我们可能会试图将旧的MultiLocation解释为新的,并发现它是不可理解的。

Gavin Wood:暂定目标是在本季度末完成平行链的发布:据PolkaWorld消息,波卡创始人Gavin Wood博士接受采访时表示,平行链测试网已经在两个月前推出,正在慢慢地接入平行链团队,目前还在运行测试。之后在对代码运行测试比较满意的时机,波卡官方就会把它上线到 Kusama 网络,一同推出的还有 Kusama 拍卖,就是插槽拍卖和众贷系统。这样大家就可以通过 Kusama 权益持有系统(Kusama stake holding ecosystem)支持他们最喜欢的平行链,也许还可以收获一些平行链团队对他们的支持所提供的奖励。与此同时,波卡官方已经聘请一家外部审计公司,在开发新代码的过程中对所有新代码进行调整,一旦审计公司觉得安全了,波卡官方就会把它部署到 Polkadot 上,这个工作暂定目标是在本季度末完成。[2021/2/26 17:56:26]

兼容性与翻译

版本控制是第一步,它确保我们能够识别正在使用的语言版本。它不能保证我们能解释它,当然也不能保证它是我们优先使用的版本。这就是兼容性的作用所在。我们所说的“兼容性”是指能够继续用一个版本来解释和表达自己。

如果我们希望能够升级我们的网络和XCM时间表,那么这种兼容性变得相当重要。这可以分为向后兼容和向前兼容。从根本上说,向后兼容性是升级后的系统在遗留世界中继续运行的能力,向前兼容性则是遗留系统在升级后世界中持续运转的能力。

在我们的例子中,我们希望两者都有,但是有实际的限制:XCM提供了以前版本中不存在的功能,因此期望旧系统能够解释这些消息是不现实的。这有点像试图把“社交媒体”这个词翻译成拉丁文,然后指望凯撒大帝能从表面上理解它。有些概念根本无法在上下文中表示。

现场 | Polkadot创始人Gavin Wood:波卡治理采取的是某种程度的委托民主:金色财经现场报道,由Web3基金会主办的Web3大会10月30日在上海举行。Parity & Polkadot创始人Gavin Wood在闭幕AMA中讲到波卡的智力模型,他表示波卡的治理采取的是某种程度的委托民主。因为不需要完全民主,不是每一件事都需要投票。一方面,一个区块链经济系统考虑50%或者更多的利益相关者,区块链系统才会稳定。另一方面,许多利益相关者不会参与每一个决策,他们委托给其他人。同时为避免某个财团通过拥有大多数DOT,进而控制主要理事会席位,波卡采取了NPOS机制。[2020/10/30 11:15:18]

同样,发生重大的变化,XCM可能会从其概念模型中移除相关功能。这种情况较少发生,但类似于将某些古代术语翻译成现代术语的问题。有趣的是,“点”的古意可能就是一个例子。

因此,新版本的XCM的设计大多兼容旧版本和新版本,但通常XCM的这些信息在另一种语境中根本没有意义,也不能翻译。

实际通讯

如前所述,我们确保所有独立存在的消息都包含版本标识符。这意味着在系统之间发送的消息或保存在存储中的消息。它不包括所有的消息、位置和资产,虽然存在一部分数据,但其他数据不需要某一特定版本,因为其版本可以从它的上下文推断。

而版本识别和compatibility/translation对于从旧的网络接收消息或向新的网络发送消息很有帮助,但是,如果采用另一种方式,单独使用会没有效果。这是因为从升级网络接收消息的遗留网络本身不具备能够将新的XCM它可以解释为某种形式——确切地说,这种逻辑只存在于发送方,它的翻译代码能够以遗留术语重新表示新消息。

现场 | 波卡创始人Gavin Wood:有些时候社会因素比技术因素更重要:金色财经现场报道,10月27日,第六届区块链全球峰会于上海开幕,峰会的圆桌讨论环节,波卡Polkadot创始人Gavin Wood分享表示,我们看到2014年开始,智能合约在不同平台上的发展,但他们的主权是专制的,我们希望主权有所稀释,波卡希望交付一个区块链解决方案,但不是大而全的方案。

针对链的应用和治理,应用层面需要考虑一些社会方面的因素,例如GDPR,这个太难了。例如金融机构把资金流转到以太坊上,如何托管,如何监管,目前还没有解决,有些时候社会因素比技术因素更重要。治理层面则需要考虑让底层具备稳定性,而不让高层的应用加入底层,例如一层的平台不适合做代币和转账等。[2020/10/27]

因此,必须由发送网络负责确保其发送的消息能够被接收网络解释。具体而言,用于传递消息的版本不能超过XCM接收网络支持的内容。

由于这个原因,Polkadot和Kusama中继链、Statemint、Statemine、Shell和任何其他基于Substrate/Frame的链及其XCM引擎都保存一个远程链支持的版本。每当一个XCM消息由这些链发送,它首先通过查询其注册表确定发送消息的版本。它将信息翻译给之前的发送者和接收者,那么大多数情况下,这些将是相同的,最新发布的版本,会提供完整的功能集XCM。

这个注册表通常由治理过程决定和升级,这有点麻烦和繁琐,特别是随着潜在目的地数量的增加。出于这个原因,引入了版本跟踪。

Gavin Wood指责币安提前上线新面额DOT 导致币价大跌:波卡创始人Gavin Wood在推特发文职责一些中心化交易所“不道德”。据悉,导致Gavin Wood不满的原因是本周四(8月20日)部分交易所(币安和Kraken)上线了新DOT代币,而不是按此前约定的8月21日周五上线。Gavin Wood认为由于中心化交易所无法控制,很可能会导致社区面临风险,而且本次违规上线新代币也违背了波卡社区的利益,在 DOT 持有者中制造了混乱和困惑,这种行为是不负责任且具有性的,后续可能会让交易所承担责任。按照最初计划,重新计价后 DOT 代币将会被以 1:100 的比例进行拆分,单个DOT价值也相应会被缩减。[2020/8/20]

版本协商

版本跟踪是最后一块XCM拼图的故事。它的功能是删除跟踪XCM潜在目的地链的版本。相反,这个过程是自动发生的,而且是连锁的。

本质上它允许一个网络使用XCM向另一个人查询最新版本的XCM,并在此更改时收到通知。来自此查询的答复允许所述网络填充和维护其版本注册表,确保以尽可能最新可理解版本的消息。

具体来说,有三个有价值的指示,在XCM:SubscribeVersion,允许一方要求另一方通知其XCM版本现在和它更改时;取消订阅版本以取消该请求;以及QueryResponse,将一些信息从响应者网络返回到发起网络的一般方法。以下是它们在Rust中的样子:

enumInstruction{??SubscribeVersion{????query_id:QueryId,????max_response_weight:u64,??},??UnsubscribeVersion,??/*snip*/}所以SubscribeVersion需要两个参数。第一个query_id是QueryId类型,它只是一个整数,用于识别和区分返回的响应。全部XCM导致响应被发送的指令具有类似的手段,以确保其响应能够被识别并相应地处理。第二个参数称为max_response_weight,它是一个Weight值,指示返回时我们应该花费的最大计算时间。与query_id类似,它将被放入该指令生成的任何响应消息中,并且需要确保任何权重不可预测,可变权重成本至少可以限制在执行前的最大值。如果不这样做,我们将无法获得解释应答消息所需时间的上限,因此无法安排执行该消息。

UnsubscribeVersion作为一个指令是相当贫瘠的,主要是因为一次只允许一个版本订阅对给定位置是活动的。这意味着取消只能通过原产地注册的内容来识别。

回答

第三个要注意的指令是QueryResponse,它是一个非常通用的指令,允许一个链回复另一个,并在这样做时报告一些信息。这是在Rust中:

enumInstruction{??QueryResponse{????query_id:QueryId,????response:Response,????max_weight:u64,??},??/*snip*/}我们已经知道三个参数中的两个,因为它们是从SubscribeVersion中提供的值填充的。第三个称为response,包含我们关心的实际信息。它被放置在一个新的类型Response中,它本身是几种类型的联合,其中一种网络可能希望使用它们来通知另一种网络。在Rust中是这样的:

pubenumResponse{??Null,??Assets(MultiAssets),??ExecutionResult(Result<(),(u32,XcmError)>),??Version(XcmVersion),}就我们目前的目的而言,只需要Version项,但正如我们将在以后的文章中看到的,其他项对其他上下文也有用。

执行时间

一般来说,我们不需要QueryResponse指令来通过BuyExecution购买它们自己的执行时间,因为,是现解释网络要求首先发送它们。同样,我们认为SubscribeVersion是广义上符合发送方和接收方共同利益的东西,所以也不指望有人会付钱。在任何情况下,付款都很难计算,因为付款所产生的反应具有异步性和不可预测性。

自动化

而这些XCM指令允许网络使用完全的链上逻辑来确定对话者支持的最新版本,但仍然存在何时启动这个版本的问题。此外,一些跨协商一致的传输协议是不基于规定的,这将排除版本协商的可能性。

在诸如Polkadot中继链和Statemint之类的Substrate链中,解决方案是当需要包装发送消息但目标的最新版本未知时自动启动此版本发现过程。这有一个小缺点,即第一个消息将在次优级的XCM版本停留,直到收到版本响应为止。如果这是一个实际问题,那么治理可以介入,强制初始版本XCM目的地与默认值不同。

代码兼容性XCM

关于版本控制,最后一点是代码创作。完全不同于Over-the-wire格式的XCM,代码兼容性处理是使用Rust实现项目代码库必须发生的事情。XCM会随着时间的推移而堆叠。

显然,旨在使用不断发展的语言来表达变化的代码库必须随着时代的变化而适应。我们已经有了SemanticVersioning系统,它可以帮助确认在特定版本更改时可能发生的更改。这在处理API和ABI时非常有用,但在考虑整个数据格式或语言时就不那么有用了。幸运的是,XCM被设计成几乎不需要SemVer了。

我们知道,新版本的XCM软件能够在新的和旧的XCM消息之间以及它们的内部数据类型(如位置和资产)之间进行转换。它可以通过将XCM语言的多个版本同时保存在XCM代码基中来做到这一点。如果我们回顾VersionedXcm数据类型的Rust声明(就在本文的开头),它只不过是底层Xcm数据类型的每个特定版本的标记联合,每个都可以在它们自己的模块v0、v1、v2和&c中找到。

由于事务和API使用XCM而且它的数据类型倾向于只使用版本化的变体,这些变体同样可以构造新的和旧的格式,最终的结果是代码库可以更新为使用最新的XCM软件很少或根本没有改变他们的代码。升级XCMCrate允许网络更好地与其他类似升级的网络进行互操作,但升级XCM网络使用的语言不需要再出现。

我们希望,这会成为一个强有力的激励,促使团队保持他们的XCMCrate更新进度,因此保持一切迭代和快速发展。

结论

希望XCM的版本系统,以及它如何能够被用来保持一个网络的主权链通信可以对大家有所启发。在下一期中,我们将更深入地探讨XCM:它的执行模型和异常管理功能。

标签:IONVERDOTVERSBitnationUniversidad de Chile Fan TokenDota FinanceVERSESS Coin

FIL热门资讯
无聊猿:NFT周刊|Axie Infinity主导NFT销量;无聊猿俱乐部动作频繁;NFT“登月计划”持续进行

本周,NFT相关的资产吸引了大量的资金,虽然似乎并不是什么特别新鲜的东西,但有一些值得注意的购买行为.

1900/1/1 0:00:00
SMI:凯诺资本创始人:正在筹备一只10亿规模以上专投区块链版权市场的基金

据《经济观察报》消息,9月21日,凯诺资本创始人、总裁韩田新在第五届国际电影IP授权与衍生产业开发论坛上介绍道,我们正在筹备一只专投区块链版权市场这类的基金,可能至少10亿规模以上.

1900/1/1 0:00:00
ARCH:Arcane Research:预计到2030年闪电网络用户将达到7亿

据Cointelegraph10月8日报道,ArcaneCrypto研究部门预测,随着比特币第二层支付协议的采用在十年里逐步增加,闪电网络将呈现抛物线增长.

1900/1/1 0:00:00
CAR:Cardano创始人:Cardano新功能应被称为“可编程验证器”而非“智能合约”

据U.Today消息,Cardano创始人CharlesHoskinson今日在推特上表示,对于Cardano来说,“智能合约”这个词其实并不恰当,并建议社区将其新功能称为“可编程验证器”.

1900/1/1 0:00:00
ARE:支付公司Square签署旨在防止加密公司因专利相互起诉的协议

据Livebitcoinnews消息,支付公司Square正在加入一项针对加密货币的互不侵犯协议,该协议旨在减少针对加密和区块链公司的专利诉讼,并将数字货币世界推向主流领域.

1900/1/1 0:00:00
MORPH:从Layer 0到Layer 2,一文概述状态通道的数学解释

随着区块链行业的不断发展,Layer2已经逐步上线,面向市场大众,与此同时,Layer0与Layer1扩容解决方案也在不断优化中.

1900/1/1 0:00:00