CIP 全称是 Conflux Improvement Proposals,即 Conflux 改进提案。CIP 是一个设计文件,向 Conflux 社区提供信息,或规定 Conflux 的一些新功能、流程或环境。CIP 中应当简介该功能的技术规范以及基本原理。
我们计划将 CIP 作为提议新功能、收集社区对问题的意见以及记录已纳入 Conflux 的设计决策的主要机制。CIP 作者负责在社区内构建共识、记录有异议的观点。由于 CIP 在版本库中作为文本文件进行维护,因此 CIP 的修订历史记录就是功能提案的历史记录。
对于 Conflux 执行者来说,CIP 是一种很方便的追踪执行进程的方式。理想情况下,执行的维护者会列出他们已经执行过的 CIP 的清单,这为终端用户提供了一种便捷的途径来了解指定执行或库的当前状态。
CIP 分类
有 4 种不同类型的 CIP:
·向后兼容变更:这种 CIP 中更新的客户端会完全兼容以前的旧版本,这种变更会引入另外的远程过程调用(RPC)API 或其他新功能。提交向后兼容变更时请采用以下步骤:
· 复刻 Conflux Rust 库,提交拉取请求(PR);
· 如果是复杂变更,首先要提交问题与核心开发团队沟通。
数据库/ RPC 变更:更新的客户端能够与以前的版本共存,但是它可以更新现有 RPC 的接口或行为,或者可以更改区块链数据库格式。需要根据这些 RPC 对应用程序进行修改和/或清理数据库以重新开始进行同步。要提交数据库/RPC变更,可以按照上述步骤进行操作,但必须先提交一个问题。
·网络协议变更:这些更改不涉及 Conflux 协议的规范,需要更新 Conflux 或 Conflux-Rust 中的 P2P 网络协议。无需硬分叉即可实现更改,但需要特殊的协议版本处理和兼容性测试。要提交协议变更,请按照以下步骤操作:
·提交一个 CIP 草案(Draft)。
·讨论该草案(Draft)直至草案认可。请注意,在 CIP 中,指定当前执行如何与先前协议版本保持兼容性是很重要的(通过版本控制或其他技术实现)。如果无法做到这一点,则应将变更划分为规范变更。
·在 Conflux-Rust 中创建与该 CIP 相关的问题。
·提交 PR 执行该 CIP。
·审核、测试、和/或确认执行。PR 会被合并到主分支上。核心开发团队可能会选择将 PR 合并到其他分支,进行 Conflux-Rust 客户端发布。
·发布版本实现变更后,将 CIP 状态更新为“最终版”。
·规范变更:此类变更需要更新 Conflux 协议的规范,需要硬分叉才能实现变更,完全没有向后兼容性。进行规范变更的一般步骤如下:
·提交一个 CIP 草案。草案中应讨论如何在硬分叉中实现变更。
·讨论该草案直至草案认可。
·在 Conflux 协议库中创建与该 CIP 相关的问题。
·提交 PR 至 Conflux 协议库根据该 CIP 更改规范。
·在 Conflux Rust 库中创建与该 CIP 相关的问题。
·提交 PR 执行该 CIP。
·审核、测试、和/或确认执行。PR 会被合并到主分支上。
·等待硬分叉以实现变更。更改 CIP 状态至“最终生成”。