参与贡献
SnarkVM 贡献

SnarkVM 贡献指南

本指南详述了更新 snarkVM 并将这些变更传播到 Aleo 网络所需的步骤。

分支概览​

staging 分支 (opens in a new tab)

  • 该分支作为集成和初步测试变更的暂存环境,在将变更推升到主网分支之前使用。

mainnet 分支 (opens in a new tab)

  • 生产环境分支,仅合并经过充分验证的稳定变更。它直接镜像通过验证的 staging 分支。用于创建生产版本发布。

snarkVM 拉取请求(PR)的影响​

  • 当新的 PR 合并到 snarkVM 的 staging 分支时,snarkOS 也必须更新以反映更新后的 snarkVM 依赖。这需要为 snarkOS 创建单独的 PR,确保通过 snarkOS 贡献指南中指定的所有检查。
  • 在某些情况下,snarkVM PR 可能在 snarkOS 中有对应的"姊妹 PR",这对 snarkOS 的成功编译是必需的。始终检查 PR README 中是否有"姊妹 PR"字样。

snarkVM PR 的审核与合并流程​

1. 审核 snarkVM PR:

  • 仔细审核 snarkVM 的 PR,考虑其状态和任何评论。

2. 在 snarkVM PR 上运行 CI:

  • 执行持续集成(CI)以验证已审核的 PR。

3. 检出并推送 snarkVM 分支:

  • 检出相关的 snarkVM 分支并将其推送到仓库。

4. 合并 snarkVM PR:

  • 合并已审核并获得批准的 snarkVM PR。

创世块和参数重新生成​

  • 重新生成创世块和参数:
    • 要确定参数是否需要重新生成和上传,运行位于 snarkVM/parameters/scripts/ 中的脚本。
    • 运行脚本后,执行 git status。如果未检测到任何变更(git diff),则无需上传任何内容。
    • 首次使用参数 CDN:
      • 如果这是首次使用参数 CDN,还需上传 .usrs 文件。这些文件是固定的,不会在 git diff 中显示任何变更,但必须存在于参数 CDN 中。
    • 重新采样创世块:
      • 您可能需要使用 snarkup 工具重新采样创世块。

更新 snarkOS 以引用最新的 snarkVM 提交​

  • 创建 snarkOS PR:
    • 为 snarkOS 创建 PR,更新 Cargo.toml 和 Cargo.lock 文件以指向最新的 snarkVM 提交哈希。
    • 遵循 snarkOS 贡献指南中列出的流程以确保适当的集成。