日期:2025-08-18 10:34:44 来源: IT猫扑网整理
Hardhat是以太坊生态中最流行的智能合约开发环境之一,提供了编译、测试和部署合约的完整工具链。部署测试网是智能合约开发流程中的关键环节,能够在真实网络环境中验证合约功能而无需消耗主网ETH。
1.安装基础依赖
首先确保系统已安装Node.js(建议v18+)和npm。可通过终端执行以下命令验证:
node -v # 需显示v18.0.0以上版本
npm -v # 需显示8.0.0以上版本
若未安装,访问Node.js官网下载对应系统版本,安装时勾选"Add to PATH"选项。
2.安装Hardhat
打开终端,执行以下命令全局安装Hardhat:
npm install -g hardhat
安装完成后,通过hardhat --version
验证安装成功,2025年推荐版本为v2.22.0+。
3.初始化项目
创建项目文件夹并进入:
mkdir hardhat-testnet-deploy && cd hardhat-testnet-deploy
执行初始化命令:
npx hardhat init
此时会出现交互式菜单,选择"Create an empty hardhat.config.js"(空配置文件),后续将手动配置更灵活。初始化完成后,项目目录会生成hardhat.config.js配置文件和package.json。
1.创建合约文件
在项目根目录创建contracts文件夹,并新建示例合约:
mkdir contracts && cd contracts && touch MyToken.sol
使用代码编辑器打开MyToken.sol,编写基础ERC20合约(以OpenZeppelin库为例):
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor(uint256 initialSupply) ERC20("MyToken", "MTK") {
_mint(msg.sender, initialSupply);
}
}
2.安装依赖库
返回项目根目录,安装OpenZeppelin合约库和Hardhat核心依赖:
npm install @openzeppelin/contracts hardhat @nomicfoundation/hardhat-toolbox
3.编译合约
执行编译命令:
npx hardhat compile
成功编译后,会生成artifacts和cache文件夹,其中包含合约ABI和字节码。若编译失败,检查Solidity版本是否与pragma声明一致,或依赖安装是否完整。
1.选择测试网
2025年以太坊主流测试网为Sepolia和Holesky,Goerli已停止维护。推荐使用Sepolia,基础设施支持完善且节点稳定。
2.获取测试网节点API
需通过Alchemy或Infura获取测试网节点API:
访问Alchemy官网注册账号,创建新应用,选择"Sepolia"网络,复制API密钥(格式如https://eth-sepolia.g.alchemyapi.io/v2/your-api-key)。
3.配置Hardhat网络
打开hardhat.config.js,替换为以下内容:
require("@nomicfoundation/hardhat-toolbox");
require("dotenv").config();
module.exports = {
solidity: "0.8.20",
networks: {
sepolia: {
url: process.env.SEPOLIA_URL || "",
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : []
}
},
etherscan: {
apiKey: process.env.ETHERSCAN_API_KEY
}
};
4.创建环境变量文件
在项目根目录创建.env文件,存储敏感信息(切勿提交到版本控制):
SEPOLIA_URL=你的Alchemy Sepolia API URL
PRIVATE_KEY=你的钱包私钥(以0x开头)
ETHERSCAN_API_KEY=你的Etherscan API密钥
获取私钥:在huli钱包中导出钱包私钥,确保该钱包在Sepolia测试网有足够ETH(可通过Sepolia水龙头领取)。
1.创建部署脚本
在项目根目录创建scripts文件夹,新建deploy.js:
mkdir scripts && cd scripts && touch deploy.js
编写部署脚本:
const hre = require("hardhat");
async function main() {
const MyToken = await hre.ethers.getcontractFactory("MyToken");
const myToken = await MyToken.deploy(ethers.parseEther("1000000"));
await myToken.waitForDeployment();
console.log(`MyToken deployed to: ${await myToken.getAddress()}`);
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
2.获取测试网ETH
访问Sepolia水龙头(如Alchemy Faucet或Paradigm Faucet),输入钱包地址领取测试ETH,通常需要社交媒体验证或等待排队。
3.执行部署命令
返回项目根目录,执行部署命令:
npx hardhat run scripts/deploy.js --network sepolia
部署成功后,终端会显示合约地址,类似:MyToken deployed to: 0x...。若失败,检查网络连接、私钥是否正确、测试网ETH是否充足。
1.验证合约
执行验证命令(需Etherscan API密钥):
npx hardhat verify --network sepolia 合约地址 初始supply参数
例如:
npx hardhat verify --network sepolia 0x123... 1000000000000000000000000
验证成功后,可在Etherscan Sepolia测试网页面查看合约源码和交互界面。
2.基本交互测试
通过Hardhat控制台与合约交互:
npx hardhat console --network sepolia
在控制台执行:
const myToken = await ethers.getContractAt("MyToken", "合约地址");
await myToken.name(); // 应返回"MyToken"
await myToken.balanceOf("你的钱包地址"); // 应返回初始 supply
1.部署超时或网络错误
检查Alchemy API URL是否正确,可尝试更换节点提供商(如Infura);确保网络连接稳定,或使用VPN连接国际网络。
2.私钥错误或账户锁定
核实私钥格式是否正确(以0x开头),确保钱包未被锁定;建议使用全新钱包专门用于测试网部署,避免主网资产风险。
3.合约验证失败
检查构造函数参数是否与部署时一致;确认Hardhat配置中的Etherscan API密钥正确;若仍失败,可在Etherscan手动上传源码验证。
4.依赖版本冲突
删除node_modules和package-lock.json,重新执行npm install;确保package.json中hardhat-toolbox版本与Hardhat兼容,推荐使用@nomicfoundation/hardhat-toolbox^4.0.0。
相关文章
相关下载
网友评论