※2022/8/8追記: xdai
, sokol
にも対応した truffle-source-verify というプラグインを見つけたので、必要であればそちらもおすすめです
Etherscanのサイトから手動でもVerifyできるが、非常に大変なのでコマンドラインからVerifyする方法をメモ。
truffle-plugin-verify というTruffleプラグインが便利。
インストール
npm または yarn でインストール
npm install -D truffle-plugin-verify yarn add -D truffle-plugin-verify
truffle-config.js
にプラグインを追加
module.exports = {
/* ... rest of truffle-config */
plugins: ['truffle-plugin-verify']
}
Etherscan websiteにてEtherscanのAPI Key を作成
Etherscan API keyを
truffle-config.js
に追加
API keyを直書きするのではなく、dotenv
経由で読み込むのが望ましい。
module.exports = {
/* ... rest of truffle-config */
api_keys: {
etherscan: 'MY_API_KEY'
}
}
使い方
スマートコントラクトのdeployが完了したら、次のコマンドで1つ以上のコントラクトをVerifyできる。
truffle run verify SomeContractName AnotherContractName --network networkName [--debug]
--network
には truffle-config.js
に記載したネットワーク名を指定できる。
例えば、 rinkeby
にdeployした SimpleStorage
コントラクトをVerifyするには次のコマンドを実行する。
truffle run verify SimpleStorage --network rinkeby
コントラクトのアドレスを指定することもできる。
truffle run verify SimpleStorage@0x61C9157A9EfCaf6022243fA65Ef4666ECc9FD3D7 --network rinkeby
サポートされているチェーン
EtherScan以外も多様なチェーンがサポートされている。
module.exports = { /* ... rest of truffle-config */ api_keys: { etherscan: 'MY_API_KEY', optimistic_etherscan: 'MY_API_KEY', arbiscan: 'MY_API_KEY', bscscan: 'MY_API_KEY', snowtrace: 'MY_API_KEY', polygonscan: 'MY_API_KEY', ftmscan: 'MY_API_KEY', hecoinfo: 'MY_API_KEY', moonscan: 'MY_API_KEY', bttcscan: 'MY_API_KEY', aurorascan: 'MY_API_KEY', cronoscan: 'MY_API_KEY' } }
最新のサポート状況は公式の https://github.com/rkalis/truffle-plugin-verify をチェックしてほしい。