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

no-std ibc-core-channel-types

ibc-rs 维护,封装了由跨链通信(IBC)协议指定的必要 ICS-4 通道语义数据结构和领域类型。旨在广泛适用,以促进不同 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 日

703魔法豆

Download history 1098/week @ 2024-04-30 1327/week @ 2024-05-07 1620/week @ 2024-05-14 1273/week @ 2024-05-21 1418/week @ 2024-05-28 2365/week @ 2024-06-04 1277/week @ 2024-06-11 948/week @ 2024-06-18 1400/week @ 2024-06-25 906/week @ 2024-07-02 963/week @ 2024-07-09 1001/week @ 2024-07-16 718/week @ 2024-07-23 364/week @ 2024-07-30 324/week @ 2024-08-06 523/week @ 2024-08-13

每月下载量 2,076
25 个crate(5 个直接使用) 中使用

Apache-2.0

470KB
10K 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()的一部分进行处理。如果您需要为您的应用程序异步确认,请提交问题。

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

贡献

IBC在cosmos/ibc存储库中以英文指定。任何协议更改或说明都应在此处贡献。

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

依赖项

约15MB
约312K SLoC