ELI5:什么是IBC?

  • IBCteam
  • 发布于 2022-12-24 14:37
  • 阅读 24

这篇文章深入探讨了跨链通信协议(IBC),介绍了其工作原理、运输层和应用层的结构,以及IBC在解决区块链孤岛问题方面的重要性。通过无缝的数据传输和信任最小化的设计,IBC使得不同区块链之间能够实现安全和可靠的交互,为去中心化金融和其他应用的发展奠定基础。

比特币的诞生导致了不同设计决策和用例的区块链的寒武纪大爆发。虽然这些分布式账本服务于不同的目的,但它们作为孤立的信息孤岛存在(并在某种程度上仍然存在),互相之间的有意义互动有限。

与互联网促使不同地区的计算机相互沟通类似,一种类似于区块链之间的连接组织信的技术是实现真正价值累积所必需的。区块链间通信(Inter-Blockchain Communication,IBC)协议旨在实现这个目的。

IBC是一个通用的互操作性协议,允许两个不同的区块链互相交流。IBC确保了 可靠有序经过认证 的通信。

或许,IBC最重要的特性之一是信任最小化。在区块链中,信任最小化特性与安全性是密切相关的。没有任何分布式系统是完全“无信任”的。因此,安全性的问题归结为谁或什么是可信的,以及该信任如何被侵犯,即,被信任的实体需要什么条件才能被破坏?

在这个意义上,与大多数桥接方案不同,IBC不使用任何可信的第三方。这意味着,如果你信任两个特定的链来使用它们提供的功能(以及它们默认的共识机制),那么在使用IBC进行互动时不需要额外的信任假设。

IBC不仅仅是一个促进代币转账的桥接。它是一个 通用- 目的 消息传递协议。这意味着 任何形式的数据 都可以通过IBC进行传输。

IBC是如何工作的?

要理解IBC是如何工作的,重要的是要分开IBC的两个不同层次——1)传输层和2)应用层。

两个区块链之间IBC数据包流的高级描绘

传输层

通过IBC传送的消息被封装在数据包中。传输层负责 传输认证排序 这些数据包。

传输层并不指定数据包中的内容或接收链应如何解读这些数据。从传输层的角度看,数据包中的信息仅仅是随机字节。

传输层的关键组件包括 轻客户端、转发者、连接和通道

轻客户端是区块链的轻量级表示。与全节点不同,轻客户端不存储区块链中所有消息的完整历史记录。它们也不执行交易。相反,轻客户端旨在连接到全节点,并验证区块头(包含区块中数据的摘要)。这使得轻客户端在存储和计算方面都很高效。

两个独立的区块链 AB 在IBC上交互时,拥有对方的轻客户端。这意味着 A 的区块链上有一个轻客户端,作为 B 区块链的轻量级表示。当 A 想要与 B 发送某个消息 ‘X’ 时,它会发送包含该消息的区块的区块头,并附带该消息的承诺证明给 B。承诺证明用于验证 A 上是否存在某个特定消息。使用区块头和证明,B 加密验证 A 确实执行了 X正是这种在IBC中使用轻客户端的方式,使得区块链可以在不需要可信第三方的情况下进行消息交换。

但是 AB 并不直接相互发送这些消息/数据包。相反,当 A 想向 B 发送消息时,它在其状态机中提交或存储一个包含消息的数据包的哈希值。不断观察这些消息的离线过程被称为 转发者。当它们看到 A 在其状态机中提交了一个意图发送给 B 的消息时,它们只需拾取该消息并将其传递给 B。请注意,转发者是无权限的,任何人都可以运行它们。

连接 负责连接两个不同链上的轻客户端。而 通道 则是在这些不同链上的模块之间转移数据包的通道。因此,尽管连接是链特定的,但通道是模块特定的。每个通道的端都有一个唯一的通道ID(和一个端口ID),用于准确路由两个模块之间的数据包。

应用层

应用层是最终用户所交互的部分。它由各种使用传输层构建的应用程序组成。传输层并不指定数据包需要如何解读,这一角色由应用层来承担。

IBC支持多种应用程序,例如可替代/不可替代代币转账、跨链预言机馈送、跨链账户、跨链查询、手续费中间件(激励转发者)等。

例如,代币转账的IBC级应用——称为跨链标准20(ICS 20)——指定了数据包的结构和如何被接收链解读。在可替代代币转账的情况下,数据包包含有关发送者、接收者、金额和面值(IBC denom)的信息。面值字段追踪了特定代币到达某条链的路径。关于如何处理这些数据包的逻辑也由ICS 20指定。

理解IBC的一个简单类比是邮寄系统。当你向某人发送信件时,你通过邮政服务将包含信件的信封交给他们,邮政服务会将其从你这里收集,并投递到收件人的信箱中。收件人随后打开该信封并阅读你的信件。IBC的传输层可以被看作是邮政服务。邮政服务并不会告诉你信件的内容应该是什么,或者收件人应如何解读你的信息。

他们也不知道信封的内容。它只执行从A点收集信封并发送到B点的操作。信封本身可以被看作是从一个链发送到另一个链的IBC数据包。在这个信封上,你会指定收件人的地址。这和IBC数据包包含有关谁发送了数据包(由通道ID指定)以及它是指向谁的(由对方通道ID指定)是类似的。最终,接收者(应用程序)负责打开信封(数据包)并解读信件的内容。

IBC可以用于什么?

除了可替代代币转账外,两个其他IBC级应用包括跨链账户和跨链安全

跨链账户促进链与链之间的互动,同时保持在单一接口上。这有效意味着,与 B(称为“主链”)上可执行的任何操作,例如转移、质押或治理提案投票,都可以从 A(称为“控制链”)完成。跨链账户通过改善用户体验显著提高了跨链的组合性。

跨链安全是Cosmos生态系统的共享安全版本。它允许一个区块链按需租赁另一个链的安全性。这对于新的链特别有用,因为它们可以选择利用已有网络(如Cosmos Hub)提供的安全性。跨链安全消除了链自启动验证人的需求。

使用IBC作为核心原语所能执行的应用范围持续增长。跨链NFT转移和跨链查询(即一个链可以读取另一个链的状态)正在开发中,很快将准备好投入生产。

IBC解决了什么问题?

一句话,IBC解决了区块链作为孤岛存在且互动有限的问题。区块链之间的互操作性对于最大化价值累积是必要的。

每条区块链都旨在满足一种或多种特定的用例。如果无法在多个区块链之间利用这些用例,将极大地削弱它们的效用。互联网所带来的突破是,信息可以轻松地在不同地区之间流动。同样,不同区块链的效用也需要在多个平台上自由可及。

例如,用户可能希望使用某条区块链上的稳定币,通过另一个区块链上的去中心化交易所(DEX)产生收益,或者他们可能希望利用另一条区块链提供的隐私保护特性。需要跨链之间的互操作性才能实现这些用例及更多。

IBC不仅解决了互操作性问题,而且以一个信任最小化、安全、可扩展和通用的方式做到这一点。

作为应用开发者,我如何使用IBC?

Cosmos SDK的模块化特性使开发者不必担心一些抽象层次,例如轻客户端、连接、证明验证等。对于开发者来说,最相关的要求和功能需要熟悉的是通道端口。有关IBC的更多详细信息,你可以参阅我们的开发者门户

如果你使用Cosmos SDK构建你的区块链,则使SDK模块支持IBC的必要步骤在这里详细说明。你还可以申请加入“跨链构建者计划”,这是一个ICF倡议,以获得在Cosmos中构建的支持。

关于作者:本文是由 Adi Ravi Raj 撰写的,他是Interchain GmbH的IBC协议分析师。

  • 原文链接: medium.com/the-interchai...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
IBCteam
IBCteam
江湖只有他的大名,没有他的介绍。