mud deploy
This command deploys a MUD app to a blockchain.
Using the command
Before you run mud deploy
you need to specify the private key of the deploying account.
There are several ways to do this:
-
Export an environment variable.
export PRIVATE_KEY=0x<key goes here>
-
Edit
.env
to specify thePRIVATE_KEY
value.# This .env file is for demonstration purposes only. # # This should usually be excluded via .gitignore and the env vars attached to # your deployment environment, but we're including this here for ease of local # development. Please do not commit changes to this file! # # Anvil default private key: PRIVATE_KEY=0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d
You also need to specify a URL to the blockchain. Again, there are several ways to do this:
- Use the
--rpc <url>
command line parameter. - Specify the URL as the
eth_rpc_url
value in a profile infoundry.toml
(opens in a new tab). If the profile isn't the default, use--profile <profile name>
.
These are the command line options you can specify on mud deploy
:
Option | Meaning | Type | Default value |
---|---|---|---|
--configPath | Path to the config file | string | mud.config.ts |
--printConfig | Print the resolved config | boolean | false |
--saveDeployment | Save the deployment info to a file | boolean | true |
--profile | The foundry profile to use | string | local |
--rpc 1 | The RPC URL to use | string | RPC url from foundry.toml |
--rpcBatch | Enable batch processing of RPC requests | boolean | false |
--worldAddress | Deploy to an existing World at the given address | string | Empty, deploy new World |
--srcDir | Source directory | string | Foundry src directory |
--skipBuild | Skip rebuilding the contracts before deploying | boolean | false |
--alwaysRunPostDeploy | Run PostDeploy.s.sol after each deploy | boolean | false (run the script only when deploying a new World ) |
--help | Show help | boolean | false |
--version | Show version number | boolean | false |
(1) The hostname localhost
may not work. If that is the case, use 127.0.0.1
instead.
If you want to verify the contracts that make up the World
, do it right 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.
Examples
New World
To create a new World
you can use this command line:
pnpm mud deploy --rpc <url>
This command also writes the World
's address to worlds.json
.
Upgrading a World
To upgrade a World
's System
s and tables, you can use this command line:
pnpm mud deploy --rpc <url> --worldAddress <address>
If properly configured, there is also a way to upgrade the core MUD contracts.
Debugging
To generate debug messages, use this command:
export DEBUG=mud:cli:deploy