> ## Documentation Index
> Fetch the complete documentation index at: https://monadfoundation-40611fb6-devops-1498-direct-udp-implementat.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# v0.16.2 Upgrade Instructions

<Warning>
  This page contains upgrade instructions for **testnet** and **mainnet**. Always verify which network the instructions apply to.
</Warning>

## Upgrade notes

No breaking changes to `node.toml` config for `v0.16.2`.

### MONAD\_TEN is already active

MONAD\_TEN (MIP-8, page-encoded storage) activated on mainnet at timestamp `1788359400` (2026-09-02 14:30 UTC) with v0.16.1. v0.16.2 carries the same activation.

<Warning>
  **Never downgrade from a fork-carrying build.** A node running a release older than v0.16.1 will continue applying MONAD\_NINE rules after the activation timestamp and will diverge from the network.
</Warning>

### Page-encoded timeline still required

As with v0.16.1, a mainnet or testnet node must present either a page-encoded primary (Phase C) or an active secondary timeline (Phase A/B dual-db), or it will abort at startup with:

```
live monad requires a page-encoded timeline (as primary or secondary) on monad_mainnet; primary_is_page=0 secondary_active=0
```

If you are upgrading from v0.16.1 this is already satisfied. If you are coming from v0.16.0 or earlier, complete the [Phase A migration](/node-ops/upgrade-instructions/page-storage-mip-8-migration#phase-a-page-activation) first.

### Building from source

v0.16.2 requires the system package `libsecp256k1-dev` at build time. The published Docker images already include it. This only affects operators building outside those images.

## 1. SSH into the node as `root` user

## 2. Stop services

```bash theme={null}
sudo systemctl stop monad-bft monad-execution monad-rpc
```

## 3. Upgrade monad package

<Warning>
  If you encounter issues with the GPG signature (e.g. signatures were invalid), please renew the keys with the command below.
</Warning>

```bash theme={null}
curl -fsSL https://pkg.category.xyz/keys/public-key.asc \
  | gpg --dearmor --yes -o /etc/apt/keyrings/category-labs.gpg
```

```bash theme={null}
sudo apt update && sudo apt install --reinstall monad=0.16.2 -y --allow-downgrades --allow-change-held-packages
sudo apt-mark hold monad
```

<Warning>
  The `apt-mark hold monad` command prevents the monad package from being upgraded automatically by `apt-get upgrade`. Without it, unattended system upgrades can install a newer version of monad that has not been approved for your network, causing version mismatch issues.
</Warning>

## 4. Start services and verify

```bash theme={null}
sudo systemctl start monad-bft monad-execution monad-rpc
sudo systemctl status monad-bft monad-execution monad-rpc --no-pager -l
```

All services should show `Active: active (running)`. Confirm the node rejoins and advances blocks.

## 5. Verify the correct version is running

```bash theme={null}
monad-rpc -V
```

Expected output:

```json theme={null}
monad-rpc {"commit":"4374d389edca834764cf42c43ae822813e183a65","tag":"v0.16.2","branch":"","modified":true}
```
