实验环境
两条平行链-链A(2008)和链B(2009)
一条中继链
实验目的
通过orml-xcm打开链A和链B之间的hrmpchannel
前提准备
平行链代理账户需要一定的中继链token,所以需要在中级链通过xcmPallet.limitedReserveTransferAssets()向指定的平行链发送代币
下图例子
平行链代理账户,这是通过paraid生成的账户,他是确定的账户。
para-id=2115的平行链代理账户是:5Ec4AhNzgnZ7jXzsdUAEbGBWu2GNfwppYZdf6P1JqNq6BntW
OpenHRMP
开通HRMPchannel的步骤:
发送方平行链发送一个初始化开放通道请求。
接收方平行链接受请求。
两条链需要互相交替进行操作,因为hrmp是单向的,如果需要进行跨链资产转账就需要打开双向的hrmp通道。
下面通过链A为Sender,链B为Recipient,以打开链A->链B的Hrmpchannel为例
链ASender2008
1.在中继链构造hrmp.hrmpInitOpenChannel()的结构体,并获取encodedcalldata。
这里有三个参数
Recipient接收者的ParaId
proposeMaxCapacity也是个限制的值
proposeMaxMessageSizexcm消息的大小限制
其中proposeMaxCapacityproposeMaxMessageSize的值不能设置的太大,必须要比中继链规定的最大配比要小,要不然会出错。通过中继链ChainState下的configuration.activeConfig()方法查找这项约束。
2.回到平行链,通过sudo构造ormlXcm.sendAsSovereign()
鲍威尔:作为一种资产类别,加密货币似乎具有持久力:金色财经报道,美联储主席鲍威尔表示,作为一种资产类别,加密货币似乎具有持久力。[2023/6/22 21:53:22]
ormlXcm.sendAsSovereign(dest:XcmVersionedMultiLocation{V1:{parents:1interior:Here}}message:XcmVersionedXcm{V2:}{BuyExecution:{fees:{id:{Concrete:{parents:0interior:Here}}fun:{Fungible:40,000,000,000}}weightLimit:Unlimited}}{Transact:{originType:NativerequireWeightAtMost:1,000,000,000call:{encoded:}}}{DepositAsset:{assets:{Wild:All}maxAssets:1beneficiary:{parents:0interior:{X1:{Parachain:}}}}}]})
Circle过去三个月已销毁约90亿美元USDC供应:金色财经报道,根据 DeFiLlama 数据显示,过去 90 天内,美元Stablecoin USDC的总供应量已从 555.5 亿美元下降至 465.7 亿美元,这意味着 USDC 发行方 Circle 在此期间已经销毁了价值约 90 亿美元的稳定币,创下迄今 90 天时间段内的 USDC 最高销毁记录。
当用户将 USDC 兑换为支持该稳定币的基础 Currency 时(通常是美元),Circle 就会将赎回的代币发送到销毁地址来销毁 USDC 并从区块链记录中永久删除这些代币。分析显示,USDC 销毁量飙升恰逢主要 DeFi 平台向稳定币贷方提供的收益率显着下降,根据 LoanScan 相关数据,自年初以来,USDC 对 Compound 和 Aave 的贷款利率已经缩水了 70% 以上。(The Block)[2022/10/6 18:40:47]
-hex-call>为上面我们构造的encodecalldata:0x1700d907000008000000e21f0000
韩国Zepeto与泰国电信巨头True合作,促进泰国元宇宙生态系统发展:金色财经报道,韩国Naver Z公司的元宇宙平台Zepeto已与泰国电信和数字服务提供商True Corporation签署了一份谅解备忘录(MOU),以发展泰国的元宇宙生态系统。利用Zepeto作为平台,True将提供面向未来的线上到线下体验,可以提升泰国在元宇宙内容创作方面的软实力。Zepeto表示,它在泰国的平台上拥有数百万用户和约500,000名内容创作者。(Forkast)[2022/9/2 13:04:55]
为我们当前平行链的paraid:2008
交易成功之后,会在中继链执行encodecalldata的函数。
链BRecipient2009
1.在中继链构造hrmp.hrmpAcceptOpenChannel()的结构体,并获取encodedcalldata。
其中参数中的sender为发送者的paraid,也就是对应链A的paraid
2.回到平行链,通过sudo构造ormlXcm.sendAsSovereign()
ormlXcm.sendAsSovereign(dest:XcmVersionedMultiLocation{V1:{parents:1interior:Here}}message:XcmVersionedXcm{V2:}{BuyExecution:{fees:{id:{Concrete:{parents:0interior:Here}}fun:{Fungible:40,000,000,000}}weightLimit:Unlimited}}{Transact:{originType:NativerequireWeightAtMost:1,000,000,000call:{encoded:}}}{DepositAsset:{assets:{Wild:All}maxAssets:1beneficiary:{parents:0interior:{X1:{Parachain:}}}}}]})
为上面我们构造的encodecalldata:0x1701d8070000
为我们当前平行链的paraid:2009
发起交易后,在中继链可以查看到执行成功的日志。
检查是否成功打开HRMPChannel
1.查看中继链存储hrmp.hrmpOpenChannelRequestList()
2.观察中继链页面中parachains的in/out内容
参考链接
OpenHRMPChannel:
https://wiki.acala.network/build/development-guide/composable-chains/open-hrmp-channel
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。