forge verify-contract
Verify smart contracts on Etherscan
$ forge verify-contract --help
Usage: forge verify-contract [OPTIONS] <ADDRESS> [CONTRACT]
Arguments:
<ADDRESS>
The address of the contract to verify
[CONTRACT]
The contract identifier in the form `<path>:<contractname>`
Options:
--constructor-args <ARGS>
The ABI-encoded constructor arguments
[aliases: encoded-constructor-args]
--constructor-args-path <PATH>
The path to a file containing the constructor arguments
--guess-constructor-args
Try to extract constructor arguments from on-chain creation code
--compiler-version <VERSION>
The `solc` version to use to build the smart contract
--num-of-optimizations <NUM>
The number of optimization runs used to build the smart contract
[aliases: optimizer-runs]
--flatten
Flatten the source code before verifying
-f, --force
Do not compile the flattened smart contract before verifying (if
--flatten is passed)
--skip-is-verified-check
Do not check if the contract is already verified before verifying
--watch
Wait for verification result after submission
--root <PATH>
The project's root path.
By default root of the Git repository, if in one, or the current
working directory.
--show-standard-json-input
Prints the standard json compiler input.
The standard json compiler input can be used to manually submit
contract verification in the browser.
--via-ir
Use the Yul intermediate representation compilation pipeline
--evm-version <EVM_VERSION>
The EVM version to use.
Overrides the version specified in the config.
-e, --etherscan-api-key <KEY>
The Etherscan (or equivalent) API key
[env: ETHERSCAN_API_KEY=]
-c, --chain <CHAIN>
The chain name or EIP-155 chain ID
[env: CHAIN=]
-r, --rpc-url <URL>
The RPC endpoint
[env: ETH_RPC_URL=]
--flashbots
Use the Flashbots RPC URL with fast mode
(<https://rpc.flashbots.net/fast>).
This shares the transaction privately with all registered builders.
See:
<https://docs.flashbots.net/flashbots-protect/quick-start#faster-transactions>
--jwt-secret <JWT_SECRET>
JWT Secret for the RPC endpoint.
The JWT secret will be used to create a JWT for a RPC. For example,
the following can be used to simulate a CL `engine_forkchoiceUpdated`
call:
cast rpc --jwt-secret <JWT_SECRET> engine_forkchoiceUpdatedV2
'["0x6bb38c26db65749ab6e472080a3d20a2f35776494e72016d1e339593f21c59bc",
"0x6bb38c26db65749ab6e472080a3d20a2f35776494e72016d1e339593f21c59bc",
"0x6bb38c26db65749ab6e472080a3d20a2f35776494e72016d1e339593f21c59bc"]'
[env: ETH_RPC_JWT_SECRET=]
--retries <RETRIES>
Number of attempts for retrying verification
[default: 5]
--delay <DELAY>
Optional delay to apply inbetween verification attempts, in seconds
[default: 5]
-h, --help
Print help (see a summary with '-h')
Linker options:
--libraries <LIBRARIES>
Set pre-linked libraries
[env: DAPP_LIBRARIES=]
Verifier options:
--verifier <VERIFIER>
The contract verification provider to use
[default: etherscan]
[possible values: etherscan, sourcify, blockscout, oklink]
--verifier-url <VERIFIER_URL>
The verifier URL, if using a custom provider
[env: VERIFIER_URL=]