W3
部署上线中级预计 40-50 分钟9 个步骤32 次学习

测试网部署:Sepolia 水龙头、部署脚本与 Etherscan 验证

完整走通把合约部署到公共测试网的端到端流程:厘清本地链、测试网、主网在共识、费用与信任上的区别;选择 Sepolia 作为目标测试网并通过官方水龙头、Alchemy 水龙头获取免费测试 ETH;申请 Alchemy/Infura RPC 端点并理解公共 RPC 的限流;编写 Hardhat 部署脚本与 Ignition 声明式模块;用环境变量安全注入专用开发钱包私钥;广播部署交易并在 Sepolia Etherscan 上核对合约地址、创建交易与 Gas;用 hardhat-verify 完成源码验证拿到绿色对勾;最后用一个最小前端(地址 + ABI + MetaMask)真正调用一次测试网合约。

测试网部署:Sepolia 水龙头、部署脚本与 Etherscan 验证
⚠️
操作前必读

本章用的是免费测试 ETH,无资金价值,但操作流程与主网完全一致——请像演练主网一样认真,尤其要守住三点:只使用没有主网资产的专用开发钱包;.env 绝不提交;部署参数(地址、金额、费率)在广播前逐字核对,因为主网上这些都无法撤销。测试网的成功不代表代码安全,只代表流程跑通。

01
1. 网络选择与准备

本地链、测试网、主网:三种网络的本质区别

登录记录进度

部署前先建立三层网络的心智模型:

对比 本地链(Hardhat/Anvil) 测试网(Sepolia) 主网(Mainnet)
运行位置 你自己的电脑 公共测试节点网络 全球生产网络
ETH 价值 无,随便造 无价值,水龙头免费领 真实资产
共识 单节点立即出块 真实 PoS 共识,有出块延迟 真实 PoS
用途 快速调试 端到端联调、演示、申请生态资格 正式发布
链上数据 重启即消失 长期保留但可重置/废弃 永久保存

关键认知:测试网是「流程彩排」,合约逻辑、部署脚本、前端联调、浏览器验证都应先在测试网跑通;水龙头 ETH 虽然免费,但出块、Gas、交易等待、nonce 机制与主网完全一致,所以彩排经验可以零差别迁移。

本地链、测试网、主网:三种网络的本质区别
本地链、测试网、主网:三种网络的本质区别|界面示意 · hardhat.org · 采集于 2026-09-18
02
1. 网络选择与准备

选择测试网:为什么现在用 Sepolia

登录记录进度

以太坊历史上有多个测试网(Ropsten、Rinkeby、Kovan、Goerli),它们已陆续关停。当前以太坊官方支持、钱包与基础设施默认接入的是 Sepolia:与主网合并后的 PoS 共识一致、出块约 12 秒、区块浏览器为 sepolia.etherscan.io

多数 L2(Arbitrum Sepolia、Base Sepolia、Optimism Sepolia、Polygon Amoy)也提供各自测试网,当你的合约目标是某条 L2 时,应部署到对应的 L2 测试网,因为它们的 Gas 模型、预编译与 EVM 版本存在细节差异。

选择原则:合约最终部署到哪条主网,就在对应的测试网彩排。EVM 兼容链虽多,但不要默认「在 Sepolia 能跑就一定在其他链能跑」,涉及特殊预编译、原生代币转账与 Gas 报销逻辑时必须在目标链测试网验证。

选择测试网:为什么现在用 Sepolia
选择测试网:为什么现在用 Sepolia|界面示意 · sepoliafaucet.com · 采集于 2026-09-18
💡
小技巧:

在 MetaMask 网络列表里添加 Sepolia:账户选项中打开「显示测试网」开关即可看到;链 ID 11155111、货币符号 ETH。

03
1. 网络选择与准备

领取测试 ETH:水龙头的正确打开方式

登录记录进度

部署需要支付测试网 Gas,测试 ETH 从水龙头(Faucet)免费领取: 1. 最常用的是 Alchemy Sepolia FaucetInfura Faucet,登录账号后输入钱包地址即可,部分档位为防女巫会要求绑定 GitHub 或持有少量主网 ETH。

  1. Google Cloud Faucet、QuickNode 等也提供免费额度。

  2. Chainlist 与各 L2 官方文档会列出对应 L2 测试网水龙头。

每个地址一般每天能领 0.05~0.5 个测试 ETH,足够几十次部署。领取后在 sepolia.etherscan.io 搜你的地址确认余额到账。

领取测试 ETH:水龙头的正确打开方式
领取测试 ETH:水龙头的正确打开方式|界面示意 · hardhat.org · 采集于 2026-09-18
🚫
避坑提醒:

水龙头只需要你输入「收款地址」,任何要求输入私钥、助记词或先连接钱包再签名的「水龙头」都是诈骗。领测试币永远不需要私钥。

Alchemy Sepolia 水龙头
04
1. 网络选择与准备

配置 RPC:你的合约广播入口

登录记录进度

部署脚本要把交易发给一个以太坊节点广播,这个节点入口就是 RPC URL。三种来源: 1. Alchemy / Infura / QuickNode 等节点服务商:注册免费项目后获得形如 https://eth-sepolia.g.alchemy.com/v2/你的KEY 的端点,稳定、有监控面板、免费额度对开发完全够用,是首选。

  1. 公共 RPC:如 https://rpc.sepolia.org,免注册但有限流,不稳定时部署会超时。 3. 自建节点:生产级方案,开发阶段不需要。

把 RPC 写入 .envSEPOLIA_RPC_URL=...,在 hardhat.config.js 中配置网络:

networks: {
  sepolia: {
    url: process.env.SEPOLIA_RPC_URL,
    accounts: [process.env.PRIVATE_KEY],
  },
}
配置 RPC:你的合约广播入口
配置 RPC:你的合约广播入口|界面示意 · ethereum.org · 采集于 2026-09-18
🚫
避坑提醒:

RPC URL 里的 API Key 也算敏感信息(关联你的免费额度),同样放 .env,不要提交或截图分享完整 URL。

05
2. 部署脚本编写与广播

编写部署脚本

登录记录进度

Hardhat 最直接的部署方式是脚本。在 scripts/deploy.jsjavascript async function main() { const [deployer] = await ethers.getSigners(); console.log("部署账户:", deployer.address); const Token = await ethers.getContractFactory("MyToken"); const token = await Token.deploy(); // 广播创建交易 await token.waitForDeployment(); // 等待被打包 console.log("合约地址:", await token.getAddress()); } main().catch((e) => { console.error(e); process.exit(1); }); 如果构造函数有参数(如 ERC20("My Token","MTK") 之外还有初始接收地址),在 deploy(参数...) 中传入。

更现代的方式是 Hardhat Ignition:用声明式 JS/TS 模块描述「先部署 A,再用 A 的地址部署 B」的依赖关系,npx hardhat ignition deploy ./ignition/modules/Token.js --network sepolia 会自动处理确认、断点恢复与多合约编排,主网复杂部署建议用它。

编写部署脚本
编写部署脚本|界面示意 · hardhat.org · 采集于 2026-09-18
💡
小技巧:

部署后立刻把合约地址记录下来(写进部署笔记或 .deployments 文件)。地址在链上唯一,前端与浏览器验证都依赖它。

06
2. 部署脚本编写与广播

安全地注入私钥并广播部署

登录记录进度

正式广播:npx hardhat run scripts/deploy.js --network sepolia。脚本会用 .env 中的 PRIVATE_KEY 签名一笔「合约创建交易」,通过 RPC 发到 Sepolia。

执行流程中的关键检查点: 1. 终端先打印部署地址,确认它是你的专用开发钱包而不是误配了别的私钥。 2. ethers v6 默认自动估算 Gas;若 RPC 拥堵可在配置中显式设置 gasPrice 或 EIP-1559 的 maxFeePerGas。

  1. 看到合约地址输出即部署成功;交易在 Sepolia Etherscan 上标记为「Contract Creation」。

再次强调铁律:.env 已在 .gitignore 中;这个私钥对应钱包里不要有任何主网资产;换电脑或团队协作时通过密钥管理器或加密文件传递,不要发聊天软件。

安全地注入私钥并广播部署
安全地注入私钥并广播部署|界面示意 · book.getfoundry.sh · 采集于 2026-09-18
🚫
避坑提醒:

部署脚本不会二次确认!回车即广播。主网部署前可在脚本开头加 network 校验(只允许指定 network 执行),防止误连主网花真钱。

07
2. 部署脚本编写与广播

在 Sepolia Etherscan 上读懂部署结果

登录记录进度

打开 sepolia.etherscan.io 搜索刚部署的合约地址,你会看到: - Contract Creation 交易记录:From 是部署者,To 显示为「Contract Creation」,Input Data 是完整的字节码 + 构造参数。

  • 合约页的 Code 标签此刻提示「Contract source code not verified」——字节码已在链上但源码未验证。 - 其他标签:Transactions(所有交互)、Events(事件日志)、Read Contract / Write Contract(浏览器自带的直接调用界面,Read 免费、Write 需要连接钱包签名)。

部署者地址的 nonce 会加 1;Gas Used 乘以 Gas Price 就是本次部署花掉的测试 ETH。可以先用 Etherscan 的 Read Contract 直接调 name()symbol()totalSupply() 确认合约初始化正确。

在 Sepolia Etherscan 上读懂部署结果
在 Sepolia Etherscan 上读懂部署结果|界面示意 · etherscan.io · 采集于 2026-09-18
💡
小技巧:

部署合约的地址由「部署者地址 + 当前 nonce」确定性推导,所以同一钱包按顺序部署会得到可预测的地址序列;跨环境重放时务必注意 nonce 差异。

08
3. 源码验证与前端联调

源码验证:hardhat-verify 拿到绿色对勾

登录记录进度

未验证的合约用户只能看到字节码,无法确认源码与链上逻辑一致。验证流程: 1. 到 etherscan.io 注册,在 API Keys 页面创建一个免费 API Key(Sepolia 与主网用同一个账号的 key),写入 .env:ETHERSCAN_API_KEY=...

  1. 确认 hardhat.config.js 已引入 require("@nomicfoundation/hardhat-verify")(toolbox 已内置)。 3. 执行:npx hardhat verify --network sepolia <合约地址> <构造参数1> <构造参数2>

无构造参数则地址后留空。 工具会用相同编译器与参数重新编译,提交源码给 Etherscan 比对字节码,成功后合约页出现绿色对勾,公开显示你的源码、并启用带 UI 的 Read/Write Contract。若提示字节码不一致,99% 是编译器版本、优化开关或构造参数编码不匹配,按报错逐项对齐。

源码验证:hardhat-verify 拿到绿色对勾
源码验证:hardhat-verify 拿到绿色对勾|界面示意 · etherscan.io · 采集于 2026-09-18
🚫
避坑提醒:

开源验证是信任基石但不是安全背书:绿色对勾只代表「源码与字节码一致」,不代表代码没有漏洞——仍需测试与审计。

09
3. 源码验证与前端联调

端到端联调:用最小前端调用一次合约

登录记录进度

最后一步,用 MetaMask + ethers.js 做端到端验证: 1. MetaMask 切到 Sepolia,导入开发账户。 2. 准备两样东西:合约地址(部署输出)和 ABI(artifacts 里的 JSON,最小化 ABI 可只复制 mint/balanceOf 等用到的函数)。

  1. 在一个 HTML/Next.js 页面中:const provider = new ethers.BrowserProvider(window.ethereum); const signer = await provider.getSigner(); const token = new ethers.Contract(ADDRESS, ABI, signer); await token.mint(signer.address, 1000); 4. MetaMask 弹出签名窗口——这是第一次真实的「用户签名 → 钱包广播 → 合约执行 → 事件上链」闭环。

确认后在 Etherscan 看到这笔交易、余额发生变化,说明你已独立走通了智能合约工程的完整主链路。

下一章起进入安全深水区:合约漏洞、审计与主网上线。

端到端联调:用最小前端调用一次合约
端到端联调:用最小前端调用一次合约|界面示意 · ethereum.org · 采集于 2026-09-18
💡
小技巧:

MetaMask 测试网交易卡住时,在 Etherscan 查 nonce 与 Gas:通常是 Gas 给低了,可以在钱包里「加速(Speed up)」提高小费替换交易。

来源与时效

教程记录平台 ethereum.org · 客户端 Web / App · 版本 v1。各平台界面会随版本更新变化,请以官方当前界面为准。

全部步骤已完成

操作完成后建议再核对一次到账金额与手续费,并保留交易哈希作为凭证。

相关教程