Skip to content

Latest commit

 

History

History
91 lines (52 loc) · 3.59 KB

File metadata and controls

91 lines (52 loc) · 3.59 KB
ics title stage category kind requires author created modified
25
处理程序接口
草案
IBC/TAO
实例化
2, 3, 4, 23, 24
Christopher Goes <cwgoes@tendermint.com>
2019-04-23
2019-08-25

概要

本文档描述了标准 IBC 实现(称为 IBC 处理程序)向同一状态机内的模块公开的接口,以及 IBC 处理程序对该接口的实现。

动机

IBC 是一种模块间通信协议,旨在促进独立区块链上的模块之间可靠、经过身份验证的消息传递。模块应该能够得知它们与之交互的接口以及它们必须遵守的要求,以便安全地使用接口。

定义

相关定义在参考的先前标准(定义了功能的地方)中适当地定义。

所需属性

  • 客户端,连接和通道的创建应尽可能无需许可。
  • 模块集应为动态的:链应该能够添加和删除模块,这些模块本身可以使用持久性 IBC 处理程序任意绑定到端口或从端口取消绑定。
  • 模块应能在 IBC 之上编写自己的更复杂的抽象,以提供附加的语义或保证。

技术规范

注意:如果主机状态机正在使用对象能力认证(请参阅 ICS 005 ),则所有使用端口的函数都将带有附加的能力键参数。

客户端生命周期管理

默认情况下,客户端是没有所有者的:任何模块都可以创建新客户端,查询任何现有客户端,更新任何现有客户端以及删除任何未使用的现有客户端。

处理程序接口暴露 ICS 2 中定义的createClientupdateClientqueryClientConsensusStatequeryClientsubmitMisbehaviourToClient

连接生命周期管理

处理程序接口暴露 ICS 3 中定义的connOpenInitconnOpenTryconnOpenAckconnOpenConfirmqueryConnection

默认的 IBC 路由模块应允许外部调用connOpenTryconnOpenAckconnOpenConfirm

通道生命周期管理

默认情况下,通道归创建端口所有,这意味着只有绑定到该端口的模块才允许在通道上检查、关闭或发送。一个模块可以使用同一端口创建任意数量的通道。

处理程序接口暴露了 ICS 4 中定义的chanOpenInitchanOpenTrychanOpenAckchanOpenConfirmchanCloseInitchanCloseConfirmqueryChannel

默认的 IBC 路由模块应允许外部调用chanOpenTrychanOpenAckchanOpenConfirmchanCloseConfirm

数据包中继

数据包是需要通道许可的(只有拥有通道的端口可以在其上发送或接收)。

该处理程序接口暴露sendPacketrecvPacketacknowledgePackettimeoutPackettimeoutOnClosecleanupPacket,如 ICS 4中定义 。

默认 IBC 路由模块应允许外部调用sendPacketrecvPacketacknowledgePackettimeoutPackettimeoutOnClosecleanupPacket

属性与不变性

此处定义的 IBC 处理程序模块接口继承了其关联规范中定义的功能属性。

向后兼容性

不适用。

向前兼容性

只要在语义上相同,在新链上实现(或升级到现有链)时,此接口可以更改。

示例实现

即将到来。

其他实现

即将到来。

历史

2019年6月9日-编写草案

2019年8月24日-修订,清理

版权

本规范所有内容均采用 Apache 2.0 许可授权。