走进Cosmos之入门_币世界+趣链科技

2021-01-13 14:25 栏目:行业动态 来源:网络整理 查看()

交叉链作为近两年区块链科技的一个热点方向,已经引起了很多人的关注。

导 读

跨链,作为近两年区块链科技的一个热点方向,已经引起了很多人的关注。

从技术角度来说,Cosmos与Polkadot无疑可以称之为“跨链二人组”。他们的技术路线没有明显的优劣,但是他们的发展理念各有千秋。

Cosmos最初是由嫩薄荷团队构建的开源社区项目,它将自己定义为“由多个独立的并行区块链组成的分散网络”。和波尔卡多一样,也是通过接力技术实现的。

毕竟Cosmos是如何解决跨链过程中遇到的所有问题的?本文通过解释宇宙的体系结构和跨链交易过程,使我们进一步了解宇宙。

作为跨链竞争对手之一,

什么是Cosmos

宇宙被定位为可扩展、易于使用和互操作的区块链互联网。

首先,介绍了宇宙的三个重要组成部分

枢纽:本质上是一个接力链,由政府维护,被视为跨链消息的信任中心;

专区:参与宇宙网的应用链,允许不同类型的区块链加盟;

Ibc(区块链间通信协议):链间通信协议。

走进Cosmos之入门_币世界+趣链科技

这里的ABCI是应用层区块链如何与共识层交互的接口,共识层和网络层由CosmosSDK的底层实现,所以只有实现相关的ABCI接口,才能自己构建一个链。

ABCI接口和CosmosSDK将在下一个Cosmos系列中详细介绍。

交易流程

接下来介绍Cosmos的交易流程。Cosmos交易分为普通交易和跨链交易。普通交易通过应用链内的共识链接,而跨链交易通过IBC跨链协议进行交易。

普通交易

Cosmos的普通交易类似于Ethereum,也是一个关键字段为From、To、Amount的账户模型。

普通交易消息:

msg发送结构{ from address github _ com _ cosmos _ cosmos _ SDK _ types }类型ACC address to address github _ com _ cosmos _ cosmos _ SDK _ types .ACC地址量github _ com _ cosmos _ cosmos _ SDK _ type .角点}

交易流程

年欧洲足球锦标赛韩升平?韩升平?韩升平,云娥-艾尔

ice转给Bob 100atom代币。

走进Cosmos之入门_币世界+趣链科技

ChainA的Alice转给ChainB的Bob 100atom

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

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

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

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

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

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

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

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

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

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

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

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

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

跨链难题

▲ Relayer 作恶问题

场景描述:Relayer是链下的一个传递跨链消息的组件,任何人可以启动Relayer来传递消息。

方案:所有验证在链上进行,Relayer只做消息传递。

效果:可多个Relayer同时工作,跨链消息的有效性和有序性的保证和Relayer无关,至少一个不作恶Relayer即可工作

▲ 跨链存在性证明

我们可以看到,在每个IBC数据包的结构中都包含:

struct {  Proof commitmentexported.Proof   ProofHeight uint64 Signer sdk.AccAddress }

其中ProofHeight是对应的区块高度,Proof是Merkle Proof,Signer是发送者的地址,跨链双方维护对方的轻节点,提供类似SPV证明的机制。

▲ 跨链交易事务

IBC跨链协议中定义了两种关于包含状态的跨链交易数据包:

MsgAcknowledgement:定义IBC协议的响应数据包,包含跨链交易执行成功或者失败的状态。

// MsgAcknowledgement receives incoming IBC acknowledgementtype MsgAcknowledgement struct {  Packet Acknowledgement []byte Proof commitmentexported.Proof   ProofHeight uint64 Signer sdk.AccAddress }

MsgTimeout:定义IBC协议的超时数据包,包含下一个接收包的序列号。

// MsgTimeout receives timed-out packettype MsgTimeout struct {  Packet NextSequenceRecv uint64 Proof commitmentexported.Proof   ProofHeight uint64 Signer sdk.AccAddress }

来源链通过MsgAcknowledgement数据包,可以判断跨链交易是否执行成功,如果执行失败来源链做出相对的回滚。

来源链通过MsgTimeout数据包,可以判断一个跨链交易的数据包是否超时,如果超时来源链做出相对的回滚。

结论

总体来说,Cosmos作为与Polkadot齐名的跨链双雄之一,在架构设计和IBC跨链协议上有许多值得我们学习借鉴的地方。

接下来的Cosmos系列文中会详细介绍IBC协议和Tendermint共识详解,敬请期待!

作者简介

江哲

来自数据网格实验室BitXHub团队主要负责区块链账本互操作技术相关研究工作

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发