#host #ibc #cosmos #blockchain

no-std ibc-core-host

ibc-rs 维护,包含为无缝集成主机链而设计的必需顶级特质,便于访问主机的存储,高效检索执行任何 IBC 数据报所需的 crucial 状态和元数据

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 日

#699神奇豆

Download history 1083/week @ 2024-04-30 1303/week @ 2024-05-07 1597/week @ 2024-05-14 1264/week @ 2024-05-21 1399/week @ 2024-05-28 2356/week @ 2024-06-04 1270/week @ 2024-06-11 937/week @ 2024-06-18 1393/week @ 2024-06-25 903/week @ 2024-07-02 953/week @ 2024-07-09 984/week @ 2024-07-16 688/week @ 2024-07-23 349/week @ 2024-07-30 299/week @ 2024-08-06 510/week @ 2024-08-13

每月下载量 1,991
21 仓库中使用(直接使用 6 个)

Apache-2.0

560KB
11K 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 存储库中以英文指定。任何协议更改或说明都应在此贡献。

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

依赖项

~15MB
~311K SLoC