首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

吴寿鹤:Cosmos跨链协议研究

基于 Tendermint 开发的链都可以采用同构跨链,cosmos 中同构链之间进行资产转移的原理如下。由于 Tendermint 采用 PBFT+POS 共识算法,每个区块都是经过全网 ⅔ 节点签名过的,所以得到 Validator 信息就可以通过对区块头进行校验来验证这个区块头是不是某一个链中的合法区块。ChainA,ChainB 都是用 Tendermint 开发的链,现在 ChainA,ChainB 之间需要进行跨链资产转移,第一步A,B 两个链之间会相互进行注册,在注册的过程中,A,B 两个链会将各自的创世区块以及 ChainID(用于表示不同链)发送给对方,由于创世区块中含有 Validator 信息,所以通过注册后 A,B 两个链会有对方链的 Validator 信息,以及区块头信息。现在 A 中的资产需要向 B 中转移,首先发送一个跨链交易 packageTx 到 A 中,A 执行这个 packageTx,将相关的资产进行销毁或锁定,接下来将 packageTx 写入 egress 中,egress 可以看成是一个信箱,所有向外部通知的跨链交易的都放入到egress 中。为了将 A 链中发生的事件通知给 B 链,需要一个relayer,relayer是一个中继程序负责将 A 链中 egress 中的跨链消息转发给 B 链,relayer查询 A 链中 egress 中的packageTx,并获取packageTx的Merkle Proof,将这些信息打包成 IBCPacketPostTx 交易发送到 B 链上,并查询 packageTx 所在的区块头信息,将区块头信息打包成 IBCUpdateChainTx 发送到 B 链上, 注意这里 relayer 是需要支付 IBCPacketPostTx,IBCUpdateChainTx 执行的交易费用的。B 链接收到 IBCPacketPostTx 交易后开始执行,首先通过 A 链中的 Validator 校验IBCUpdateChainTx 中的区块头是否是 A 链的,然后校验 IBCPacketPostTx 中跨链交易的Merkle proof 是否等于 IBCUpdateChainTx 中的区块头 hash。当所有校验全部通过时 B 链开始执行相关操作(在B链是生成相关资产等)[图片上传中...(image-b92935-1570973105363-3)]

02
领券