在使用 truffle-plugin-verify 插件进行代码验证的时候,报错:
~> truffle run verify BTCContract --network rinkeby
Verifying BTCContract
Failed to connect to Etherscan API at url https://api-rinkeby.etherscan.io/api
Failed to verify 1 contract(s): BTCContract
根据提示来看:是连接不上 https://api-rinkeby.etherscan.io/api 这个地址。
所以先ping 一下这个域名,
~> ping api-rinkeby.etherscan.io
PING api-rinkeby.etherscan.io (128.121.146.101): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
果然域名无法解析。
那就好办了,去找到这个域名下对应的地址不就可以了嘛
去这个网站 https://url5.co/?t=1636355893
查询出 api-rinkeby.etherscan.io 这个域名对应的IP
尝试第一个ping IP( 104.22.14.57) ,是否能ping 通,尝试一下确实可以ping通。
接着只需要把本地的hosts 文件添加 一行映射即可,我用的是MacOS, 编辑/private/etc/hosts就行。Windows找下对应的hosts文件修改就行。
104.22.14.57 api-rinkeby.etherscan.io
修改后再次执行验证,验证成功。
~> truffle run verify BTCContract --network rinkeby
Verifying BTCContract
Contract source code already verified: https://rinkeby.etherscan.io/address/0xb3d0d1aAB33ccF565A6FD0D9543FBcE49bD952c9#code
Successfully verified 1 contract(s).
除此之外还能是node 、truffle与verfify插件的版本问题。
我这里使用的是
Truffle v5.4.6 (core: 5.4.6)
Solidity - 0.6.10 (solc-js)
Node v12.22.1
Web3.js v1.5.1
"truffle-plugin-verify": "0.5.16"
希望以上内容对正在遇到问题的小伙伴有所帮助。
另外:如果出现的是下面这种情况,可能是服务的问题,等上一段时间自己会好
Request failed with status code 403
Failed to connect to Etherscan API at url https://api-rinkeby.etherscan.io/api
Failed to verify 1 contract(s): BulldogTestyClub