コード検証に 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
案の定、ドメイン名を解決できませんでした。
それなら扱いは簡単です、このドメイン名で対応するアドレスを見つければ十分ではないでしょうか?
この Web サイトhttps://url5.co/?t=1636355893
にアクセスして、ドメイン名 api-rinkeby に対応する IP を調べます.etherscan.io
最初の A ping IP (104.22.14.57) を試して、ping できるかどうかを確認します。試してみると、ping できます。
その後、ローカル ホスト ファイルにマッピングの行を追加するだけです。私は MacOS を使用していますが、/private/etc/hosts を編集するだけです。Windows は、対応するホスト ファイルを見つけて変更できます。
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