部署到 Sepolia 测试网
部署到 Sepolia 测试网
本页内容正在整理中,欢迎贡献。
概述
Sepolia 是以太坊官方推荐的长期测试网络(取代了已废弃的 Ropsten、Rinkeby、Goerli)。本文介绍如何通过 Hardhat 和 Foundry 将合约部署到 Sepolia,并在 Etherscan 上验证源码。
主要内容
前置准备
使用 Hardhat 部署
1. 配置网络
import { HardhatUserConfig } from "hardhat/config";import "@nomicfoundation/hardhat-toolbox";import * as dotenv from "dotenv";dotenv.config();
const config: HardhatUserConfig = { solidity: "0.8.20", networks: { sepolia: { url: process.env.SEPOLIA_RPC_URL || "", accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [], }, }, etherscan: { apiKey: process.env.ETHERSCAN_API_KEY, },};export default config;2. 编写部署脚本
import { ethers } from "hardhat";
async function main() { const [deployer] = await ethers.getSigners(); console.log("部署账户:", deployer.address);
const balance = await deployer.provider.getBalance(deployer.address); console.log("账户余额:", ethers.formatEther(balance), "ETH");
const HelloWorld = await ethers.getContractFactory("HelloWorld"); const contract = await HelloWorld.deploy("你好,以太坊!"); await contract.waitForDeployment();
const address = await contract.getAddress(); console.log("合约已部署到:", address);}
main().catch((error) => { console.error(error); process.exitCode = 1;});3. 执行部署
npx hardhat run scripts/deploy.ts --network sepolia4. 验证合约源码
npx hardhat verify --network sepolia <合约地址> "你好,以太坊!"使用 Foundry 部署
1. 配置 RPC 与私钥
# 通过环境变量传入(推荐)export PRIVATE_KEY=0x...export SEPOLIA_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/YOUR_KEYexport ETHERSCAN_API_KEY=YOUR_KEY2. 部署命令
# 部署并验证forge create \ --rpc-url $SEPOLIA_RPC_URL \ --private-key $PRIVATE_KEY \ --etherscan-api-key $ETHERSCAN_API_KEY \ --verify \ src/HelloWorld.sol:HelloWorld \ --constructor-args "你好,以太坊!"3. 使用部署脚本(推荐)
pragma solidity ^0.8.20;import "forge-std/Script.sol";import "../src/HelloWorld.sol";
contract DeployScript is Script { function run() external { uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); vm.startBroadcast(deployerPrivateKey); new HelloWorld("你好,以太坊!"); vm.stopBroadcast(); }}forge script script/Deploy.s.sol:DeployScript \ --rpc-url $SEPOLIA_RPC_URL \ --broadcast \ --verify查看部署结果
部署成功后,访问 Sepolia Etherscan 搜索合约地址,可以看到:
- 合约创建交易
- 合约字节码(ByteCode)
- 验证后的 Solidity 源码
- 合约的读写函数(通过 “Read Contract” / “Write Contract” 标签页)
常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
insufficient funds | 测试网 ETH 不足 | 从水龙头获取更多 ETH |
nonce too low | nonce 冲突 | 等待待处理交易确认 |
replacement transaction underpriced | Gas Price 过低 | 增加 maxFeePerGas |
| 验证失败 | Etherscan API Key 无效 | 检查 API Key 配置 |
下一步
合约部署成功后,前往 与合约交互 了解如何用前端代码调用你的合约。