扫码下载
BTC $70,946.13 -1.12%
ETH $2,178.67 -3.04%
BNB $599.86 -2.41%
XRP $1.33 -3.47%
SOL $82.13 -2.82%
TRX $0.3171 +0.42%
DOGE $0.0914 -3.34%
ADA $0.2500 -4.62%
BCH $441.82 -0.37%
LINK $8.77 -5.17%
HYPE $38.75 -0.78%
AAVE $90.66 -4.95%
SUI $0.9100 -4.33%
XLM $0.1555 -4.93%
ZEC $318.91 -0.89%
BTC $70,946.13 -1.12%
ETH $2,178.67 -3.04%
BNB $599.86 -2.41%
XRP $1.33 -3.47%
SOL $82.13 -2.82%
TRX $0.3171 +0.42%
DOGE $0.0914 -3.34%
ADA $0.2500 -4.62%
BCH $441.82 -0.37%
LINK $8.77 -5.17%
HYPE $38.75 -0.78%
AAVE $90.66 -4.95%
SUI $0.9100 -4.33%
XLM $0.1555 -4.93%
ZEC $318.91 -0.89%

Cosmos:区块链3.0,互联网的基础态

Summary: Cosmos SDK模块,大大简化了区块链的开发难度,对于开发人员来说可以添加定制的功能实现扩展。
Foresight News
2022-02-02 14:39:47
收藏
Cosmos SDK模块,大大简化了区块链的开发难度,对于开发人员来说可以添加定制的功能实现扩展。

作者 :Chelsea Jiang,Foresight Research

 

0.前言

2014年,Cosmos的雏形及源头项目Tendermint 成立,比特币的白皮书发布仅5年。

2018年,Cosmos的白皮书在上海的万向区块链周获得最佳白皮书,熊市开启4年的周期。

2022年,cosmos终于实现了白皮书,区块链的世界开始认真的思考,公链不再一家独大,而是像cosmos描述的,是区块链互联的宇宙。

本文涉及技术细节,篇幅较长,可以结合目录查看

 

目录

1.Cosmos:区块链3.0

   1.1比特币:区块链1.0,去中心化的价值

   1.2以太坊:区块链2.0,应用的爆发

   1.3Cosmos:区块链3.0,可扩展的模块化区块链网络

            1.3a) 公链的构建

            1.3b) 公链的组成

           1.3c) Tendermint 共识机制:基于BFT的POS的提供

           1.3d)Cosmos SDK:模块化的开发方式

           1.3e)IBC跨链协议:区块链互联网的TCP/IP协议

           1.3f)Cosmos Hub:价值枢纽

           1.3g)Gravity Bridge+EVMOS:兼容以太坊生态

2.多链的选择:Cosmos Vs.Polkadot Vs. Avalanche

3.多链的必然性:Web 3.0的前提

   3.1多链的世界:无限扩展的模块化区块链

   3.2多链的Defi:完整的金融体系

   3.3多链的社交:统一的身份

4.总结

 

1.COSMOS:区块链3.0

Cosmos并不是一条独立的区块链,而是一个网络,区块链的网络。

Cosmos的目标不是建立自己的区块链,而是建立一个可互通的网络生态系统。为了实现互通的网络,Cosmos提供开发者工具降低开发门槛,包括Tendermint共识引擎,Cosmos SDK 的模块化开发框架,加上IBC通信协议,实现区块链之间的信息和资产转移,打通不同区块链的孤岛,形成互联网。

在理解Cosmos的开发思路之前,我们不妨先回顾下区块链的发展。

 

1.1)比特币:区块链1.0, 去中心化的价值

以太坊

比特币是一个去中心化的货币体系。比特币的区块链技术第一次在分布式数据库引入了共识机制:Proof of work的工作量证明,通过奖励原生代币bitcoin激励参与者成为矿工,确保账本一致。比特币是一个任何人都可以参与记账的账本,但是没有任何人结合能够拥有这个账本,所以也没有人能改变这个账本上的记录,第一次通过技术的手段实现去中心化的货币体系,转移价值。 你可以与世界上任何一个人进行交易或者转账,只需要知道对方的比特币地址即可,不需要确认开户银行甚至提供居住地址。

POW的共识机制解决了信任问题,不需要相信某一个人或者机构(这将给予他们巨大的权利)。 每一个人都可以参与比特币的网络,成为节点一起记账,一个节点只有在计算出加密算法的数学难题后才能记账并获得全网的共识,保证同一个比特币不会被用两次。如果有人想要恶意攻击网络,比如说把1000个比特币划到自己的账本上,那需要51%的网络的节点同同意才可能完成修改。而现在比特币的挖矿更像是军备竞赛,加入网络的壁垒变得越来越高,想要掌握51%的节点更是难上加难,保证了网络的安全。所以比特币作为去中心化的价值越来越被更多的人认识,获得全球共识。

但是,比特币的可开发空间有限。 如果想要在比特币网络上开发应用,基于POW的比特币只给了开发者两种选择,分叉或者在原有的代码上进行开发。选择分叉的需要花费大量ji保持原代码的运行,而且在2008年创建的比特币的脚本语言过于原始,难度较高;选择在比特币网络上开发的话,比特币的网络层、共识层和应用层都混合在一起,而且比特币支持的简单的脚本编写基本只适用于交易,很难在上面继续开发其他的功能。

 

1.2)以太坊:区块链2.0,应用的爆发

以太坊

以太坊带来的智能合约打开了应用场景的开发空间,区块链可以被更多的主流人群采用。 以太坊虚拟机,Ethereum Virtual Machine 模拟了完整硬件系统功能的处理系统,通过这个虚拟机可以为应用程序提供运行,也就是我们看到的智能合约。开发人员只需要通过代码告诉智能合约需要做什么,怎么做,剩下的只需要智能合约自己去执行就可以了。智能合约解放了应用层的开发空间,开发人员可以构建各种可供用户使用的应用,进入区块链2.0时代。

但是以太坊依然面临平衡的问题,即可扩展性,可用性,和独立性的问题。现有的部署在EVM上的app的DAPP,本质上是在争夺链上有限的区块空间,可扩展的空间受限:需要处理各种类型的EVM只能做普适的优化,但是不同的应用场景却有不同的需求,比如说Defi需要快速确认,然而NFT的应用需要的是存储空间,所以以太坊不可能适合所有的应用场景,可用性天花板较低:基于EVM的所有DAPP都是需要依赖以太坊的底层环境,因为EVM是部署在以太坊网络上的每个节点,DAPP需要修改的话还有受限与底层以太坊网络是否能兼容。一旦部署智能合约,开发者基本上只能依靠合约自主运行了。

EVM真正开启了区块链作为底层技术支撑的应用场景空间。像是苹果IOS的系统给予了开发者创作的空间,让手机从一个单一的通讯工具变成了包含社交,娱乐,工作的智能工具。以太坊的EVM作为智能合约的运行底层,也赋予了开发者无限的创造空间,带来了我们现在看到的去中心化的金融系统Defi,提供确权的NFT,以及去中心化的游戏经济体gamefi。

但是,随着这些应用获得越来越多的流量和用户,比如日活达到200万的Axie Infinity游戏,大约每秒处理15笔交易的以太坊公链显然无力承载如此庞大的流量。同时智能合约升级也十分困难,且难以修改,使用智能合约的应用也无法快速迭代提供更好的用户体验。同时其他公链也开始形成自己的生态,用户在每个公链都持有一定的资产,但是跨链转移资产依然面临诸多不便。

 

1.3)Cosmos :区块链3.0,可扩展的模块化区块链网络

以太坊

Cosmos在以太坊的基础上更进一步,通过CosmosSDK的形式提供搭建区块链的脚手架,提供通用的开发框架,Cosmos SDK模块,大大简化了区块链的开发难度,对于开发人员来说可以添加定制的功能实现扩展。

1.3a)公链的构建

首先,所有解决具体应用场景的应用都需要构建在底层的公链上,具体来讲,对应用开发影响最大的是公链偏上层的应用层,更偏向公链底层的网络层和共识层提供的是应用运行的底层性能,具体的底层设计只要在保证性能的情况下不会对应用程序本身产生更多的影响。

但是,如果要达到主流采用的应用的话,可能需要整个公链单独为应用服务。比如说21年爆火的链游Axie在,选择了开发自己的侧链Ronin处理大量交易。如果继续依赖承载着其他Defi、NFT等交易活动的以太坊来处理的话,不仅会无法处理Axie游戏的业务,还会导致以太坊网络的拥堵。毕竟以太坊的TPS 仅仅是10 。所以,长期来看,大量的应用堆积在一条主链上去共享资源既无法满足应用,还拖垮整个网络。单一公链不可能为每一个应用场景都做到最优,不同赛道的项目应该选择在适合自己的公链生态进行上构建,Cosmos提供模块化的区块链,开发者可以更高效的搭建出适应应用场景的链

同时以太坊上应用的爆发也让开发者意识到,不同的应用场景对公链的要求也不一样,比如确认时间的速度对Gamefi项目的影响一定大于Defi的项目。理想情况下,考虑未来的大量使用的场景的话,每一个应用应该有独立的一条区块链。但是,开发公链的底层既没必要也浪费资源,目前位置公链的设计方案已经大体相同,而且开发工作量巨大,并且实际能做到的人也不多。

1.3b)公链的组成

我们可以看看从头搭建一个区块链需要什么:

以太坊

1.数据层:数据存储的技术, 主要是基于密码学的数据存储,实现交易安全,包括Merklle树、数字签名、散列函数、非对称加密技术等,将数据存在一个区块再通过链式结构,结合时间戳的技术按顺序相连接组成一条区块。2.网络层:Peer-to-peer点对点的网络中节点沟通的机制,影响区块链的信息确认的速度,也决定了区块链的可扩展性3.共识层:统一记账的方式,让分散的节点同意并确认账本的记录,确保区块链的安全性。4.激励层:通过经济激励模型鼓励节点来参与区块链,也就是常说的挖矿机制,是区块链运行的基础5.合约层:由以太坊为代表的智能合约可以开发并自动执行应用程序6.应用层:面向用户的产品。

1.3c)Tendermint共识机制

以太坊Tendermint 其实是创始人Jae Kwon在创造Cosmos之前创建的公司的名称,而 Tendermint Core 是实际使用的软件,主要有两个组件构成:包含提供共识机制的Tendermint Core,共识引擎, 和适应大多数编程语言的接口ABCI。

 

以太坊

 

 

在Cosmos的设计中,数据层和网络层归类网络层,合约层和激励层归共识层,合约和应用层归为应用层。对于开发者来说,最底层的网络层和共识层并不是他们想要开发的关键,而是开发应用层,负责业务逻辑来提供应用场景。Tendemint提供了通用的网络层和共识层,让开发者在在此基础上搭建自己的应用层。

Tendermint Core 作为一个通用引擎,能够安全的、一致的在链上记录交易,其中包含了网络层和共识层,网络层使用的是Gossip 协议,模仿流行病传播方式在P2P的节点网络中传播信息的网络协议,也是比特币网络层使用的协议;共识层使用的是BFT+POS,我们可以看看具体的算法。

1.3c1)Tendermint Core共识引擎:基于BFT的POS共识算法

其实每一个人都遇到过共识的问题,那就是和朋友一起吃饭的时候商量吃什么。只不过在区块链里面变成了节点一起商量下一个区块上面写什么。 区块链允许节点随时加入或者离开,即使出现故障,网络里的节点依然能够正常工作。这是依靠提前制定的规则,这套规则就是共识机制。

中本聪首次在比特币的设计中融入了拜占庭容错(BFT),开始将学术界的容错机制引入到像区块链这种分布式计算,思考在不可靠的环境中建立一个可靠的系统的。Jae Kwon是第一个真正提出将BFT研究应用到PoS的区块链中,并创造了Tendermint实现了他的想法。

BFT拜占庭容错机制

 

以太坊

1982年,Lamport,Shostak和Pease首次提出拜占庭将军问题,一群拜占庭将军分别从不同的位置围困一座城市,需要决定进攻或撤退。但是处于不同位置的将军只能通过信使互相联系,如果这些将军中出现叛徒, 那么叛徒可以向不同的将军发送不同的消息,比如向倾向于撤退的将军发送其他将军也打算撤退的假消息,扰乱大家的决定。

而让忠诚的将军在有叛徒的情况下,依然能够达成共识的机制的能力就被称作BFT,Byzantine Fault Torerance拜占庭容错。BFT保证在总的节点数为 N的情况下,故障或者作恶的节点数为 F,只要N >= 3F + 1 时,网络依然能够达成共识做出一致的决定。

网络的参与者不能确定是否有人撒谎,或者消息是否被修改,即使存在这些问题,参与者也能一起达成共识做出决定的系统就被称为具有拜占庭容错 (BFT)。

POS权益证明

BFT描述的是在网络中运行达到共识的规则,POS描述的是参与网络的方式,也就是挖矿的机制。Proof of staking权益证明作为挖矿的机制,要求共识的参与节点,被称为验证者,持有并质押区块链的原生代币,也就是Cosmos的Atom代币,将POW的以硬件算力的成本转换成持有代币的成本,期望获得手续费和区块的奖励作为回报。质押的代币作为保证金获得投票权,确保节点不是虚假账户发起女巫攻击。在参与共识的过程中,锁定验证者的保证金,避免验证者多次投票发生无利害关系问题,否则没收保证金。

共识机制

获得共识的流程主要是验证者在多轮的提议,预投票,和预提交过程中获得2/3 的投票,成功后开始提交信息添加新的区块,将区块链的“高度”(其实就是数量)上加1,否则重新开始整个流程。仅参加提议、预投票、预提交的准备阶段被称为非验证人节点,或者轻客户端,确保网络中的所有节点都能监听消息;从投票到出块参与全流程的验证者也被称为全节点;开启每轮投票流程的验证者也被称作提议者,确保责任落实,根据质押的代币获得的权利越大,被选中的概率就越大。换句话说,投入越多,获得回报的几率就越大。

当然,并不是每一轮都会成功产生区块,提议者可能掉线或者延迟等情况下,整个流程就会重启。

同时,轻客户端可以验证交易的有效性。相比存储了完整区块链信息的验证者,轻客户端只需要定期下载部分信息也就是区块头(可以理解为文章的标题),甚至不需要同步链上的所有区块头,轻客户端就可以通过区块的最终结果,跟踪参与投票的验证人的集合,验证是否有大于三分之二来自该区块的验证人进行了预提交。

当然,并不是每一轮都会成功产生区块,提议者可能掉线或者信息不符合标准,那么整个流程就会重新开启。

性能

中本聪共识及通过POW的方式,允许所有人加入成为矿工通过算力的比拼获得记账的权利,也就是出块。而Tendermint中会预设固定的节点,如果要增加的话需要至少2/3的节点的一致投票,同时为了防止节点过多达成共识变慢,tendermint的节点上限为100个,并且得出的结果具有最终确定性,这意味着在同样的输入条件下,输出的结果总是确定的,保证用户的交易是立即完成。而比特币可能出现分叉的风险。

上限100个的Tendermint 的验证者可能被质押不够去中心化,不过,去中心化在区块链中应该是一种手段,而不应该成为目标本身。 只要破坏系统的代价够大,并且有针对性的防御及惩罚机制,即使Tendermint的验证者是固定已知的,也不妨碍稳定、确定的达成共识。

Tendermint Core作为提供网络层和共识层的共识引擎,是支持BFT的共识机制。这意味着即使有 1/3 的节点发生故障,包括黑客攻击和恶意攻击,Tendermint的网络也依然能够获得共识,正常工作。这意味着使用Tendermint共识引擎的网络在大多数情况下都能保证网络的安全运行,这是任何应用开始大规模使用的前提;同时是迅速的,出块时间约为 1 秒,保证同样的交易按照同样的顺序记录在链上

1.3c2)ABCI接口:解放开发者的接口

以太坊

在Cosmos的区块链网络中,每条区块链都由Tendermint作为底层的通用的网络层和共识层,同时每个应用都能在应用层设计自己的业务逻辑。对于开发者来说,只需要通过ABCI,Application Blockchain Interface应用程序区块链接口调用,他们可以直接在tendermint提供的共识机制上提供的最终交易上就可以构建应用程序。

ABCI:灵活的调用方式

ABCI ,全称Application Blockchain Interface,作为一个socket协议是一个调用的接口,不同于其他的区块链要求开发者学习并使用特定的语言,开发人员可以选择他们熟悉的语言进行开发。

我们看到的比特币、以太坊在设计区块链网络时都是采用的一体化的思路,每一个技术栈,也就是我们刚刚讲到的区块链的各个层级,都是一个相互链接和依赖的程序,无法单独拆开。

这种整体的架构在开发时容易遇到2个问题。

1)代码难以使用。比如说,比特币的一个堆栈里面就包含了待处理的交易池mempool,账户余额,用户权限等,如果想要单独拎出mempool就会变得非常困难,即使分叉也很难维护,变成面条式代码,和面条一样缠绕在一起混乱难以理出头绪。

2)限制开发语言。在以太坊网络中,EVM 需要通过编译器将智能合约代码编译成字节码再上传到区块链之后才能执行操作,导致开发者只能使用EVM编译器支持的语言,也就是 Serpent 和 Solidity。

功能类型

主要有3个ABCI连接应用层和Tenderint共识层,包括:

1)CheckTx:验证交易并提交到mempool交易池中广播交易

2)DeliverTx:提交给共识引擎处理并更新状态

3)BeginBlock/EndBlock:查询应用层的状态

abci协议包括几种不同的消息类型。Tendermint core 会创建3个ABCI连接到应用层:

在计算机科学中,通常不认为单体架构通常是一个好的做法。Cosmos把原来的需要从底层开始构建层层堆叠的区块链架构,变成了模块化的可自由组合的结构。就像是组装电脑一样,你可以把内存条,显示器,键盘,鼠标组装成一个电脑需要考虑添加具体的配置就可以开车上路了。而应用层的配置也提供了工具,Cosmos SDK,一个允许开发者为应用场景自定义配置的框架,提供了新的开发范式。

一图总结Tendermint

以太坊

1.3d)Cosmos SDK:模块化的开发方式

以太坊

区块链的本质是一个可以被复制的状态机,一个简化了事物因果关系的逻辑模型,可以给定某个条件来更新状态。比如说比特币就是一个可以被所有人下载的账本,新的交易成功后就会被更新到这个所有人都可以看到的账本。 在实践中,大量的交易可以被打包并上传到链上修改账本的状态。

1.3d1)SDK模块设计

以太坊

通过模块化的设计,SDK提供了通用的应用功能,每个功能能够独立运行、组合。管理。每一个模块也可以被看成单独的小状态机,开发者可以自定义状态以及改变状态的方式,并用KVStore的形式保存在Multistory里支持以后的使用。同时作为开源的软件,开发者可以通过项目实践,快速迭代。

SDK的模块是一个作为开发者能够为其他开发者提供的简洁、实用的开发工具,开发者可以放开手脚创作更多的应用。

运行机制

通过Multistore 的机制来定义和维护应用层的状态,将应用层的状态划分到不同的模块,可以看作是独立的状态机CosmosSDK里内置的底层basepp里有ABCI的接口可以直接调用适应所有应用类型的Tendermint共识机制,经过CheckTX的验证非攻击后提交到mempool交易池,在验证节点达成共识成功出块后交易被打包上链,通过DeliverTx成功修改状态,即交易成功。

通过DeliverTx的功能收到字节形式的交易后,解码提取消息,在验证交易相关的信息后,比如是否有签名,再推送到对应的模块处理,最后更新状态。更新后的状态由SDK里的Multistore的功能保存,并且还可以把信息切割开来对应到不同的模块。

1.3d2)SDK模块功能

 

以太坊

现有模块提供的功能

Account模块:司账户管理的account模块

Bank模块:司转账交易

Staking模块:司代币质押

Slashing模块:司惩罚策略的slashing

Distribution模块:司奖励分配的distribution模块

Supply模块:司新币生成的

Gov模块:司链上治理

基本上涵盖了应用层的必需功能,而开发者可以直接使用这些车轮开发自己的汽车了。

兼容性

SDK支持开发者使用第三方的模块,但是需要做一些安全检查保证各个模块可以互相适配。

IBC协议和SDK是独立运行的,使用Cosmos SDK模块并不强制要求绑定到Tendermint的共识机制,开发者可以根据自身的诉求选择底层的共识协议,而后文介绍的IBC模块则在一定条件下链接不同共识算法,比如,比特币和以太坊这两大公链。

Object-Capability Model支持对象模型

Cosmos SDK支持对象能力模型,可以让每一个模块的运行逻辑被保存在Keeper的功能里,通过调用Keeper,模块存储器件,就可以在相应的应用中读写。这意味着,即使有未知的或者恶意的攻击,在不需要了解具体代码的情况下,也可以对引用的对象和链接的分析从而保证系统的安全,只要引用的对象之间产生了链接。

这个叫做keeper的逻辑控制可以藏在幕后,隔离不同的代码,最终提高系统的安全性。对于应用的架构开发者可以更清晰的梳理代码的功能、逻辑、链接,因此可以更容易的定位问题,适配其他语言,甚至更多的优化。

采用Cosmos 构建的应用都有独立的应用层,共识层以网络层,开发者可以选择网络层的验证者,建立自己的社区以及经济体系。如果使用默认的共识层Tendermint Core ,开发者可跨多个cosmos区块链使用可以选择自己的验证者。而说基于Cosmos SDK构建的公链已经有了Binance Chain,Terra,还有Kava等大型公链提供服务。

开发Keplr钱包的Josh曾经总结过,使用智能合约是租房,使用CosmosSDK开发才是建造属于自己的房子。

1.3e)IBC 跨链协议:区块链互联网的TCP/IP协议

以太坊

IBC跨链协议是Cosmos SDK其中一个模块,使用Cosmos SDK构建的应用都可以通过升级兼容IBC协议,和我们平常升级手机软件一样。

IBC,全称Inter Blockchain Communication 区块链间通信协议,统一了在不同的区块链之间跨链沟通的标准。可以理解成战国时期秦国统一度量衡,或者用Tendermint 的前首席研究员 Sunny Aggarwal 的话则是,IBC是将运输货物的集装箱标准化,实现全球经济贸易。

1.3e1)跨链协议设计

单条公链提供的功能和场景有限,因此需要跨链才能满足更多的需求,比如你在美团上点了外卖之后通过支付宝支付。跨链本质上是一种把数据安全、可信地转移到另一条链,并达到预期效果。

参考互联网的发展历史,脱胎于阿帕网,ARPANET(Advanced Research Projects Agency Network,高级研究计划局网络),是第一个是实现计算机远程通信的网络,但是依然只能在有限的规定节点中传输信息。直到TCP/IP协议,或者称为互联网协议套件,Internet Protcol Suite/IPS的网络传输协议,提供了不同计算机之间如何传达和接受信息的标准机制,才形成了我们现在使用的互联网。在TCP/IP之上,还需要其他的协议来保证不同类型的传输,比如说网页采用HTTP,电子邮件需使用SMTP等。

IBC协议作为跨链的标准,提供了:

1.互操作性

IBC协议作为跨链的基础,在此之上可以实现真正的跨链互操作,包括:

1.)资产跨链:将不同链上的资产转移到目标链上,比如把ETH转账到ATOM链上

2.)信息跨链:从其他链上获取信息并使用,比如抵押以太坊链上的资产后在Cosmos上借贷

跨链的价值不仅仅体现在代币的价值上,还能带来真正的区块链构成的互联网,就像我们现在使用的互联网

2.安全性

功能越少,出现能够被攻击的安全漏洞的可能性就会越小。 且IBC假设不同的链互不信任,IBC协议的安全来自Tendermint共识的最终性,而我们前文所讨论的BFT的安全性和轻节点的验证功能能给予足够的安全性,没有再引入其他的可信任假设。

3.通用性

对技术的追求可能没有尽头,但是技术作为服务需求的工具,最终的判断来自于用户。所以一个技术被采纳时,选择的可能不是最好的技术,而是选择最有用户基础的技术。类似互联网技术的发展历程,TCP/IP网络技术被提出之后,也出现过性能更好的解决方案,但都没有被整个网络所采纳。区块链也是一样,除了对技术的研究,需要用户需求的技术才可能被接纳。

IBC协议从通用的角度仅对应用层提出最少的要求,有利于IBC协议广泛部署,当越多的区块链加入IBC的标准,IBC成为真正的跨链标准的可能性就越大。

4.兼容性

作为通用标准,IBC需要适应各种类型且互不信任的区块链。确保区块链作为状态机的结果是确定的,即无法撤,才能保证通信的正确的执行。这意味着区块链必须具有提供最终确定性的共识机制才能兼容,目前POW的比特币和以太坊还不支持,但是通过后文介绍的Gravity Bridge也能实现跨链。

1.3e2)跨链协议内容

类似于TCP/IP协议定义了不同的计算机在传输信息是采用了IP地址(计算机 ID)、端口号(应用程序ID)、协议号(传输层标准)的结构来传输信息。

IBC协议里,类似于定位计算机的IP地址是channel ID,定位应用程序的端口是port ID,再加上客户端同步信息构成了标准化沟通信息的方式。简洁的协议减少了跨链通信带给链本身的负担,没有过多约束参与跨链通信的应用本身,更加灵活。

Port ID

每一个模块化的应用程序有一个特定的端口,称为Port ID

Channel 通道

首先每个模块需要建议使用IBC通信协议的通道,并且可以建立多个通道,避免当个通道信息过载。初始化通道时,遇到错误的返回也可以拒绝通道。

同时通道可以保证交易的有序性,理论上也可以支持无序的通道,方便验证有效性。

Port端口

每个模块都可以绑定任意数量的端口,在和其他模块建立通道时可以使用不同的端口ID,可以适应不同的应用场景的信息。

轻客户端

轻客户端需要同步对方的区块头信息,实时跟踪对方的验证者集合来验证交易的有效性和合法性,支持使用CosmosSDK构建的同构区块链

Handshake 握手连接

在建立通信之后,需要确认操作模式,达成协定之才可以进行的信息的交换

1)A链发起跨链到B链的OpenInit请求,等待Relayer 接收到该请求。

2)Realy收到 OpenInit的请求之后,构造OpenTry 的请求发送到B链上。

3)B链收到OpenTry请求之后,同意并确认之后生成OpenACK数据包,并由 Relayer按照同样的方式发送给A链。

4)A链通过OpenACK数据包判断此次握手是否成功,成功则发送 OpenConfirm 并把包含信息的数据包返回B链,成功传输信息;否则握手失败

Packet数据包

定义了跨链通信的必要信息,包含发送和接收方

warnning 风险提示
app_icon
ChainCatcher 与创新者共建Web3世界