走通XCM的“Hello World”

163 篇文章 1 订阅
48 篇文章 0 订阅

XCM概述

XCM是波卡独有的一种跨共识信息传递格式。我们之前也对XCM做过一些介绍,随着各种不同的公式体系,包括L1主网,L2,桥,分片,Sidechain,等等逐渐增多,对这种实现在不同公式体系之间传递信息的科技的需求会越来越大。 XCM,或波卡总体以互操作性为核心的架构,就是在为这样的一个未来在做的一个赌注。

XCM并不是一种协议层(Protocol),相反,XCM的全称是跨共识信息格式,更像是一种通用语言语法的定义,联通了原本互不相通的方言,将信息准确传递给对方

XCM格式这样的设计是让它可以在几乎任意公式系统之间通用,但与此同时它对信息的表达方式是相对比较抽象的,也就是说如果让用户直接使用XCM,它的操作可能会比较繁琐,容易出现操作错误,总体用户体验也比较差。

xTokens Pallet

在这个前提下,最好的处理方式是来使用一些Wrapper Library或中间件来抽象化掉一些XCM底层的技术复杂性。

由Acala团队研发的xTokens Pallet就是这样的一个工具。xTokens pallet通过XCM实现了基本的跨链余额转账功能,其中包括使用UMP和DMP实现从平行链转账到中继链,和使用HRMP实现平行链之间的Token转移,包括 DOT、KSM等中继链Token和原生平行链Token,类似MOVR、ACA等。

我们可以用xTokens Pallet来执行一笔从Moonbase Alpha测试网转账到Moonbase Alpha Relay中继链的XCM交易。这应该算是XCM最基本的一个操作之一,所以可以理解为类似于XCM的“Hello World”。

操作流程

获取xcUnit测试Token

我们将从Moonbase Alpha网上的Moonswap里面获取一些测试xcUNIT Token,测试网Moonswap地址为:Moonbeam Uniswap

1. 进入Moonswap后,我们要先选择一个能给我们xcUNIT的交易对;选择“Select a token”,然后“Choose a list”,然后选择“Moon Menu“列单

2. 选择好列单后在Token搜索栏中搜索”xcUNIT”,然后用鼠标选择“xcUNIT”。xcUNIT是我们在Moonbase Alpha网上来测试XCM的一个测试Token

3. 选择好“DEV/xcUNIT”交易对后,我们需要有一些DEV测试Token来Swap xcUNIT。您可以从我们的Discord水龙头中获取一些DEV Token,详细步骤可以参考开发者文档

4. 确认您已经在Moonswap上连接了您的MetaMask;我们测试只需要1枚xcUNIT就可以,所以在下面输入“1”,然后点击“Swap”,并在MetaMask里面确认交易。

5. Swap交易完成之后,我们可以在MetaMask里面添加xcUNIT,并看到我们的余额。点击“Asset”,然后点击“Import Tokens”。在地址栏中粘贴xcUNIT的合约地址:0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080,然后选择确认。之后您应该可以马上看到您的钱包里有1枚xcUNIT。

6. 现在您的钱包里已经有了xcUNIT了,我们将可以进入下一步的XCM操作。

XCM知识点:您可能会有一些疑问,为什么xcUNIT有一个智能合约地址,并且可以直接以ERC20的方式添加到MetaMask?这是因为xcUNIT是一个XC-20 Token。XC-20是Moonbeam独有的一种Token标准,XC-20资产既有Substrate原生XCM的特性也有ERC-20的特性。Moonbeam会对所有通过XCM进入的Token赋予一个ERC-20的接口,这些资产可以直接与Moonbeam上基于EVM 的DEFI生态系用交互,比如刚才我们使用的Moonswap就是一个Uniswap V2 fork。

将xcUNIT从Moonbase Alpha平行链转账到Moonbase Alpha Relay中继链

1.首先我们需要用Polkadot.js apps钱包在Moonbase Alpha Relay中继链上创建一个账户:Polkadot/Substrate Portal

点击“Add Account”,然后按照步骤创建一个新的账户。这个账户我们只是用来接收下面的xcUNIT转账,所有我们可以建一个全新的。创建完后,您可以看到Moonbase Alpha Relay中继链上的Token单位是”Unit”,这也就是Moonbase Alpha Relay中继链的原生Token,即xcUNIT的非XCM版代表。

2. 接下来我们将在Moonbase Alpha平行链上发起XCM转账。在浏览器里开启一个新的Tab,也用Polkadot.js apps钱包连接到Moonbase Alpha平行链:Polkadot/Substrate Portal

3. 我们需要先将我们刚才有xcUNIT的那个钱包导入到Polkadot.js apps钱包里面。在MetaMask上点击账户边上的三个点,然后选择“Account Detail”,然后点击”Export Private Key”。输入您的MetaMask密码,然后拷贝账户的私钥。

4. 在连接Moonbase Alpha的Polkadot JS apps wallet内点击“Add Account”,然后点击“Mnemonic”选择栏,并将其切换为“Private Key”,将刚才导出的私钥粘贴在输入栏并在前面加上 “0x” 前缀,然后点击“I have saved my mnemonic seed safely”, 并按照屏幕上的提示导入这个账户。

5. 导入完这个账户,点击上面的”Developer”菜单,然后选择“Extrinsics”. 在”submit the following extrinsic”下拉菜单中选择“xTokens”,然后选择“transferMultiasset(asset, dest, destWeight)”

6. 然后按照以下参数来创建我们的XCM交易:

您也可以用这个Encoded Call Data来快速填写这个表格,您如果使用这个Encoded Call Data注意要改一下收帐地址:

0x1e010100010000070010a5d4e801010101006c9dbc4f72800c356fd9ae811254ee5147239a09db1988d70b88f97b0be5d57f0000000000000000

XCM知识点:这里几次出现的Multilocation到底指的是什么?Multilocation是XCM代表地址的一种方式,它不仅仅可以代表钱包地址,也可以代表不同共识算法的平行链,Substrate Pallet,或更通用的一些目标。MultiLocation的路径永远是相对的,而且其代表方式是层次式的。理解MultiLocation是上手XCM的一个关键概念,您可以参考Gavin Wood对XCM和MultiLocation的介绍来了解更多细节。

7. 填写好后,点击发送然后确认交易。几秒钟后,如果交易成功发送了,您将在右上角看到绿色的确认显示栏。

8. 回到连接Moonbase Alpha Relay中继链的Polkadot JS apps钱包来确认我们收到了刚才的XCM转账。您应该能在账户中看到0.97左右的xcUNIT,其中有一部分被扣除用来支付交易Gas。

恭喜!您已经成功通过xTokens Pallet完成了您的第一个XCMP跨链转账交易,从Moonbase Alpha平行链转账xcUNIT到Moonbase Alpha Relay中继链。这笔交易属于波卡XCMP的UMP: upward message passing,即是从平行链向上方发送信息给中继链。这个操作也相当于XCM的“Hello World”。

第一步往往也是最难的一步,虽然XCM操作目前有些门槛,但是相信您掌握它背后的逻辑和原理后会很快上手,并且可以开始将XCM强大的跨链功能利用于各种应用场景之中。


关于Moonbeam
Moonbeam是波卡(Polkadot)网络中与以太坊兼容的智能合约平台,可实现轻松构建原生的互操作性去中心化应用。以太坊兼容特性允许开发者以最少的更改将现有的Solidity智能合约和DApp前端部署到Moonbeam。Moonriver作为Kusama上最活跃的平行链,已有80多个DApp完成在Moonriver的集成。Moonbeam将受益于Polkadot中继链的共享安全性和链接波卡其他链的互操作优势。

如需了解更多信息,请访问:Moonbeam | Polkadot Smart Contract Platform

关于Moonriver
Moonriver是Moonbeam的同行网络,旨在为激励实验提供永久性的测试环境。新上线项目的代码将优先部署到Moonriver,在其真实的经济环境下经历一系列的测试与实验验证。当验证完成并通过测试之后,项目代码才可正式部署至波卡上的Moonbeam。

如需了解更多信息,请访问:Moonriver - Solidity Smart Contracts on Kusama

更多 Moonbeam 信息 
官网: Moonbeam | Polkadot Smart Contract Platform
微博:Sina Visitor System
twitter: https://twitter.com/MoonbeamNetwork
Telegram: https://t.me/moonbeam_CN
Discord: https://discord.gg/skPfXvJWG7
中文电报群助手:@MoonbeamSister

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值