-

Cosmos跨链协议IBC的前因后果

来源: 数字货币 时间:2021-01-14 08:09:50
导读: Cosmos是由Tendermint团队构建的开源社区项目,它是一个由独立的称为Zone的区块链组成的支持跨链交互的异构多链系统,和Polkadot一样,也由中继技术实现。


DeFi新玩法丨一文了解去中心化稳定币协议Fei

DeFi的优雅之处在于,它能够为每个类别提供最佳的财务解决方案。但如今用户在寻找去中心化稳定币时,不得不在令人沮丧的选项中做出选择。

导 读

Cosmos是由Tendermint团队构建的开源社区项目,它是一个由自力的称为Zone的区块链组成的支持跨链交互的异构多链系统,和Polkadot一样,也由中继手艺实现。Cosmos提供一套能够完整搭建区块链的SDK,作为一个跨链系统,其中最为要害的就是跨链协议相关的设计,今天我们就来详细剖析一下IBC协议的具体内容。

IBC初探

IBC是属于Cosmos-SDK中一个特殊的模块。之所以特殊,主要体现在IBC提供了区块链之间的跨链能力。

从总体的流程来说,IBC的手艺并没有很庞大,应该来说协议自己不应太过庞大,这对于协议的使用者来说约束更小,加倍天真。

现在比如说A链上的Alice上需要发送10个ATOM代币到B链上的Bob上,会经由下面的四个步骤。

▲ Tracking

A链上的IBC模块会不停的同步B链上的区块头信息,B链上的IBC同理。通过这种方式,双方能够实现跟踪对方区块链上的验证者聚集的转变,本质上来说,就是A链、B链相互维护了一个对方的轻节点。

▲ Bonding

当使用IBC初始化一笔跨链转账之后,A链上的10个ATOM事实上处于锁定的状态。

▲ Proof中继

一份证实A链上已经锁定10ATOM的“证据”会被路由到B链上的IBC模块。

▲ 验证

B链连系A链的轻节点信息,对这份“证据”验证通过之后,B链上会“铸造”10份ATOM Voucher(抵用券),这些Voucher可以举行后续的流通使用。固然这些Voucher也可以通过同样的跨链方式返回到A链,A链上的ATOM代币响应执行解锁的操作。

IBC握手流程

IBC协议是Cosmos中最焦点的接口协议,能够实现区块链间跨链新闻的可信、可靠转发,并有用举行流量控制、多路复用等功效。

在Cosmos中,每个功效都是高度模块化的,每个功效通过加载差别的模块来实现,IBC也是云云。在IBC设计时,借鉴了传输层的TCP协议,也是希望成为区块链领域的“TCP协议”。不仅云云,在IBC的各个方面也能看到TCP的身影,首先我们来看IBC中的一些基本观点。Cosmos IBC采用了有毗邻的、可靠的跨链新闻传输。

在此基础上提出了以下几个要害界说:

Client

Connection

Channel

下图是IBC协媾和TCP相关观点的对比。

可以看到毗邻、端口都是TCP协议中的规范,然则其中的内在发生了转变,为了顺应跨链场景下的使用。同时增加了通道和客户端等新的内容,能够支持跨链中的有序发送和跨链买卖的验证。

接下来我们来看一下一次完整IBC协议的握手和通讯流程。

一笔跨链买卖的毗邻流程如上图,和TCP协议类似,IBC的确立需要确立多次的握手历程,并增加了一步初始化客户端的操作,这对于跨链来说很要害的一环。

▲ 链内客户端

跨链双方需要在链上初始化一个对方链的轻客户端,这个Client实质上是另一个区块链的轻客户端,而且必须知足Cosmos划定的一套Client接口。之所以要在IBC确立之前初始化这个轻客户端,是因为Cosmos需要保证在本链上能够验证来自泉源链的跨链买卖是能够验证的,否则无法保证在本链上执行该买卖的有用性和合法性。

为了利便后续后续更多差别种类的区块链接入,这个轻客户端划定了一套通用的接口,差别类型的区块链通过实现该 Client来到达接入的效果。现阶段Cosmos能够支持 Tendermint Client和Solo Client,也就是同构链之间原生支持跨链。这也决议了不是使用Cosmos构建的区块链想要接入Cosmos Hub举行跨链的话,必须通过一个分外的“转接桥”,实现起来也加倍庞大了。

▲ 握手毗邻

在轻客户端的基础上确立握手毗邻,握手毗邻基本上分别为三个部门。

启动跨链的用户向链A提议OpenInit请求,守候Relayer 接收到该请求。

Relayer举行路由跨链新闻包的事情,若是收到 OpenInit的请求,Relayer 会组织一个的OpenTry 的请求发送到链B上。

链B收到OpenTry请求之后,若是赞成的话,会对该新闻举行确认(天生OpenACK数据包,并根据之前的方式由 Relayer 转发给链A。

链A通过OpenACK数据包判断此次握手是否乐成,若是乐成,对此次握手发送最后的 OpenConfirm 数据包返回链B。若是握手失败,此次毗邻也就是确立失败了。

上面的步骤不仅是指Connection的确立历程,Channel的确立也是遵照同样的流程,只是数据包的名称和内容会有差别,像确立Connection的时刻发送的即是 ConnOpenInit请求,确立的Channel的时刻即是ChanOpenInit 请求,之后的请求依次类推。

需要说明的是,Connection和Channel在跨链饰演的角色和功效并不相同,根据Cosmos的设计,Connection和Client一起卖力跨链买卖的“合法性”——包罗跨链买卖确着实目的链上发生,以及跨链买卖只提交了一次。而Channel用来保证跨链买卖的有序性,每笔买卖根据 Sequence Number来举行发送。

虽然在Cosmos设计中有提到可以实现无序的Channel,然则默认实现上是采用了有序的模式。若是根据TCP协议簇来类比的话,有序Channel和TCP类似,无序Channel类似于UDP,无序Channel根据UDP来讲的话,在某些不太关注跨链新闻包顺序的场景下也是适用的。同时Cosmos设计中也考虑到Channel的新闻发送能力,允许一条Connection上确立多个Channel,在差别的跨链应用场景中,可以使用差别的Channel发送新闻,从而隔离差别营业。

▲ 发送跨链数据包

完成上述的一系列握手之后,应用层便可以在Channel上发送自己的数据了。Cosmos划定了发送跨链买卖的一些需要字段,如下图:

其中Sequence和SourcePort字段都是负担其字面意思的功效,也是必须指定的字段,而TimeoutHeight和TimeoutTimestamp是Cosmos提供的一种超时机制。若是某个区块高度或者某个时间这笔跨链买卖还没有完成的话,用户能够指定将这笔买卖回退(比如是跨链转账的话,可以防止资金长时间冻结)。而Data字段是留给用户举行自界说,以应对可能的种种庞大的跨链场景。

总 结

通过上面临IBC的剖析,我们可以看到IBC采用了确立毗邻的方式举行跨链,差别于Polkadot的XCMP协议,XCMP协议中平行链可以直接举行跨链新闻的转发。

而且Cosmos并没有太过关注Zone作恶的情形,只是通过维护Zone的轻客户端的方式验证跨链买卖的有用性,这种方式下是信赖Zone不会泛起团体作恶的情形,也就是Zone安全性由自身卖力。差别于Polkadot设计上中继链维护全局的安全性,Cosmos IBC的设计上是减少了跨链系统的维护成本和降低了设计实现难度的。

加入新手交流群:每天早盘分析、币种行情分析

添加助理微信,一对一专业指导:chengqing930520

加入新手交流群:每天早盘分析、币种行情分析,添加助理微信

一对一专业指导:chengqing930520