跨链Cosmos异构跨链交易流程

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跨链Cosmos异构跨链交易流程相关的知识,希望对你有一定的参考价值。

当应用链双方在Hub注册后,彼此发现就可以通过路由进行跨链交易。

1.1 IBC跨链流程

ChainA和ChainB都是基于CosmosSDK搭建的应用链,Relayer作为一个链下中继负责轮询和路由IBC的数据包:
ChainA -> relayer -> hub -> relayer -> ChainB

在这里插入图片描述

1.2 ChainA的Alice转给ChainB的Bob 100atom

step1. ChainA的Tendermint收到该笔交易,调用BaseApp的BeginBlock,检查区块的高度、Gas消耗情况和节点投票情况;

step2. 执行区块中的交易,减少Alice 100atom,增加托管账户Escrow 100atom,存储Alice和Escrow的账本(如果不是原生代币,则销毁Alice 100代币)。

step3. 构建跨链交易MsgPackage数据包,根据DestinationChannel和DestinationPort定位Outgoing队列,将MsgPackage存入该队列;

step4. 区块内交易全部执行完成后,Tendermint调用BaseApp的EndBlock收尾,包含执行完成后的事件等等, 再调用BaseApp的Commit,调用IavlStore持久化等操作;

step5. IavlStore通过当前所有的Iavl Tree Root构建Merkle Tree;

step6. ChainA的Tendermint通过Tree root生成区块哈希;

step7. ChainA的Tendermint准备进行下一轮出块;

step8. 中继器Relayer轮询ChainA的Out队列,发现Outgoing队列存在MsgPackag;

step9. 中继器Relayer解析MsgPackage数据包来源和目的;如果发现ChainB的区块高度大于超时高度,移除ChainA的MsgPackage,向ChainA的inComming队列发送MsgTimeout数据包;

step10. 中继器Relayer向ChainB的Incomming队列发送包含MsgPackage数据包,ChainB随后解析MsgPackage,验证MsgPackage的有效性;

step11. 托管账户Escrow mint 100atom,然后向Bob发送100 atom;

step12. ChainB构建MsgAcknowledgement数据包,中继器Relayer轮询ChainB的Incomming队列,将其放入ChainB的Outgoing队列;

step13. ChainA收到ChainB的MsgAcknowledgement或者MsgTimeout数据包,如果MsgAcknowledgement包含执行失败的状态或者存在MsgTimeout数据包,则根据数据包内的信息进行向托管账户赎回对应的金额。

以上是关于跨链Cosmos异构跨链交易流程的主要内容,如果未能解决你的问题,请参考以下文章

跨链跨链双雄Cosmos“系统框架”

跨链Cosmos普通交易流程

跨链Cosmos同构跨链交易流程

区块链BaaS云服务(22)趣链BitXHub“跨链网关”

跨链Cosmos之“跨链交互协议IBC”

微众WeCross 跨链平台异构链互联协议HIP