Skip to main content
These instructions are only applicable to testnet. This can be ignored for mainnet.

Part 1: To Halt

Node operators must stop all monad services before re-genesis.

1. SSH into the node as root user

2. Stop all monad services

systemctl stop monad-bft monad-execution monad-rpc

3. Verify services are stopped

systemctl status monad-bft monad-execution monad-rpc --no-pager -l
Expected output: All services should show Active: inactive (dead)

Part 2: Re-genesis

Do not proceed until Monad Foundation provides notice that re-genesis is ready.

1. Hard reset

Perform a hard reset to wipe local state and prepare for the new genesis.
bash /opt/monad/scripts/reset-workspace.sh

2. Upgrade monad package

sudo apt update && sudo apt install --reinstall monad=0.12.5 -y --allow-downgrades --allow-change-held-packages

3. Fetch configuration files

If you have automated remote config fetching configured (v0.12.1+), the new forkpoint.toml and validators.toml files will be automatically fetched on startup.Ensure REMOTE_VALIDATORS_URL and REMOTE_FORKPOINT_URL are defined in /home/monad/.env. See Soft Reset Instructions for more details on automated configuration fetching.If not using automated fetching, run the commands below.
MF_BUCKET=https://bucket.monadinfra.com
VALIDATORS_FILE=/home/monad/monad-bft/config/validators/validators.toml

curl -sSL $MF_BUCKET/scripts/testnet/download-forkpoint.sh | bash
curl $MF_BUCKET/validators/testnet/validators.toml -o $VALIDATORS_FILE
chown -R monad:monad /home/monad/monad-bft/config/

4. (Optional) Archivers: Reset archive sources

If you are running an archive node, you must either:
  1. Wipe your existing archiver sources - Clear all existing archived data to start fresh with the new genesis, or
  2. Point to a new bucket/source - Configure your archiver to use a new destination for the re-genesis chain
Failure to do so may result in conflicting data from the previous chain.

5. Start services and verify

systemctl start monad-bft monad-execution monad-rpc
systemctl status monad-bft monad-execution monad-rpc --no-pager -l
Expected output: All services should show Active: active (running)

6. Verify the correct version is running

monad-rpc --version
Expected output:
monad-rpc {"commit":"a1fe1fbef7ff5d51e1eeb42809457cd68f7525dd","tag":"v0.12.5","branch":"","modified":true}
All nodes are expected to initially join the network as public full nodes before transitioning to validators. Monad Foundation will coordinate validator registration and delegation.

Patch notes

Please refer to the public changelog for v0.12.5.