跳转到内容

部署到 Sepolia 测试网

部署到 Sepolia 测试网

本页内容正在整理中,欢迎贡献

概述

Sepolia 是以太坊官方推荐的长期测试网络(取代了已废弃的 Ropsten、Rinkeby、Goerli)。本文介绍如何通过 Hardhat 和 Foundry 将合约部署到 Sepolia,并在 Etherscan 上验证源码。

主要内容

前置准备

  1. Sepolia 测试网 ETH(获取水龙头资金
  2. RPC 节点 URL(推荐 AlchemyInfura 免费套餐)
  3. 钱包私钥(仅用测试钱包,切勿使用持有真实资产的账户

使用 Hardhat 部署

1. 配置网络

hardhat.config.ts
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. 编写部署脚本

scripts/deploy.ts
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. 执行部署

Terminal window
npx hardhat run scripts/deploy.ts --network sepolia

4. 验证合约源码

Terminal window
npx hardhat verify --network sepolia <合约地址> "你好,以太坊!"

使用 Foundry 部署

1. 配置 RPC 与私钥

Terminal window
# 通过环境变量传入(推荐)
export PRIVATE_KEY=0x...
export SEPOLIA_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/YOUR_KEY
export ETHERSCAN_API_KEY=YOUR_KEY

2. 部署命令

Terminal window
# 部署并验证
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. 使用部署脚本(推荐)

script/Deploy.s.sol
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();
}
}
Terminal window
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 lownonce 冲突等待待处理交易确认
replacement transaction underpricedGas Price 过低增加 maxFeePerGas
验证失败Etherscan API Key 无效检查 API Key 配置

下一步

合约部署成功后,前往 与合约交互 了解如何用前端代码调用你的合约。