#ibc #handler #cosmos #blockchain #entry-point

no-std ibc-core-handler

ibc-rs 维护,提供 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 日

#821神奇豆子

Download history 1180/week @ 2024-05-05 1358/week @ 2024-05-12 1250/week @ 2024-05-19 1129/week @ 2024-05-26 2331/week @ 2024-06-02 901/week @ 2024-06-09 789/week @ 2024-06-16 890/week @ 2024-06-23 842/week @ 2024-06-30 748/week @ 2024-07-07 602/week @ 2024-07-14 422/week @ 2024-07-21 169/week @ 2024-07-28 73/week @ 2024-08-04 371/week @ 2024-08-11 109/week @ 2024-08-18

每月下载量 744
14 个crate中使用(通过ibc-core

Apache-2.0

305KB
5K SLoC

IBC 核心库

这是顶级库,将互链通信(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保持100%兼容。

贡献

IBC用英语在cosmos/ibc存储库中指定。任何协议更改或澄清都应在此处贡献。

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

依赖关系

~16MB
~320K SLoC