Skip to content

[Audit D-H/D-M] 部署脚本健壮性 #255

@jhfnetboy

Description

@jhfnetboy

来源:全仓综合审计报告 docs/audit/comprehensive-audit-2026-06-11.md §5 部署/运维脚本 · D-H1~H5 / D-M

部署脚本健壮性。多项有部署事故风险,D-H2 / D-H4 建议下次部署前先做

  • D-H1srcHash 跳过机制覆盖不足:compute_src_hash() 只 hash contracts/src/*.sol,不含 lib 子模块 / singleton-paymaster / foundry.toml / 部署脚本 — deploy-core:103-110。升级 OZ、改 optimizer runs、改 wiring 后会被误判"无变化"跳过。建议纳入 hash。
  • D-H2|check 失败不阻塞 + config 先写后验:save_configdeploy-core:317-341)在 run_checks:343-378)之前,且 checks 每个 || true 仅计数 → 部署后 Check01-08 全挂仍写入新地址 + srcHash,下次直接 skip。建议改 deploy → wire → 断言 → 全通过才写 config,任一 check 失败 exit 1
  • D-H3|DeployAnvil 与 DeployLive 各自手写 initialize 参数,易漂移(OperatorConfig 重排已踩同类坑 feat(deploy): Sepolia redeployment with GTokenAuthorization v2.2.0 #196)。建议抽共享 _deployCore()
  • D-H4|wiring 步骤无完整性断言(setStaking / setMySBT / ... 逐条执行,结尾无 require(registry.GTOKEN_STAKING()==staking))— DeployLive.s.sol:200-260。建议末尾加 assert 块。
  • D-H5|srcHash 多人 / 多分支误判 + config 与链上无自动对账。建议 config 增 gitCommit / deployer,skip 前做链上 version() 抽查,CI 加每日 config↔链上 diff 报警。
  • D-M|签名者回退链非 anvil 也可能落到 anvil 默认 key;env source 无校验;硬编码 EntryPoint / Chainlink 散布多脚本;TestAccountPrepare try/catch 吞注册失败。

优先级

High(部署事故风险;D-H2 / D-H4 建议下次部署前做)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions