#ibc #cosmos #blockchain #light-client #data-structures

no-std ibc-core-client

ibc-rs 维护,包含ICS-02客户端语义的实现,并从 ibc-core-client-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日

#2008 in 魔法豆

Download history 1754/week @ 2024-04-22 1272/week @ 2024-04-29 1218/week @ 2024-05-06 1530/week @ 2024-05-13 1349/week @ 2024-05-20 1302/week @ 2024-05-27 2498/week @ 2024-06-03 1132/week @ 2024-06-10 1019/week @ 2024-06-17 1338/week @ 2024-06-24 1027/week @ 2024-07-01 887/week @ 2024-07-08 981/week @ 2024-07-15 742/week @ 2024-07-22 394/week @ 2024-07-29 201/week @ 2024-08-05

每月下载量2,332次
20 个包中使用 (6 个直接使用)

Apache-2.0

245KB
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