mud verify
This command uploads the source code for the deployed contracts to a public repository, such as a block explorer. The repository then compiles the source code and verifies that the compiled version is identical to what is deployed onchain.
The best time to perform verification is immediately after deployment. Verification only works with the original source code, compiler options, and compiled artifacts. Otherwise, the generated bytecode is different and therefore verification fails.
Currently, on Etherscan and Blockscout mud verify
verifies the System
s that are part of your application, but not
the MUD contracts themselves. On Sourcify mud verify
verifies all the contracts.
Using the command
-
If using Etherscan or Blockscout, specify the API key:
export ETHERSCAN_API_KEY=<value goes here>
With Blockscout you don't have to specify the API key. However, there is a limited number of requests allowed for accounts without an API key per second, so you get much more reliable service if you do.
-
Run the command.
pnpm mud verify --worldAddress <address here> --rpc <RPC to the blockchain> [--verifier <verifier>]
These are the command line options you can specify on
mud verify
:Option Meaning Type Default value --worldAddress
Verify the contracts of the World at the given address string none, error if unspecified --configPath
Path to the config file string mud.config.ts
--verifier
The verifier to use ( sourcify
, orblockscout
)string blockscout
--verifierUrl
URL to use to access the verifier's API string depends on the verifier used --profile
The foundry profile to use string local
--rpc
URL to the blockchain string --srcDir
Source directory string Foundry src
directory--version
Show version number boolean false
Note that it takes block explorers some time to process new contracts. You should wait 5-10 minutes past deployment before you verify the contract on Etherscan and/or Blockscout.
Examples
-
To verify the world at that address on Holesky on sourcify (opens in a new tab):
WORLD_ADDRESS=0x816038e244ff78b86a5e7dec9bf281634fb6d2a2 HOLESKY_RPC=https://ethereum-holesky.publicnode.com pnpm mud verify --rpc $HOLESKY_RPC --worldAddress $WORLD_ADDRESS
-
To verify a contract on Holesky for users of Blockscout (opens in a new tab):
WORLD_ADDRESS=0x816038e244ff78b86a5e7dec9bf281634fb6d2a2 HOLESKY_RPC=https://ethereum-holesky.publicnode.com export ETHERSCAN_API_KEY= ** blockscout API key goes here ** pnpm mud verify --rpc $HOLESKY_RPC --worldAddress $WORLD_ADDRESS --verifier blockscout --verifier-url https://eth-holesky.blockscout.com/api