Hardhat部署最佳实践:8 条让项目少走弯路的工程规范
Hardhat 提供的能力非常灵活,但同时也意味着团队很容易写出五花八门的部署脚本。本文整理出 8 条 Hardhat部署最佳实践,按工程视角给出可落地的规范,帮助你的项目从 day one 就走在正确轨道上。基础教程请先看 Hardhat部署完整教程。
一、目录结构标准化
推荐的目录结构:
contracts/主合约与接口scripts/部署与运维脚本tasks/自定义 CLI 任务deployments/部署记录,按网络分文件audits/审计报告与对应版本号
固定目录后,团队成员一眼就能找到需要的内容,新人 onboarding 成本大幅降低。
二、TypeScript 优先
部署脚本应当全部用 TypeScript 编写:
- 编译期就能发现网络名拼写错误
- ABI 类型推断让合约方法调用具备 IntelliSense
- 重构脚本时编辑器能自动跟踪引用
这一规范与 Hardhat实战教程 中演示的写法保持一致。
三、私钥与机密管理
核心原则:私钥永远走环境变量或 KMS,绝不写进仓库。
- 本地开发
.env,并加.env.example给团队参考 - CI 用 Secrets,部署完成立即轮换
- 主网部署优先用硬件钱包或 Safe 多签代签
这与 Hardhat部署安全审计 中提到的私钥隔离原则完全一致。
四、网络配置中心化
所有网络配置抽到一个独立文件:
networks.config.ts导出所有网络对象hardhat.config.ts直接 import 使用- 新增链时只改一处,避免散落各处的硬编码
五、部署脚本可重入
部署脚本应当具备「重复运行不出错」的能力:
- 部署前先读
deployments/<network>.json,已部署则跳过 - 部署完成立即写入文件,CI 失败可恢复
- 区分「初次部署」「升级」「重置」三种语义,明确传参
这种设计在 Hardhat部署进阶教程 中被反复强调,是 CI 部署稳定的基石。
六、Verify 自动化
Verify 必须脚本化,杜绝手动操作:
- 在部署脚本末尾自动调用 hardhat-verify
- 失败时重试 3 次,仍然失败则告警
- 多链 Verify 走统一 API key 管理
七、Gas 配置显式化
生产部署不能依赖节点自动估算:
- 明确指定 maxFeePerGas 与 maxPriorityFeePerGas(或 legacy gasPrice)
- 部署前打印一份 Gas 预算给团队 review
- 主网拥堵时通过 dry-run 评估真实消耗
八、币安智能链与多链规范
BNB Chain 部署的特殊规范:
- 始终
type: 0,不使用 EIP-1559 - 用付费节点防止限流
- Verify 走 customChains 配置 bscscan API key
- 多链发布前在群内同步进度,避免并发部署冲突
这些规范在 Hardhat部署中文文档 翻译版中有更详细的中文解释。
工程化总结
按上述 8 条规范落地,你的 Hardhat 项目就具备了从「能跑」到「可维护」的关键素质。最佳实践不是束缚,而是让团队能并行工作不踩坑的最小公共约定。把规范沉淀到模板仓库,让每一个新项目都从规范的起点出发,是真正提升团队效率的工程投资。