> ## 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.15.0 升级说明

<Warning>
  这些说明仅适用于**测试网**。**主网**可以忽略。
</Warning>

## 升级说明

<Note>
  **从 v0.14.5 或更早版本升级：** v0.14.6 和 v0.14.7 未部署给外部节点运营者。作为参考，这些版本中的变更列在 [v0.14.6 发布说明](https://github.com/category-labs/monad-bft/releases/tag/v0.14.6)和 [v0.14.7 发布说明](https://github.com/category-labs/monad/releases/tag/v0.14.7)中。下面的 v0.15.0 升级说明涵盖了从 v0.14.5 的完整升级。
</Note>

v0.15.0 对 `node.toml` 配置没有破坏性更改。

<Warning>
  **需要 DB 迁移（仅限现有节点）：** v0.15.0 在启动服务之前需要一次性数据库元数据迁移。请参见[步骤 4](#4-run-db-migration-existing-nodes-only)获取确切命令。新配置的节点（全新的 DB）可以跳过步骤 4。始终使用 v0.15.0 `monad-mpt` 二进制文件运行迁移 — 首先在步骤 3 中安装它。
</Warning>

<Warning>
  **不再接受压缩的 RPC 请求：** 如果您的集成发送压缩的请求体（例如 `Content-Encoding: gzip`），在升级前请切换为未压缩的请求。v0.15.0 删除了解压缩支持 — 升级后压缩的请求将被拒绝。
</Warning>

**注意：** v0.15.0 的 `monad-mpt` 二进制文件包含了对早期版本中存在的两个迁移边缘情况的修复：

* 在跟踪 `num_cnv_chunks` 之前创建的数据库的节点在迁移期间会崩溃并出现 `Assertion 'r != MAP_FAILED'` — 已修复。（[monad PR #2353](https://github.com/category-labs/monad/pull/2353)）
* ≥15.8 TB 磁盘的节点在迁移期间可能会静默损坏数据 — 已修复。（[monad PR #2387](https://github.com/category-labs/monad/pull/2387)）

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

## 2. 停止服务

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

## 3. 升级 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.15.0 -y --allow-downgrades --allow-change-held-packages
sudo apt-mark hold monad
```

<Warning>
  `apt-mark hold monad` 命令可防止 monad 软件包被 `apt-get upgrade` 自动升级。如果没有它，无人值守的系统升级可能会安装未经您的网络批准的更新版本的 monad，从而导致版本不匹配问题。
</Warning>

## 4. 运行 DB 迁移（仅限现有节点）

<Warning>
  此步骤对于任何具有现有数据库的节点都是必需的。新配置的节点（全新的 DB）可以跳过此步骤。

  如果在现有数据库上跳过此步骤，服务将在启动时中止，并显示指示需要升级的日志消息 — 不会发生数据损坏。运行迁移并再次启动即可。
</Warning>

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

预期输出：迁移在 1 秒内完成，无错误。

**注意：** 如果您使用 `monad-status` 检查节点健康状况，请确保您有最新版本 — `monad-mpt` 的状态输出格式在 v0.15.0 中已更改，`monad-status` 已更新以支持它。

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

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

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

预期输出：

```json theme={null}
monad-rpc {"commit":"8facc4faef28d390b8100e297e1d26022ea561e2","tag":"v0.15.0","branch":"","modified":true}
```

***

## 使用 `monad-status` 的运营者注意事项（可选）

对于使用 `monad-status` 的运营者，请按照[这些说明](https://docs.monad.xyz/node-ops/general-operations#node-status-with-monad-status)下载新版本。

新版本的脚本与 monad `0.15.0` 兼容，并向后兼容之前版本的 monad 客户端。

***

## RPC 提供商注意事项（可选）：启用 `eth_simulateV1`

`eth_simulateV1` 在 v0.15.0 中**默认禁用**。想要公开此方法的运营者可以通过在 `monad-rpc` 服务中添加 `--enable-eth-simulate-v1` 来启用它。

### 如何启用

**步骤 1：** 找到您当前的 `monad-rpc` systemd 覆盖文件：

```bash theme={null}
systemctl cat monad-rpc
```

输出将显示一个或多个文件。查找位于 `/etc/systemd/system/monad-rpc.service.d/` 下的 drop-in 文件 — 这是您需要编辑的文件。

**步骤 2：** 打开 drop-in 文件并将 `--enable-eth-simulate-v1` 附加到 `ExecStart` 行的末尾：

```bash theme={null}
sudo nano /etc/systemd/system/monad-rpc.service.d/<your-override-file>.conf
```

编辑后 `ExecStart` 行应如下所示：

```
ExecStart=/usr/local/bin/monad-rpc <your existing flags> --enable-eth-simulate-v1
```

**步骤 3：** 重新加载并重启 `monad-rpc`：

```bash theme={null}
sudo systemctl daemon-reload
sudo systemctl restart monad-rpc
sudo systemctl status monad-rpc --no-pager -l
```

### 验证

```bash theme={null}
curl -s -X POST http://localhost:8080 \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_simulateV1","params":[{"blockStateCalls":[]},"latest"],"id":1}'
```

如果已启用，您将收到执行响应（而不是 `"Method not supported"`）。
