This truffle plugin allows you to automatically verify your smart contracts' source code on Etherscan/Blockscout, straight from the Truffle CLI.
It extends truffle-plugin-verify to also support Blockscout.
-
Install the plugin with npm or yarn
npm i -D truffle-source-verify -
Add the plugin to your
truffle-config.jsfilemodule.exports = { /* ... rest of truffle-config */ plugins: ["truffle-source-verify"], };
-
Generate an API Key on your Etherscan account (see the Etherscan website)
-
Add your Etherscan API key to your truffle config (make sure to use something like
dotenvso you don't commit the api key)module.exports = { /* ... rest of truffle-config */ api_keys: { etherscan: "MY_API_KEY", }, };
Before running verification, make sure that you have actually deployed your contracts to a public network with Truffle.
To verify your contracts on Etherscan, run:
npx truffle run etherscan SomeContractName AnotherContractName --network networkName [--debug]
Supported networks: mainnet, kovan, rinkeby, ropsten, goerli.
To verify your contracts on Blockscout, run:
npx truffle run blockscout SomeContractName AnotherContractName --network networkName --license UNLICENSED [--debug]
Supported networks: mainnet, xdai, sokol.
See truffle-plugin-verify for more information.
// file: ./scripts/test_verify.js
// Usage: npx truffle exec ./scripts/test_verify.js --network rinkeby
const { verify } = require("truffle-source-verify/lib");
async function main() {
const idx = process.argv.indexOf("--network");
const network = process.argv[idx + 1];
await verify(["BasicContract"], network, "UNLICENSED");
}
module.exports = (cb) => main().then(cb).catch(cb);