> 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/upgrade.md).

# Upgrade

Update Monad Mainnet with version pinning and migration checks.

**Mainnet · package `monad`**

The reviewed rolling upgrade is **0.16.3 → 0.16.4**. Confirm Mainnet deployment approval before switching. Nodes on older versions must first complete the required intermediate configuration and MIP-8 migration steps in the [upstream upgrade index](https://docs.monad.xyz/node-ops/upgrade-instructions).

### Check version

Record the currently running release.

```bash
monad-rpc -V
```

### Check storage format

Inspect active TrieDB timelines before upgrading.

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

For MIP-8, follow the announced cohort and the [page-storage migration procedure](https://docs.monad.xyz/node-ops/upgrade-instructions/page-storage-mip-8-migration). State archive nodes have different requirements; do not blindly deactivate their slot timeline.

### Back up configuration

Store the backup in a restricted directory.

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

### Refresh packages

Load the latest package metadata.

```bash
sudo apt update
```

### Stop services

Stop consensus, execution and RPC together.

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

### Install the approved package

Use the reviewed target after confirming the upgrade path.

```bash
sudo apt install --reinstall monad=0.16.4 --allow-change-held-packages
```

### Keep the hold

Prevent unattended consensus-version changes.

```bash
sudo apt-mark hold monad
```

### Start services

Start the updated node.

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

### Check health

Verify all services are active.

```bash
sudo systemctl status monad-bft monad-execution monad-rpc --no-pager -l
```

### Confirm version

Expect the selected v0.16.4 tag.

```bash
monad-rpc -V
```

### Confirm advancing blocks

Repeat after a short interval.

```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
```

If the new release fails, keep services stopped while checking logs and the required migration path. Do not initialize TrieDB or perform a hard reset as a generic rollback.

[Release-specific instructions](https://docs.monad.xyz/node-ops/upgrade-instructions/v0.16.4).
