一、环境配置与项目初始化
-
Node.js环境
要求Node.js ≥14.0(推荐v20.12.0 LTS),安装完成后验证版本:node -v && npm -v -
Hardhat核心安装
通过npm初始化项目并安装核心依赖:npm init -y npm install --save-dev hardhat @nomicfoundation/hardhat-ethers ethers hardhat-deploy hardhat-deploy-ethers --legacy-peer-deps若遇到依赖冲突,使用
--force强制安装 -
项目初始化
运行交互式配置向导创建基础结构:npx hardhat init选择TypeScript模板以获得更好的类型支持。
二、网络配置与私钥管理
-
多网络配置方案
在hardhat.config.ts中定义开发与测试网络:import { HardhatUserConfig } from "hardhat/config"; import "@nomicfoundation/hardhat-ethers"; import "hardhat-deploy"; const config: HardhatUserConfig = { solidity: "0.8.28", networks: { hardhat: { chainId: 31337 }, // 本地开发链 sepolia: { url: "https://eth-sepolia.g.alchemy.com/v2/YOUR_KEY", chainId: 11155111, accounts: [process.env.PRIVATE_KEY!] } }, etherscan: { apiKey: process.env.ETHERSCAN_API_KEY } }; export default config; -
私钥安全存储
使用dotenv加载环境变量:npm install dotenv创建
.env文件:PRIVATE_KEY=你的钱包私钥 ALCHEMY_API_KEY=你的Alchemy密钥 ETHERSCAN_API_KEY=你的Etherscan密钥
三、合约部署与验证优化
-
部署脚本编写
创建deploy/01_deploy_fundme.ts:import { HardhatRuntimeEnvironment } from "hardhat/types"; import { DeployFunction } from "hardhat-deploy/types"; const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => { const { deploy } = hre.deployments; const [deployer] = await hre.ethers.getSigners(); await deploy("FundMe", { from: deployer.address, args: [1000], // 构造函数参数 log: true, }); }; export default func; -
多网络部署命令
• 本地链部署:npx hardhat deploy --network hardhat• 测试网部署:npx hardhat deploy --network sepolia --reset
--reset参数强制重新部署 -
合约验证与超时处理
安装undici提升HTTP性能:npm install undici --save-dev在配置中添加超时设置:
// hardhat.config.ts import { Agent } from 'undici'; export default { networks: { sepolia: { httpHeaders: { 'User-Agent': 'Hardhat' }, timeout: 120000, // 120秒超时 httpAgent: new Agent({ keepAliveTimeout: 30000, keepAliveMaxTimeout: 60000 }) } } }验证合约:
npx hardhat verify --network sepolia 0xContractAddress 1000
四、调试与监控工具
-
区块链浏览器
• Sepolia测试网:sepolia.etherscan.io/ • 主网浏览器:etherscan.io/ -
RPC节点管理
访问Chainlist快速获取节点配置:chainlist.org/
搜索"Sepolia"获取最新RPC端点。
五、最佳实践建议
-
网络稳定性
部署期间避免切换VPN,建议使用固定IP的节点服务(如Alchemy) -
版本控制
在package.json中锁定依赖版本防止兼容性问题:"resolutions": { "@nomicfoundation/hardhat-ethers": "3.0.4", "ethers": "6.11.0" } -
自动化测试
配置CI/CD流水线实现自动化部署验证,参考Hardhat官方文档的GitHub Actions模板。
通过以上配置,开发者可构建高效的Solidity开发工作流,结合undici优化网络请求,显著降低部署过程中的超时风险。建议定期检查Hardhat GitHub仓库获取最新插件更新。