#ibc #cosmos #blockchain #tendermint

no-std ibc-core-host-cosmos

ibc-rs 维护,包含特定于 Cosmos 的辅助特性和实现,以简化 IBC 集成,确保与宿主链上 IBC 模块之外模块/组件的正确交互

9 个版本 (破坏性)

新功能 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 日

#139神奇豆

Download history 1343/week @ 2024-04-27 1148/week @ 2024-05-04 1311/week @ 2024-05-11 1208/week @ 2024-05-18 1032/week @ 2024-05-25 2263/week @ 2024-06-01 896/week @ 2024-06-08 767/week @ 2024-06-15 856/week @ 2024-06-22 817/week @ 2024-06-29 697/week @ 2024-07-06 592/week @ 2024-07-13 378/week @ 2024-07-20 134/week @ 2024-07-27 49/week @ 2024-08-03 188/week @ 2024-08-10

每月下载量 877 次
5 个 crate 中使用(通过 ibc

Apache-2.0

545KB
10K SLoC

IBC 核心

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

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

ibc-core crate 内部的结构设计为提供外部用户的灵活性。您可以选择使用整个 ibc-core crate,或者选择性地导入特定库。从那里,您也可以选择引入整个子模块(例如,ibc-core-client crate),或者仅引入模块相关的数据结构(例如,ibc-core-client-types)。

这种多功能性赋予主机,包括链集成器、中继器或任何 IBC 工具项目,在最适合其特定要求的层上构建解决方案的能力。

子 crate

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

ICS-02: 客户端语义

ICS-03: 连接语义

ICS-04: 通道和包语义

ICS-24: 主机要求

ICS-25: 处理器接口

ICS-26: 路由模块

与Interchain标准(ICS)的差异

本crate在某些方面与ICS规范存在差异。更多详情请见下文。

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

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

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

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

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

ICS-05(端口分配)要求主机系统支持对象能力引用或模块的源身份验证。

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

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

关于此的更多背景信息,请参阅此问题

端口系统:转移和释放端口

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

我们目前都不支持。

异步确认

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

我们目前强制应用程序在onRecvPacket中处理数据包。如果您需要应用程序的异步确认,请提出一个问题。

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

贡献

IBC在cosmos/ibc存储库中用英语指定。任何协议更改或说明都应该贡献那里。

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

依赖项

~17MB
~351K SLoC