摘要:Hardhat 2.29 本机实跑:compile 出 artifacts、hardhat node 起本地 JSON-RPC、scripts/deploy.js 部署到 localhost。不必测试网 ETH;与 Remix 第一课区分;私钥仅本地公开测试钥。
写完 Solidity 合约之后,常见下一步是在本机搭一个可重复的工程:编译出 ABI/字节码、起本地节点、再用脚本部署或调用。Hardhat 就是干这件事的开发环境。本文用 Hardhat 2.29.1 + Solidity 0.8.28,在本机跑通 compile → node → run scripts/deploy.js --network localhost;不碰主网、不需要测试网 ETH。Remix 第一课见 Solidity 与 Remix 本地/VM 部署;链上只读用 web3.py / ethers 见文末相关阅读。官方文档已提示 Hardhat 3 可用,Hardhat 2 仍维护至约 2027(以官网为准);本场按仍广泛使用的 2.x 工程结构演示。
一、官方怎么描述 Hardhat
Hardhat 文档「Compiling your contracts」说明:内置 compile 任务会编译合约,产物默认进 artifacts/;重复编译时若无变更会提示 Nothing to compile。

典型目录(本场演示):
| 路径 | 作用 |
|---|---|
| hardhat.config.js | Solidity 版本、networks 等配置 |
| contracts/ | .sol 源码(示例 Lock.sol) |
| scripts/ | 部署/调用脚本(示例 deploy.js) |
| artifacts/ | 编译产物 ABI + bytecode |
| test/ | 测试(本场未展开) |
二、本机编译:npx hardhat compile
2026-10-10 Asia/Shanghai,在临时目录 hardhat-demo 执行(Node.js 22 + Hardhat 2.29.1):首次会下载 solc 0.8.28,然后输出 Compiled 1 Solidity file successfully (evm target: paris)。随后 artifacts/contracts/Lock.sol/ 下出现 Lock.json(含 ABI 与 bytecode)。

npx hardhat compile
# 期望看到 Compiled … successfully
ls contracts/ scripts/ artifacts/contracts/Lock.sol/
三、本地节点:npx hardhat node
另开一个终端跑 npx hardhat node,会在 http://127.0.0.1:8545/ 起 HTTP/WebSocket JSON-RPC,并打印一组公开已知的本地账户(各约 10000 ETH)。这些私钥仅供本机演示——切勿充值到主网或任何真网。

Remix VM 在浏览器里模拟;Hardhat node 是本机 JSON-RPC,钱包/脚本可用 --network localhost 连上。
本地节点不出块到公网,不需要水龙头;要上测试网再配 networks.sepolia(本场不做真部署)。
截图与日志里的 Hardhat 默认私钥人人知道;主网用它们会丢币。
四、脚本结构:run + --network localhost
Hardhat 2 文档「Writing scripts with Hardhat」说明可用 npx hardhat run script.js 跑脚本,脚本里通过 Hardhat Runtime Environment 拿 ethers 等。本场 scripts/deploy.js 用 hre.ethers.deployContract("Lock", …) 把示例合约部署到本地节点。


# 终端 A
npx hardhat node
# 终端 B
npx hardhat run scripts/deploy.js --network localhost
本场部署输出示例(仅本地):合约地址 0x5FbDB2…0aa3,锁定约 0.001 ETH(本地假币)。数字以你本机输出为准。
五、和已发文怎么衔接、别踩的坑
- 不要当成 Remix 第二课复读:Remix 适合浏览器里改一行就部署;Hardhat 适合仓库化、脚本化、可重复 CI。
- mapping / 事件核对仍可用 Remix VM 或本机,见 Solidity mapping 与事件。
- 只读链上状态用 web3.py / ethers,不必为了读余额去跑 Hardhat node,见 web3.py 连 Sepolia、ethers.js 读合约。
- 需要钱包看测试网/主网时,可用欧易 Web3(创建步骤可填 CHENGXULVTU);买少量 Gas 币可在 币安 或 欧易——本场本地演示完全不需要。
相关阅读
- Solidity 第一课:合约结构与 Remix 本地/VM 部署
- Solidity mapping 与事件:怎么在浏览器核对
- web3.py 连 Sepolia:HTTPProvider、读余额与本地账户
- ethers.js 读合约:ABI 与 call 核对
说明:配图为 2026-10-10 Hardhat 官方文档与本机真实终端输出;本地账户私钥已截断展示。本文不涉及主网资金,不构成投资建议。版本与命令以你安装的 Hardhat / 官方文档为准。
