引言
在 Sepolia 测试网上部署智能合约后,若希望在区块链浏览器(Etherscan)中公开查看源码,并通过“Contract”标签页进行直接交互,就需要 进行合约验证(Contract Verification)。验证后,Etherscan 会将你编译时使用的 Solidity 源码发布出来
,与链上字节码进行自动比对
,以确认一致性。这一过程不仅能提高透明度,更方便你使用浏览器进行 Read/Write 操作,增强可信度与可操作性。
本文是在 Sepolia 使用 Hardhat 验证智能合约并在 Etherscan 上启用交互
可以手动验证合约,官方教程在这里 传送🚪
下面是我用命令行 verify 合约
步骤一:获取并配置 Etherscan API Key
1、访问 Etherscan 网站(https://sepolia.etherscan.io 或 etherscan.io),登陆你的账户后进入 “API Keys” 页面;
2、点击 “Add” 新增一个 API Key(测试网与主网共用同一 key);
3、在项目中设置环境变量:
npx hardhat vars set ETHERSCAN_API_KEY
4、确认hardhat.config.ts
中已有以下配置:
import "@nomicfoundation/hardhat-verify";
import { vars } from "hardhat/config";
const ETHERSCAN_API_KEY = vars.get("ETHERSCAN_API_KEY");
const config: HardhatUserConfig = {
networks: {
sepolia: {
url: `https://sepolia.infura.io/v3/${vars.get("INFURA_API_KEY")}`,
accounts: [/*...*/],
},
},
etherscan: {
apiKey: {
sepolia: ETHERSCAN_API_KEY,
},
},
};
export default config;
确保 etherscan.apiKey.sepolia
项正确引用了你的 API key(mixed-case key 必须匹配 network 名称 sepolia)
步骤二:更新插件并验证网络支持
如果你使用的是 @nomiclabs/hardhat-etherscan 插件,请确保它升级到最新版本,因为早期版本可能不支持 Sepolia 网络。
使用 Hardhat 官方推荐插件 @nomicfoundation/hardhat-verify 通常也支持 Sepolia,并可以通过 CLI 执行验证命令。
步骤三:执行 Verify
配置正确后,执行:
构造函数参数要按顺序和类型传入
npx hardhat verify --network sepolia 合约地址 构造函数参数
例如:
npx hardhat verify --network sepolia
0x455596C8FFb5A5A4644594A6f04D9E3E0Cd930FE
“MyConfidentialToken”
“MCT” \
验证成功后页面展示
出现 ‘Contract’ 标签页
验证成功后,合约地址页面中会新增一个“Contract”标签
Source Code(源代码)
:完整的智能合约源码公开,包括你提交的 .sol 文件、imports 和 License 信息等。
Compiler & Settings(编译参数)
:显示你使用的 Solidity 编译器版本、优化设置、EVM 版本、viaIR 是否启用等,确保与你实际部署时一致
Bytecode & ABI
:包含完整的 ABI 接口定义,以及 Etherscan 从链上获取的部署字节码信息
为什么要“上传 ”源代码到浏览器?
这个“上传”过程指的是通过 Etherscan 或 Hardhat 插件将你的 Solidity 源代码、编译参数、构造函数参数等信息提交给 Etherscan 平台进行合约验证
。这么做的好处主要包括:
-
确认源码与链上字节码一致:`Etherscan 使用你的源码重新编译合约,并比对生成的字节码是否与链上的部署字节码一致。一致就表示合约真实可信。
-
提高透明度与信任度:任何人都可以打开 Etherscan 查看你的代码、理解合约逻辑,而不必依赖第三方解释。
-
激活交互功能:验证后的合约会自动开启 “Read Contract” 与 “Write Contract” 接口,支持浏览器直接调用合约函数(如 mint、burn)。
总结
效验(Verify)是智能合约上线后的关键一步,它不仅保护源码一致性,也让你在区块浏览器中实时操作,从而方便调试、测试和展示。完成验证后,你就可以在 Sepolia Etherscan 中方便地查看合约、调用函数,甚至配合 Remix 或脚本进行交互。