全长 2760 字,预计阅读 10 分钟 作者:DaviRain 撰文:MiX 微信交流:MixMetaverse
章鱼网络 DaviRain 受邀参加 RUST.CC 中国大会,分享主题为《通过 Substrate - IBC 实现 Substrate 资产跨链》的 Workshop。主要讨论了 IBC 跨链通信协议,以及 Substrate-IBC 在 Substrate 上实现的 IBC 协议,最后通过实战,在 Substrate 的模版上配置 Substrate-IBC 完成一笔 ICS20 的跨链转账演示。
GitHub - octopus-network/substrate-ibc: An IBC implementation on Substrate
主要内容分为四个部分:
- 什么是 IBC 协议以及 IBC 生态的现状
- Substrate-IBC 架构的介绍
- 在 Barnacle 模版配置 Substrate-IBC Pallet
- 演示 IBC 协议的同质化代币跨链转账功能
![](https://i-blog.csdnimg.cn/blog_migrate/894be80f7248e20dd19389e942b1ea52.jpeg)
以下为分享实录:
我们先看看 Substrate-IBC 的来源。
Substrate-IBC 是由 Interchain 基金会资助,由章鱼网络提案并开发的一个 Substrate Pallet 模块,是连接 Polkadot 和 Kusama 与 Cosmos 的重要一步,使两个生态系统之间的资产和数据的安全交换成为可能。Substrate-IBC 模块,使开发者能够创建带有 IBC 功能的 Substrate 区块链。这个模块的目标是让建立在 Substrate 上的区块链可以通过 IBC 协议以无信任方式与其他支持 IBC 的区块链进行交互。为最终的区块链互联网章鱼网络贡献出自己的一份力量。
背景讲完了,下面让我看看 IBC 协议具体到底是什么,以及 IBC 生态的现状。
IBC 是 Inter-Blockchain Communication(跨链通信)的缩写。IBC 协议是一个端到端的、面向连接的、有状态的协议,用于可靠有序和认证的分布式账本上的模块之间的通信。
IBC 协议采用分层设计,主要分为2层:IBC/TAO 和 IBC/APP。
1、IBC/TAO:TAO 是指 Transport,Authorization,Organization,该协议处理分布式账本数据之间的传输,认证、排序。
2、IBC/APP:基于 TAO 构建的上层应用层,定义了从传输层发送过来的数据的处理方式,如同质化代币转移和非同质化代币转移。
实现 IBC 协议的大多数工作集中在 TAO 层,一旦 TAO 层实现,则很容易在 TAO 层之上实现不同的 APP 层。
这里有几点需要注意的是,链之间的通信依赖 Relayer 通信,Relayer 相当于 IBC 协议的物理层,Relayer 会扫描运行 IBC 协议的区块链,并负责向其他区块链报告最新的状态。多个 Relayer 可以为多个 Channel 传输数据,Relayer 使用每个链上的 Light Client 来交易发送过来的消息。
下面我们详细的来看下 IBC 的 TAO 层,IBC 的 TAO 层很清晰的分成了3个模块:Channel、Connection 还有 Light Client。
![](https://i-blog.csdnimg.cn/blog_migrate/28aaebb86affb5a65e6c8c4a531c952a.png)
这也是 IBC 生态内的人都叫 IBC 协议为区块链的 TCP/IP 协议的原因。
当初的 TCP/IP 协议之所以能作为标准互联网协议存在长达近50年之久,是由于它足够简洁和灵活。迄今为止,个人电脑,服务器,智能手机均采用这一协议。这一协议甚至也被用在小型物联网设备上并且经受住了多轮互联网技术更新和迭代的考验。
和 TCP/IP 协议类似,IBC 的特殊性在于它可以将应用层(Application Layer)从传输层和网络层(TAO, Transport, Authorization, Organization)中剥离出来。
这意味着 IBC 定义了数据是如何跨链被发送和接受,并且没有明确具体的数据以及这些数据是如何组织结构的。这使得 IBC 从其他一些需要在应用层实现大量标准化的互联互通解决方案中脱颖而出。
IBC/TAO 层的主要作用,在两个链之间以 Reliable,Rodered and Authenticated 方式传递数据包。
- Reliable 是指原链仅发送一个 Packet,目标链仅接受一次,二者无需信任任何第三方。
- Ordered:是指目标链接受 Packet 的顺序与原链发送 Packet 的顺序一致。
- Authenticated:每个 Channel 分配给特定的模块,只有分配导 Channel 的模块可以通过这个 Channel 发送 Packet,任何其他模块无法使用该 Channel 发送 Packet。
讲完了IBC/TAO的大概分层模块,让我们具体的看下各个模块的具体的实现&#