待确认的问题
1. 目标分类清晰
确认:- EVM 是直接编译器目标。
- NEAR/CosmWasm 是 Wasm 宿主目标。
- Solana 是二进制工具链目标。
- Sui/Aptos 是 Move 源代码生成目标。
- Psy/DPN 是 ZK 电路源代码生成目标。
2. 能力是显式的
合约使用的每个面向链的操作都应通过 capability-registry.md 中的能力 id 列出:- storage
- caller/signer
- value/native token
- events/logs
- cross-contract call / CPI / submessage
- account/object/resource
- crypto / precompile / syscall
3. Solana 不是 EVM 形态的
Solana 评审重点:- 账户必须是显式的。
- 指令数据必须是显式的。
- PDA 必须是显式的。
- CPI 必须是显式的。
- 不要将 Solana 状态隐藏为通用的合约存储。
4. Wasm 家族区分宿主 ABI
NEAR 和 CosmWasm 都是 Wasm,但绝不能共享同一个目标 id。 确认:- NEAR 有自己的方法导出、宿主 KV、promises。
- CosmWasm 有 instantiate/execute/query、region ABI、submessages。
- Wasm 运行时可以共享;宿主桥接必须分开。
5. Move 使用源代码生成
第一阶段 Move 生成 Move 源代码/包,而不是在 MoveVM 上运行完整的 Lean 运行时。 确认:- Lean 证明在代码生成之前完成。
- Move 仅携带可执行逻辑。
- IR 显式表达 resource/object/ability。
- Sui 和 Aptos 分开处理。
6. ZK 目标不伪装成 Yul 目标
Psy/DPN 评审重点:- 首先生成
.psy源代码。 - 将 DPN 电路 JSON 视为制品,而不是 ProofForge 自己的 IR。
- 保持 ZK/电路能力显式化。
- 在公共编译器 API 足够稳定之前,不要直接发射 Psy 内部结构。
7. 从第一天起就包含制品元数据
每个目标构建都应发射:- 目标 id
- 制品路径和哈希
- 源模块
- 使用的能力
- 工具链版本
- 证明/检查状态
- 警告
推荐评审顺序
已记录的决策
参见 decisions.md 了解:- 在非 EVM spike 之前的第 1 阶段
- 并行 CosmWasm + Solana spike
solana-sbpf-linker作为主要 Solana 路径- Aptos 优先的 Move POC
psy-dpn作为 Experimental 阶段的 ZK 电路源代码生成目标
暂不执行
- 在两个 Experimental 目标存在之前,不进行云平台 UI 开发。
- 自动 Solana 账户推断。
- 不将直接 Move 字节码生成作为第一个 Move 路径。
- 不为所有 Wasm 链使用同一个 Wasm 目标 id。
- 在生成的
.psy源代码工作之前,不直接进行 Psy DPN 内部发射。 - 不承诺“任何 Lean 代码都能在每条链上运行”。
好的信号 vs 坏的信号
好的信号:- EVM 基准保持稳定。
- 每个新目标都有冒烟测试。
- 不支持的能力会产生清晰的错误。
- 制品元数据在各目标间趋于统一。
- 共享场景在至少两个截然不同的目标上工作。
- 后端堆积特殊情况的
if target == ...分支。 - 能力 id 在文档间不一致。
- Solana 账户逻辑隐藏在运行时中。
- Move 代码生成是缺乏 IR 约束的字符串模板。
- ZK 目标向能力检查器隐藏证明/电路限制。
- 文档与 CLI 产生脱节。