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

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跨链Cosmos之“跨链交互协议IBC”前言相关的知识,希望对你有一定的参考价值。

1. 跨链流程

A链上的Alice发送10个ATOM代币给B链上的Bob

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

step2.Bonding
当使用IBC初始化一笔跨链转账之后,A链上的10个ATOM事实上处于锁定的状态。
在这里插入图片描述

step3. Proof中继
一份证明A链上已经锁定10ATOM的“证据”会被路由到B链上的IBC模块。
在这里插入图片描述

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

2. IBC握手流程

IBC协议实现区块链间跨链消息的可信、可靠转发,并有效进行流量控制、多路复用等功能。
IBC也是如此。

  • 借鉴了传输层的TCP协议(希望成为区块链领域的“TCP协议”)
  • 有连接的、可靠的跨链消息传输

在这里插入图片描述

2.1 三种角色

2.1.1 链内客户端

跨链双方需要在链上初始化一个对方链的轻客户端,这个Client实质上是另一个区块链的轻客户端,而且必须满足Cosmos规定的一套Client接口。

需要保证在本链上能够验证来自来源链的跨链交易是能够验证的,否则无法保证在本链上执行该交易的有效性和合法性。

  • 轻客户端规定了一套通用的接口,不同类型的区块链通过实现该 Client来达到接入的效果。
  • 现阶段支持 Tendermint Client和Solo Client,也就是同构链之间原生支持跨链。
  • 不是使用Cosmos构建的区块链想要接入Cosmos Hub进行跨链的话,必须通过一个额外的“转接桥”

2.1.2 Connection和Channel

Connection和Client一起负责跨链交易的“合法性”——包括跨链交易确实在目的链上发生,以及跨链交易只提交了一次。

Connection和Channel在跨链扮演的角色和能不同, Channel用来保证跨链交易的有序性,每笔交易按照 Sequence Number来进行发送。

Connection和Channel的建立过程都如上面所示,只是数据包的名称和内容会有不同,

  • 建立Connection的时候发送的便是 ConnOpenInit请求
  • 建立的Channel的时候便是ChanOpenInit 请求,之后的请求依次类推。

2.1.3 无序的Channel

采用了有序的模式。

  • 有序Channel和TCP类似

  • 无序Channel类似于UDP,无序Channel按照UDP来讲的话,在某些不太关注跨链消息包顺序的场景下也是适用的。

  • 考虑到Channel的消息发送能力,允许一条Connection上建立多个Channel,在不同的跨链应用场景中,可以使用不同的Channel发送消息,从而隔离不同业务。

2.2 通信原理

2.2.1 握手连接

在轻客户端的基础上建立握手连接,握手连接基本上分别为三个部分。Connection和Channel的建立都如下:
● 启动跨链的用户向链A发起OpenInit请求,等待Relayer 接收到该请求。
● Relayer进行路由跨链消息包的工作,如果收到 OpenInit的请求,Relayer 会构造一个的OpenTry 的请求发送到链B上。
● 链B收到OpenTry请求之后,如果同意的话,会对该消息进行确认(生成OpenACK数据包,并按照之前的方式由 Relayer 转发给链A。
● 链A通过OpenACK数据包判断此次握手是否成功,如果成功,对此次握手发送最后的 OpenConfirm 数据包返回链B。如果握手失败,此次连接也就是建立失败了。

2.2.2 发送跨链数据包

完成握手之后,应用层便可以在Channel上发送自己的数据了。Cosmos跨链交易的如下图:
在这里插入图片描述

  • TimeoutHeight和TimeoutTimestamp 超时机制

    如果某个区块高度或者某个时间这笔跨链交易还没有完成的话,用户能够指定将这笔交易回退(比如是跨链转账的话,可以防止资金长时间冻结)。

  • Data字段
    留给用户进行自定义,以应对可能的各种复杂的跨链场景。

以上是关于跨链Cosmos之“跨链交互协议IBC”前言的主要内容,如果未能解决你的问题,请参考以下文章

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

跨链Cosmos(12) Cosmos插件

跨链Cosmos异构跨链交易流程

跨链Cosmos Cosmos系统框架

跨链Cosmos同构跨链交易流程

跨链Cosmos普通交易流程