Skip to main content

Verifying Contracts

The Boba Explorers support verifying smart contracts via the hardhat-etherscan plug

Verifying Contracts with Hardhat

Installation

npm install --save-dev @nomiclabs/hardhat-etherscan

And add the following statement to your hardhat.config.js:

require("@nomiclabs/hardhat-etherscan");

Or, if you are using TypeScript, add this to your hardhat.config.ts:

import "@nomiclabs/hardhat-etherscan";

Usage

You need to add the following Etherscan config to your hardhat.config.js file:

module.exports = {
networks: {
boba_eth_mainnet: {
url: process.env.LIGHTBRIDGE_RPC_BOBAETHMAINNET ?? 'https://mainnet.boba.network',
},
boba_bnb_mainnet: {
url: 'https://boba-bnb.gateway.tenderly.co',
},
boba_sepolia: {
url: 'https://sepolia.boba.network',
},
boba_bnb_testnet: {
url: 'https://boba-bnb-testnet.gateway.tenderly.co',
},
},
etherscan: {
apiKey: {
boba_eth_mainnet: "boba", // not required, set placeholder
boba_bnb_mainnet: "boba", // not required, set placeholder
boba_bnb_testnet: "boba", // not required, set placeholder
boba_sepolia: "boba", // not required, set placeholder
},
customChains: [
{
network: "boba_eth_mainnet",
chainId: 288,
urls: {
apiURL: "https://api.routescan.io/v2/network/mainnet/evm/288/etherscan",
browserURL: "https://bobascan.com"
},
},
{
network: "boba_bnb_mainnet",
chainId: 56288,
urls: {
apiURL: "https://api.routescan.io/v2/network/mainnet/evm/56288/etherscan",
browserURL: "https://bobascan.com"
},
},
{
network: "boba_sepolia",
chainId: 28882,
urls: {
apiURL: "https://api.routescan.io/v2/network/testnet/evm/28882/etherscan",
browserURL: "https://testnet.bobascan.com"
},
},
{
network: "boba_bnb_testnet",
chainId: 9728,
urls: {
apiURL: "https://api.routescan.io/v2/network/testnet/evm/9728/etherscan",
browserURL: "https://testnet.bobascan.com"
},
}
],
}
};

Lastly, run the verify task, passing the address of the contract, the network where it's deployed, and the constructor arguments that were used to deploy it (if any):

npx hardhat verify --network mainnet DEPLOYED_CONTRACT_ADDRESS "Constructor argument 1" "Constructor argument 2"

Alternatively you may want to use Sourcify to verify your contracts.