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

no-std ibc-core-host-types

ibc-rs 维护,封装了ICS-24主机要求的基本数据结构和领域类型,如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日

6魔法豆

Download history 1925/week @ 2024-04-25 1065/week @ 2024-05-02 1701/week @ 2024-05-09 1398/week @ 2024-05-16 1235/week @ 2024-05-23 1780/week @ 2024-05-30 1936/week @ 2024-06-06 1230/week @ 2024-06-13 1217/week @ 2024-06-20 1289/week @ 2024-06-27 940/week @ 2024-07-04 872/week @ 2024-07-11 951/week @ 2024-07-18 576/week @ 2024-07-25 286/week @ 2024-08-01 523/week @ 2024-08-08

每月下载量2,447
用于 31 个crate(直接使用13个)

Apache-2.0

125KB
2.5K SLoC

IBC核心

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

IBC是一种分布式协议,它使不同的主权区块链之间能够进行通信,而IBC核心是该协议处理数据包传输、身份验证和排序(TAO)的部分。

ibc-core crate中的结构旨在为外部用户提供灵活性。您可以选择使用整个ibc-core crate,或者选择性地导入特定的库。从那里,您还可以选择导入整个子模块(例如,ibc-core-client crate),或者仅导入与模块相关联的数据结构(例如,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完全兼容。

贡献

IBC的规范以英文形式在cosmos/ibc仓库中指定。任何协议更改或说明都应该在那里贡献。

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

依赖项

~13MB
~265K SLoC