> For the complete documentation index, see [llms.txt](https://service.block-pro.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://service.block-pro.net/mainnet/monad/snapshots.md).

# Snapshots

Bootstrap or recover Monad Mainnet state with the official snapshot procedure.

**Mainnet · state recovery**

Use this after fresh installation or when an explicit recovery requires rebuilding state. A hard reset replaces runtime chain data. It is not a routine upgrade step.

The upstream restoration utility selects the correct snapshot and TrieDB timeline format. This page keeps preparation, inspection, restoration and verification as separate commands.

{% hint style="warning" %}
Run in a root shell. Check /dev/triedb and back up node identities, the keystore password and configuration before resetting. Keep any needed history elsewhere; a recent snapshot does not restore an archive node’s full history.
{% endhint %}

### Verify the device

Confirm the raw database points to the intended partition.

```bash
ls -l /dev/triedb
```

### Back up configuration

Create a restricted backup directory.

```bash
install -m 0700 -d /opt/monad/backup
```

### Save identity and configuration

Keep the environment and config together. This archive contains secrets.

```bash
tar -czf "/opt/monad/backup/config-$(date +%Y%m%d-%H%M%S).tar.gz" -C /home/monad .env monad-bft/config
```

### Restrict backup permissions

Ensure only root can read the backup files.

```bash
chmod -R go-rwx /opt/monad/backup
```

### Stop the services

Stop database access before restoration.

```bash
systemctl stop monad-bft monad-execution monad-rpc
```

### Inspect the packaged reset utility

Review the installed utility and paths before it changes runtime data.

```bash
less /opt/monad/scripts/reset-workspace.sh
```

### Reset runtime state

Execute the official packaged reset step. It removes runtime chain data; verify its scope in the preceding step.

```bash
bash /opt/monad/scripts/reset-workspace.sh
```

### Download the Mainnet restore utility

Save the official utility for inspection.

```bash
curl -fL https://bucket.monadinfra.com/scripts/mainnet/restore-from-snapshot.sh -o /root/monad-restore-mainnet.sh
```

### Review restoration

Confirm the provider URLs, mainnet selection and database target.

```bash
less /root/monad-restore-mainnet.sh
```

### Restore the snapshot

Run the reviewed upstream recovery utility and wait for successful completion.

```bash
bash /root/monad-restore-mainnet.sh
```

Mainnet has activated MIP-8. Current recovery tooling builds a page timeline from a recent snapshot; do not apply an old slot-format restore command copied from a pre-fork guide.

### Check the database

Verify the imported state and timeline.

```bash
monad-mpt --storage /dev/triedb
```

### Inspect remote metadata settings

Check that both runtime metadata URLs point to Mainnet.

```bash
grep -E '^REMOTE_(VALIDATORS|FORKPOINT)_URL=' /home/monad/.env
```

### Start

Start after successful restoration; configured remote metadata is fetched on startup.

```bash
systemctl start monad-bft monad-execution monad-rpc
```

### Inspect synchronization

Look for statesync completion and new blocks.

```bash
journalctl -u monad-bft -n 100 -f -o cat
```

### Check RPC height

RPC becomes available after statesync completes.

```bash
curl -fsS http://127.0.0.1:8080/ -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' | jq
```

[Official recovery procedure](https://docs.monad.xyz/node-ops/node-recovery/hard-reset) · [Storage-format migration](https://docs.monad.xyz/node-ops/upgrade-instructions/page-storage-mip-8-migration).
