跳到主要内容

ADR 0001:采用 Injective EVM V2 与不可变套件运行时

译文说明:本页是 英文原件 的信息性中文翻译;docs/adr/ 中的英文原件是唯一事实源(不可变证据)。

  • 状态:已接受为源码架构(Accepted for source architecture)
  • 决策日期:2026-08-12
  • 记录日期:2026-08-14
  • 交付状态:切换(cutover)待定;未发布
  • 取代:cbd3d44 中记录的基础期假设

[!IMPORTANT] 就当前测试网切换而言,ADR 0003 取代了本 ADR 的强制性 V1 导入要求。已接受的当前范围以空状态启动 EVM 套件,并将 V1 保留为显式的只读归档预览。

[!NOTE] 当前测试网状态:P1.2 部署证据与 P1.3 空状态(fresh-empty)激活已完成。 P1.4–P1.6 产品验收、安全评审、审批以及最终校验和绑定门禁仍未完成。

背景​

CosmWasm V1 Push 工作流原生运行在 Linux 上。受支持的 Windows 工作流依赖 WSL2 来承载 Linux CLI、injectived 与 Kubo。这一平台不对称性,是选择基于 Injective EVM 构建后继版本(而非执行环境中立的 V2 重写)的主要产品原因。

最初的 EVM 基础方案提出:V2 优先读取、迁移期间一个窄范围的 V1 读回退、 仅 V2 可写、无 V1 写回退、无双写。它还包含一个与最初单体合约布局绑定的 签名迁移执行器。后来的不可变套件(Suite)重写足以改变这些假设,因此这些 决策及其用户可见后果必须显式化。

决策​

  1. 后继版本仍命名为 EVM V2,因为执行环境的变更正是从普通 Windows 操作中移除 WSL2 与 injectived 的机制,同时保留原生 Linux 路径。
  2. 控制平面是一个以单一 SuiteDirectory 为根的、不可升级的九合约套件。 普通客户端不接受任何直接模块地址、代理、混合后端或旧路径回退。
  3. 普通 CLI、Web 与 remote-helper 操作仅走 EVM。原先的 V1 读回退被显式 固定高度的归档证据取代。迁移范围的切换可以增加一次经过验证的一次性 导入;已接受的当前空状态切换不包含导入。
  4. 最初的单体 EVM 注册表 alpha 被 SuiteDirectory、BootstrapCoordinator、 RepositoryCore 与六个边界清晰的业务模块取代,模块绑定不可变且经代码 哈希验证。
  5. 基础期的迁移执行器不再用于该套件。当前的操作员执行器保留给另行审批的 迁移范围,提供仅追加的日志、安全续跑、回执验证与固定区块的导入状态 证据。当前的空状态切换不会调用它。
  6. EVM V2 源码就绪不等于达成平台目标。验收要求:无 WSL2、无 injectived 的干净原生 Windows Git 工作流;无 injectived 的干净原生 Linux 工作流;Web 回执;最终性处理;以及独立的安全审批。状态证据按 范围区分:fresh-empty-suite 用零状态激活证据,迁移范围的切换用导入 状态一致性证据。

EVM V2 这一产品世代名称并不意味着套件协议版本 2。当前 SuiteDirectory 的协议版本是 3。

后果​

正面​

  • Windows 与 Linux 收敛到 EVM JSON-RPC、加密 EVM keystore 与操作系统 原生工具链。
  • 普通客户端只有一个合约信任根,不会从 EVM 错误静默穿越到旧后端。
  • 不可能出现 V1 写回退或双写状态。
  • 不可变的模块绑定、有序导入与证据门禁的激活,使部分部署或被替换的 部署状态可被检测。

破坏性与运维影响​

  • 未导入的 V1 仓库无法通过普通客户端透明 clone。归档访问是一个证据 工作流,不是兼容性后端。
  • 迁移范围的切换必须在切换前盘点、导入、比对并经由经验证的历史别名暴露 每个受支持的 V1 仓库。当前的空状态切换有意不携带 V1 状态。
  • 部署需要九个合约、完整的地址与代码证据、模块一致性、激活证据与固定 区块验证。迁移范围额外要求确定性导入与状态一致性;fresh-empty-suite 则要求零计数与匹配的空根。
  • 当前操作员执行器可用于另行审批的迁移范围,但它不是当前空状态切换的 必要条件。
  • 未来不兼容的协议变更需要后继套件与显式迁移,而不是原地升级。

验收​

公开 profile 在全部发布证据通过之前保持为空。特别是,CI 配置不是验收 证据:确切的评审提交必须保留 Linux 与原生 Windows 结果、Web 回执、 最终性证据,以及独立的哈希绑定审批。迁移范围额外需要真实迁移与导入状态 证据;当前的空状态范围使用其零状态激活证据代替。

Pack 存储可移植性是一个相关但独立的决策,见 ADR 0002。