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

no-std ibc-core-handler-types

ibc-rs 维护,封装了由跨链通信(IBC)协议指定的必要 ICS-25 处理器接口数据结构和领域类型。旨在通用适用性,以简化不同 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日

#767 in 魔法豆

Download history 952/week @ 2024-05-01 1482/week @ 2024-05-08 1508/week @ 2024-05-15 1203/week @ 2024-05-22 1668/week @ 2024-05-29 1989/week @ 2024-06-05 1288/week @ 2024-06-12 1161/week @ 2024-06-19 1257/week @ 2024-06-26 901/week @ 2024-07-03 963/week @ 2024-07-10 899/week @ 2024-07-17 590/week @ 2024-07-24 306/week @ 2024-07-31 455/week @ 2024-08-07 367/week @ 2024-08-14

每月下载量1,877
23 个crate中(直接使用9个) 使用

Apache-2.0

520KB
11K SLoC

IBC核心

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

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

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

这种多功能性赋予了主机(包括链集成商、中继或任何IBC工具项目)根据自己的特定需求在最佳层上构建解决方案的能力。

子crate

目前,ibc-corecrate包含以下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指南。我们欢迎并感谢社区贡献!

依赖项

约15MB
约311K SLoC