-
Notifications
You must be signed in to change notification settings - Fork 196
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs(cli/verify): initial version (#2744)
Co-authored-by: Kevin Ingersoll <[email protected]> Co-authored-by: Fraser Scott <[email protected]>
- Loading branch information
1 parent
b4eb795
commit 0c1136a
Showing
3 changed files
with
79 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
import { Callout } from "nextra/components"; | ||
|
||
# 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](./deploy). | ||
Verification only works with the original source code, compiler options, and compiled artifacts. | ||
Otherwise, the generated bytecode is different and therefore verification fails. | ||
|
||
<Callout type="info" emoji="ℹ️"> | ||
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. | ||
</Callout> | ||
|
||
## Using the command | ||
|
||
1. If using Etherscan or Blockscout, specify the API key: | ||
|
||
```sh copy | ||
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. | ||
|
||
1. Run the command. | ||
|
||
```sh copy | ||
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`, or `blockscout`) | string | `sourcify` | | ||
| `--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](https://sourcify.dev/): | ||
|
||
```sh | ||
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](https://www.blockscout.com/): | ||
|
||
```sh | ||
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 | ||
``` |