> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monad.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# v0.16.1 升级说明

<Warning>
  这些说明同时适用于 **主网** 和 **测试网**。请始终确认您正在操作的网络之后再继续操作。
</Warning>

## 升级须知

`v0.16.1` 未对 `node.toml` 配置引入任何破坏性变更。

**Metrics 端点默认启用。** 自 v0.16.0 起,metrics 端点在端口 `9143/TCP` 上默认启用,监听 `0.0.0.0`。如果您有限制 metrics 端口的防火墙规则,请确认它们已按预期配置。

<Warning>
  **主网 MONAD\_TEN 激活(MIP-8:页编码存储)**

  v0.16.1 在 **主网** 上于时间戳 `1788359400`(2026-09-02 14:30 UTC)激活 MONAD\_TEN。

  **在该时间戳之前,每一个主网节点都必须运行 v0.16.1。** 仍在 v0.16.0 或更早版本上的节点将在激活后继续应用 MONAD\_NINE 规则,并将与网络产生分歧。

  所有节点在升级之前 **必须** 处于 dual-db 模式(阶段 A 已完成)。详情请参阅 [MIP-8 激活与页存储迁移](/zh/node-ops/upgrade-instructions/page-storage-mip-8-migration)。

  **尚未完成阶段 A(dual-db 激活)的节点将无法在 v0.16.1 上启动。** v0.16.1 将页编码时间线断言从测试网扩展到了主网 —— 如果既未检测到页编码的主时间线(阶段 C),也未检测到活跃的次要时间线(阶段 A/B),节点将在启动时中止并输出:

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

  请注意,此失败会在 **升级时** 显现,而不是在激活时间戳时。在开始之前,请在您的所有节点上验证 dual-db 状态。
</Warning>

## 1. 以 `root` 用户 SSH 登录节点

## 2. 验证 dual-db 模式(阶段 A)

在升级之前,确认您的节点已完成阶段 A(dual-db 激活)。没有活跃页编码时间线的节点将无法在 v0.16.1 上启动。

```bash theme={null}
monad-mpt --storage /dev/triedb
```

您应看到 Primary 和 Secondary 两个时间线:

```
Active timelines:
     Primary:
        State machine kind: ethereum
     Secondary:
        State machine kind: monad
```

如果您只看到一个 `ethereum` Primary 时间线,请先完成[阶段 A 迁移](/zh/node-ops/upgrade-instructions/page-storage-mip-8-migration#phase-a-page-activation) 再继续。

## 3. 停止服务

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

## 4. 升级 monad 包

<Warning>
  如果您遇到 GPG 签名问题(例如签名无效),请使用以下命令刷新密钥。
</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.1 -y --allow-downgrades --allow-change-held-packages
sudo apt-mark hold monad
```

<Warning>
  `apt-mark hold monad` 命令可防止 `apt-get upgrade` 自动升级 monad 包。若不加此命令,无人值守的系统升级可能会安装未经您所在网络批准的更新版本 monad,进而导致版本不匹配问题。
</Warning>

## 5. 启动服务并验证

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

所有服务都应显示 `Active: active (running)`。请确认节点已重新加入并推进区块。

如果 `monad-execution` 立即退出,请检查 journal 中上文升级须知中描述的页编码时间线断言 —— 那表明本节点上尚未完成阶段 A。

## 6. 验证正在运行的版本正确

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

预期输出:

```json theme={null}
monad-rpc {"commit":"12b7017d61e888a62d89978d623fed182297e7af","tag":"v0.16.1","branch":"","modified":true}
```
