un.Block

Posted on Oct 09, 2021Read on Mirror.xyz

IBC 跨链传输

❓ 为什么需要 IBC ( Inter-Blockchain Communication )

每个区块链都是一个独立,自治的系统。它们不依赖外部信息,独立地生产区块,验证区块。起初开发者们都在以太坊上用智能合约创造自己的 DApp。这些 DApp 可以互相调用。随着需求的扩展,以太坊逐渐不能满足这些复杂的需求。常见的问题有性能瓶颈, EVM 无法满足需求,无法完全自治。因此开发者开始尝试为自己的 DApp 定制一条区块链。当这些 DApp 都建立在各自定制化的链上时,互相交流便困难了起来。区块链自治的特性成了最大的绊脚石。如何安全有效区去中心化的让消息跨链传输困扰了开发者很久。

IBC 是什么

IBC (Inter-Blockchain Communication Protocol) 是 Cosmos 推出的通用跨链信息传输协议。在保证各个链自治,处理交易速度的同时,IBC 让信息和资产跨链更加的去中心化,安全和便捷。200+ 的服务和应用,超过 800 亿美金的资产采用了 IBC。IBC 就像区块链世界的 TCP/IP 协议,让区块链网络变得可能。

在 IBC 的帮助下,采用不同共识机制,网络的区块链得以互相交流,只要他们的共识机制满足 Fast Finality,即所有交易都会被快速打包,并且无法撤销,更改。

比特币和以太坊并不满足 Fast Finality,因此 Cosmos 为他们定制化了跨链方案:两条支持 Fast Finality 的定制区块链和 IBC。这两条定制链分别跟踪比特币和以太坊的状态。由于这两条定制链兼容 IBC,并且拥有比特币,以太坊的最新状态,跨链问题就此解决。

IBC:举个栗子

接下来我们用 一个例子 来解释一下 IBC 是如何运行的。假设我们有两个使用 IBC 的区块链,地球和 火星。我们希望从地球向火星发送一条 ”Hello World“。我们首先需要运行一个 Relayer 来进行消息的传递。Relayer 会持续检查链的状态,并在另一条链上创建包含对应消息的交易。在使用 IBC 的情况下,地球上会跑一个火星的轻量化客户端,这样地球就可以验证火星的状态,确保 Relayer 传递的信息是具有有效性和准确性。同样,火星也会跑一个地球的客户端。

与 TCP/IP 相同,两条链会先进行握手来进行身份认证,为安全的传输消息做准备。接下来我们只要在地球创建对应的 “Hello World” 消息,Relayer 会将其传输到火星上。IBC 确保数据传输的安全性。接下来便是 onAck,onTimedout 等事件的触发。

需要注意的是 IBC 只负责数据安全的传输。对于数据的序列化则需要建立在区块链上的应用进行处理

Cosmos IBC

IBC 是一种协议,目前 IBC 已经在 Cosmos SDK 中实现,未来将支持 Kepler,Substrate,Tendermint,Codechain。

Cosmos 通过 IBC 进一步壮大了 Cosmos SDK 的影响力。跨链,定制区块链开发的玩家可不止 Cosmos 一家,Polkadot 也有着自己的解决方案。有机会的话我们会向你们介绍 Polkadot 的奇妙之处。