请访问 Tronscan 合约验证工具 开始验证流程。
1. 填写合约基本信息
在验证页面中,您需要准确填写合约的基本信息。请务必注意,以下信息必须与您部署合约时的设置完全一致,否则验证将失败。
- 合约地址:部署合约后生成的地址。
-
合约名称:主合约的名称(即
contract关键字后的名称)。 - 编译器版本:部署时使用的 Solidity 编译器版本。
-
License:合约的开源许可证类型。如无特殊需求,通常可以选择
None。 - 是否优化(Optimization):部署合约时是否启用了编译器优化。请根据您部署时的实际选择进行勾选。
- Runs:如果启用了优化,请填写部署时设置的优化运行次数。
填写完毕后,点击 “上传合约文件” 继续验证流程。
2.提交合约源代码
- 点击“上传合约文件”按钮,选择您的合约源代码文件并上传。请确保上传的代码与链上部署的版本完全一致,包括所有依赖文件。
- 勾选 “进行人机身份验证” 以完成安全检查。
- 点击 “验证并发布” 按钮。
Tronscan 将自动比对您提交的源代码与链上部署的字节码。如果验证通过,系统将显示“恭喜您合约已验证成功!”的提示信息。随后,您可以前往合约页面查看已公开的合约源代码信息。
附: 常见问题
1. 如何验证带目录结构的合约文件?
注意:Tronscan 暂不支持目录结构的合约验证。如果您的合约文件结构中包含子目录(如 contracts/、libs/ 等),请在验证前对合约进行“扁平化”处理,即将所有依赖合并为一个 .sol 文件。具体操作方法请参考 Tronscan官方指南。
2. 无法进行人机验证
在点击 “验证并发布” 提交合约验证信息之前,Tronscan 会弹出 Google reCAPTCHA 组件进行人机身份验证(如下图所示)。如果该组件无法正常加载,可能是由于当前网络无法访问 Google 服务,建议检查网络连接。
3. 验证失败并提示: “T… verification failed. Contract has not been deployed on the network”
此错误说明您提交的合约地址在当前选择的网络(主网/测试网)上找不到部署记录,请检查:
- 合约地址是否正确
- Tronscan 页面右上角所选网络是否正确(主网 / Nile测试网 / Shasta测试网)
4.验证失败并提示: “T… verification failed. Please confirm the correct parameters and try again”
这是最常见的验证失败信息,通常是以下两种原因之一:
-
原因一:验证参数与部署参数不一致
- Solidity 编译器版本(注意区分 Tron 与 Ethereum 编译器)
- License 类型
- 是否启用优化
- 优化次数Runs
-
原因二:上传的源码与部署源码不一致
- 上传的合约源码与实际部署时的代码不同(如改动、缺文件);
- 忘记包含依赖合约;
- 忘记扁平化;
解决方法:
- 确保上传的源码与部署时使用的完全一致;
- 包含全部依赖;
- 完成合约扁平化处理;