🍭
TruffleでEtherScan上のスマートコントラクトをVerifyしてみる
※2022/11 追記: 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 をチェックしてほしい。
Discussion