#ibc #connection #cosmos #blockchain #data-structures

no-std ibc-core-connection

ibc-rs 维护,包含 ICS-03 连接语义的实现,并重新导出来自 ibc-core-connection-types 包的必要数据结构和域类型

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 日

#116神奇豆

Download history 1373/week @ 2024-04-27 1194/week @ 2024-05-04 1375/week @ 2024-05-11 1249/week @ 2024-05-18 1095/week @ 2024-05-25 2343/week @ 2024-06-01 950/week @ 2024-06-08 807/week @ 2024-06-15 909/week @ 2024-06-22 830/week @ 2024-06-29 713/week @ 2024-07-06 646/week @ 2024-07-13 440/week @ 2024-07-20 180/week @ 2024-07-27 89/week @ 2024-08-03 233/week @ 2024-08-10

每月 1,086 次下载
16 包中使用 16 (3 直接)

Apache-2.0

235KB
4K SLoC

IBC 核心

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

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

ibc-core 包中的结构旨在为外部用户提供灵活性。您可以选择使用整个 ibc-core 包,或者选择性导入特定库。从那里,您还可以选择导入整个子模块(例如 ibc-core-client 包),或者只导入模块关联的数据结构(例如 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
约316K SLoC