跨链(8)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字段
留给用户进行自定义,以应对可能的各种复杂的跨链场景。
跨链(8)Cosmos之“跨链交互协议IBC”前言相关推荐
- 跨链(8)Cosmos之“跨链交互协议IBC”
1. 跨链交互协议IBC(Inter-Blockchain Communication protocol) 跨链交易可以在多个Hub之间进行安全路由和转发 ABCI接口 应用层的区块链如何与共识层交互 ...
- 跨链(8)跨链双雄Cosmos“系统框架”
1. 系统框架 Cosmos是tendermint团队推出的一个支持跨链交互的异构网络, 一个分布式的独立并行区块链公链. 1.1 核心模块 tendermint core 简称tendermint, ...
- 跨链桥之ZetaChain跨链测试网交互
文章目录 什么是ZetaChain? 什么是ZETA 积分 如何获取积分 赚取测试的Zeta积分 参考 什么是ZetaChain? 官网推特:https://twitter.com/zetablock ...
- 跨链项目Cosmos主网升级提案已开启投票 目前投票率为19.10%
据官方消息,跨链项目Cosmos (ATOM)的"Stargate"主网升级提案已开启投票,Cosmoshub-3将于北京时间1月28日14:00升级为Cosmoshub-4. 截 ...
- 一文读懂Codex:基于Cosmos的跨链DeFi平台
从最原始的计算机代码,0与1数字的组合,到具有不可磨灭虚拟特性的资产,从改变世界的"点对点的电子现金系统"到"全球最大的超级电脑"人们对于数字领域世界的不断探索 ...
- 区块链中常用的跨链技术
区块链所面临的诸多问题中,区块链之间互操作性极大程度的限制了区块链的应用空间.不论是公有链还是联盟链,跨链技术就是实现价值互联网的关键,是区块链向外拓展和连接的桥梁.目前主流的跨链技术包括: 公证人 ...
- 跨链技术如何破解区块链的可扩展性难题?
区块链技术的初衷是将所有数据的流转.智能合约的运行等放在同一条链上进行,打造一个全球一体化的共享开放平台.但是,在此后的实践和应用过程中,诸多技术和商业因素的限制让我们越来越发现这样一个美好愿景有些不 ...
- 区块链开发先达区块链跨境支付系统解决方案
支付行业发展最快的领域是移动支付,但是现在最吸引大家眼球的当属区块链.现下,区块链成为金融科技领域的大热门,区块链技术在各个行业领域有着广泛的应用.那么,"区块链+跨境支付"这个组 ...
- 区块链开发公司谈跨境支付
过去的五十年中,技术创新已成为金融服务产业转型升级过程中的重要驱动力.从半导体.中央处理器.个人电脑.互联网.智能设备.移动通信,到云计算.大数据.物联网.生物识别.区块链,技术创新不断涌现并日益成熟 ...
最新文章
- 这份NLP研究进展汇总请收好,GitHub连续3天最火的都是它
- php开发支付宝支付密码忘记了怎么办_密码箱忘记密码怎么办?密码箱解锁方法大全...
- 命名实体识别(NER)资料收集
- python3.7.2安装pywifi_在Win10中安装pywifi包
- 【C/C++】符号常量 常变量
- python用什么编译器-Python必学之编译器用哪个好?你用错了吧!
- 《算法导论》(第3版)第4章练习答案
- 永洪BI在 Linux/Unix 下 jdk 环境如何配置?
- PMP到底有没有什么用?同学有话说
- unity车漆模拟ASE
- deepin-wine下微信升级到最新版方法
- 不小心格式化了硬盘怎么恢复?
- 版权符号©的4种输入方法
- 性能检测工具:Matrix-TraceCanary 入门
- 如何解决Windows 10超级管理员账号权限受限的问题
- 群晖mysql默认密码忘记_群辉root密码
- 旅游定制服务|基于SSM实现旅游个性化定制网站平台
- TeamSpeak服务器更新/升级
- 湖北省小学生计算机大赛,市教育局关于组织参加省2019年度中小学电脑制作活动的通知...
- DBeaver使用 - 连接人大金仓
热门文章
- 【Python】青少年蓝桥杯_每日一题_9.19_三行英文字母
- 【报错】ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds t
- 2020 蓝桥杯大学 B 组省赛模拟赛(一) C. 结果填空:七巧板
- android ext3 格式化,怎样将TF卡格式化为EXT分区?
- 案例|数据中心UPS电源系统割接实施方案
- 网格机房机柜、机架内的空间规划及理线方法
- 成功解决AttributeError: 'NoneType' object has no attribute '__array_interface__'
- AI公开课:19.05.15施尧耘-达摩院量子实验室主任《量子计算:前景与挑战》课堂笔记以及个人感悟
- Sql:成功解决将sql输出的datetime时间格式转为常规格式
- 跳出小程序 video组件 卡顿、黑屏、全屏等坑