#type #ibc #connection #cosmos #blockchain #data-structures

无std ibc-core-connection-types

ibc-rs 维护,封装了ICS-03连接语义的基本数据结构和领域类型,如Inter-Blockchain Communication (IBC)协议中指定。设计用于通用适用性,以促进不同IBC启用项目之间的开发和集成。

10 个版本 (6 个重大更改)

0.54.0 2024年8月12日
0.53.0 2024年5月14日
0.52.0 2024年4月26日
0.51.0 2024年3月26日
0.48.1 2023年11月27日

#2336 in 神奇豆

Download history 1786/week @ 2024-04-22 1292/week @ 2024-04-29 1261/week @ 2024-05-06 1558/week @ 2024-05-13 1370/week @ 2024-05-20 1339/week @ 2024-05-27 2524/week @ 2024-06-03 1153/week @ 2024-06-10 1029/week @ 2024-06-17 1361/week @ 2024-06-24 1030/week @ 2024-07-01 900/week @ 2024-07-08 997/week @ 2024-07-15 732/week @ 2024-07-22 410/week @ 2024-07-29 223/week @ 2024-08-05

每月下载量 2,376 次
用于 26 个crate(6个直接使用)

Apache-2.0

315KB
6.5K SLoC

IBC核心

这是一个顶级库,将Inter-Blockchain Communication (IBC)核心模块重新导出为元crate。它用于简化将各种IBC核心模块导入和集成到您的区块链中的过程。

IBC是一个分布式协议,它使不同的主权区块链之间的通信成为可能,IBC核心是处理数据包传输、认证和排序(TAO)的协议部分。

ibc-core 包中,其结构旨在为外部用户提供灵活性。您可以选择使用整个 ibc-core 包,或者有选择性地导入特定的库。从那里,您还可以选择导入整个子模块(例如 ibc-core-client 包),或者只导入模块关联的数据结构(例如 ibc-core-client-types)。

这种多功能性使主机(包括链集成者、中继或任何 IBC 工具项目)能够在最适合其特定需求的基础上构建解决方案。

子包

目前,ibc-core 包包含了以下 IBC 核心规范的实现

ICS-02: 客户端语义

ICS-03: 连接语义

ICS-04: 通道和包语义

ICS-24: 主机要求

ICS-25: 处理器接口

ICS-26: 路由模块

与跨链标准(ICS)的差异

该包在多个方面与 ICS 规范 存在差异。以下提供更多详细信息。

模块系统:不支持不受信任的模块

ICS-24(主机要求)对主机状态机必须支持的模块系统提出了以下要求

主机状态机必须支持模块系统,其中自包含的、可能彼此不信任的代码包可以在同一账本上安全执行 [...]。

该包目前不支持彼此不信任的包。也就是说,主机状态机上的模块被认为是完全可信的。在实践中,这意味着每个模块要么是由主机状态机开发者编写的,要么已经完全经过他们的审查。

端口系统:无对象能力系统

ICS-05(端口分配)要求主机系统支持对象能力引用或源认证。

在前一种对象能力的情况下,IBC 处理器必须有能力生成对象能力,这是唯一、不可复制的引用,可以传递给模块,并且不会被其他模块复制 [...]。在后一种源认证的情况下,IBC 处理器必须有能力安全地读取调用模块的源标识符,这是主机状态机中每个模块的唯一字符串,不能被模块更改或被其他模块伪造。

该包目前不需要主机系统的任何一种。由于假设模块是可信的,因此不需要保护资源的对象能力系统。

有关此方面的更多背景信息,请参阅 此问题

端口系统:传输和释放端口

ICS-05(端口分配)要求 IBC 处理器允许 传输端口的所有权释放端口

我们目前不支持这两者。

异步确认

该标准允许模块 异步确认包。这允许模块接收包,但仅在稍后时间应用更改(之后它们会写入确认)。

我们目前强制应用程序将数据包作为onRecvPacket()的一部分进行处理。如果您需要为您的应用程序异步确认,请提出一个问题。

请注意,这仍然使我们与ibc-go保持100%兼容。

贡献

IBC在cosmos/ibc仓库中用英语规定。任何协议更改或澄清都应该在那里贡献。

如果您有兴趣贡献,请查看CONTRIBUTING指南。我们欢迎并感谢社区贡献!

依赖项

约15MB
约310K SLoC