#ibc #routing #cosmos #blockchain #transport-layer

无std ibc-core-router

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日

2238神奇豆

Download history 1731/week @ 2024-04-22 1266/week @ 2024-04-29 1197/week @ 2024-05-06 1376/week @ 2024-05-13 1268/week @ 2024-05-20 1172/week @ 2024-05-27 2306/week @ 2024-06-03 916/week @ 2024-06-10 766/week @ 2024-06-17 903/week @ 2024-06-24 822/week @ 2024-07-01 753/week @ 2024-07-08 627/week @ 2024-07-15 454/week @ 2024-07-22 118/week @ 2024-07-29 84/week @ 2024-08-05

1,297 每月下载
16 个crate(3个直接)中使用

Apache-2.0

310KB
6.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保持100%兼容。

贡献

IBC以英文形式在cosmos/ibc存储库中指定。任何协议更改或澄清都应该在那里进行贡献。

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

依赖项

~15MB
~312K SLoC