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 日 |
#44 在 #core
每月 1,239 次下载
用于 13 个crate(7 个直接使用)
290KB
4.5K SLoC
IBC 核心库
这是顶级库,将跨链通信(IBC)核心模块作为元crate重新导出。它旨在简化将各种 IBC 核心模块导入和集成到您的区块链中的过程。
IBC 是一种分布式协议,允许不同主权区块链之间的通信,而 IBC 核心是处理数据包传输、认证和排序(TAO)的部分。
在 ibc-core
crate 中的结构设计用于为外部用户提供灵活性。您可以选择使用整个 ibc-core
crate,或者选择性导入特定的库。从那里,您也可以选择引入整个子模块(例如 ibc-core-client
crate),或者仅引入模块相关的数据结构(例如 ibc-core-client-types
)。
这种多功能性赋予主机,包括链集成器、中继器或任何 IBC 工具项目,在最适合其特定需求的基础上构建解决方案的能力。
子 crate
目前,ibc-core
crate 包含以下 IBC 核心规范的实现
ICS-02:客户端语义
ICS-03:连接语义
ICS-04:通道和包语义
ICS-24: 主机要求
ICS-25: 处理器接口
ICS-26: 路由模块
与跨链标准(ICS)的偏差
该crate在多个方面与ICS规范存在偏差。以下为更多详细信息。
模块系统:不支持不受信任的模块
ICS-24(主机要求)给出了主机状态机必须支持的关于模块系统的以下要求
主机状态机必须支持一个模块系统,其中自包含的、可能相互不信任的代码包可以在同一账本上安全执行[...]。
该crate目前不支持相互不信任的包。也就是说,假设主机状态机上的模块完全可信。在实践中,这意味着每个模块要么是由主机状态机开发者编写的,要么是由他们彻底审查过的。
端口系统:无对象能力系统
ICS-05(端口分配)要求主机系统支持对象能力引用或源认证。
在前一种对象能力情况下,IBC处理器必须能够生成对象能力,唯一的、不透明的引用,可以传递给模块,并且不会被其他模块复制。[...]在后一种源认证情况下,IBC处理器必须能够安全地读取调用模块的源标识符,这是主机状态机中每个模块的唯一字符串,不能被模块修改或被其他模块伪造。
该crate目前不要求主机系统中的任何一项。由于假设模块是可信的,因此不需要保护资源的对象能力系统。
有关此内容的更多背景信息,请参阅此问题。
端口系统:传输和释放端口
ICS-05(端口分配)要求IBC处理器允许传输端口的所有权和释放端口。
我们目前都不支持。
异步确认
标准允许模块异步确认数据包。这允许模块接收数据包,但仅在稍后时间(在此之后,它们将写入确认)应用更改。
我们目前强制应用程序将数据包作为onRecvPacket
的一部分进行处理。如果您需要为您的应用程序提供异步确认,请提出一个问题。
请注意,这仍然使它与ibc-go
保持100%兼容。
贡献
IBC在cosmos/ibc仓库中以英语指定。任何协议更改或说明都应在此处贡献。
如果您有兴趣进行贡献,请参阅CONTRIBUTING指南。我们欢迎并感谢社区贡献!
依赖关系
~16MB
~318K SLoC