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 ) |
--forgeScriptOptions | Options to provide the post-deploy forge script | string | Empty string |
--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
Deploy a 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
.
Allow more gas for the post-deploy script
pnpm mud deploy --rpc <url> --forgeScriptOptions '\-\-gas-estimate-multiplier 200'
Upgrade 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