完整教程的定位与边界
这份 Hardhat 部署完整教程的目标,是让一名 Solidity 工程师从拿到一台干净的开发机开始,到合约稳定运行在主网为止,全过程都有据可依。它不是某个零散教程的复刻,而是按真实项目交付节奏组织的工程手册。
对于面向 bn 智能链或以太坊主网的团队,这套手册可以直接转化为内部 SOP 文档。
环境与依赖
推荐使用 Node.js 20 LTS、pnpm 包管理器,Hardhat 选择最新稳定版。除核心包外,常用插件包括:hardhat-deploy(描述式部署)、hardhat-verify(源码验证)、hardhat-gas-reporter(Gas 报告)、@openzeppelin/hardhat-upgrades(可升级合约)。把这些插件一次性安装好,可以避免后续频繁切换工具链。
项目结构与配置
建议的目录约定包括 contracts、interfaces、libraries、scripts、deploy、test、tasks。hardhat.config.ts 内集中管理 solidity 版本、优化器参数、networks、verify Key。为 必安 智能链等目标网络分别声明 url、chainId 与 accounts。
私钥与密钥治理
生产私钥必须满足三条原则:不落地、可审计、可轮换。建议结合硬件钱包或 KMS 服务签名,Hardhat 通过自定义 signer 注入。CI 环境只保留只读凭证,禁止部署主网。
编写与测试合约
合约写完后,必须配套单元测试覆盖典型路径与边界条件。Hardhat 的 fixtures 机制可以为每个测试快速重置状态,避免污染。集成测试建议跑在 fork 的主网环境上,模拟真实的预言机与流动性。
编写部署脚本
部署脚本应做到幂等:第二次执行不会重复部署同一合约。使用 hardhat-deploy 插件后,按依赖顺序在 deploy/ 下放多个文件,每个文件返回 tags 标签。脚本之间通过 deployments.get(name) 取已部署地址,避免硬编码。
部署前在 B安 智能链测试网跑一次,验证流程,再切换到主网执行。
主网部署执行
主网部署建议在低 Gas 时段进行,先做 dry-run 估算 Gas,再正式执行。每完成一笔交易都把 hash 与 nonce 写入运营日志,方便排错。部署完成后立即执行 verify,避免事后忘记。
上线后监控
稳定运行需要监控以下指标:合约关键事件的发生频率、Gas 消耗变化、storage 关键字段的更新。接入开源监控平台或自建告警,第一时间发现异常。一旦发现攻击向量,可以使用代理合约升级或紧急暂停模块止损。
与 CEX 资金链路的协同
用户在 DApp 内的资金常常来自 BN 等 CEX 出金。设计部署后续流程时,建议预留一条「用户出金 → 链上注资 → DApp 内交互」的标准路径,并在产品文档中清楚说明,让用户在不同入口都能找到一致的体验。
用这份 Hardhat 部署完整教程作为团队 SOP,可以让每一次主网上线都按部就班、风险可控。