概览
v1.20.4-bl.2 是 Injective 主网(injective-1) 在 v1.20.4 发布线上的紧急补丁。其共识黑名单已在区块高度 184,950,000 激活,该高度已经过去。请立即升级;此补丁没有计划的链停机、治理升级处理程序(upgrade handler)或状态迁移。不要等待停机,也不要设置新的 --halt-height。
这适用于验证者、哨兵节点、全节点、公共和私有 RPC/广播节点,以及为交易所、区块浏览器和其他集成提供服务的节点。
1. 选择并验证发布版本
选择二进制压缩包或 Docker 镜像之一。Docker 运营者可以跳过压缩包下载,直接使用镜像。选项 A:二进制压缩包
官方发布清单列出了托管的二进制文件。下载适用于你所在平台的压缩包:
对于 Linux AMD64,请下载到一个暂存目录中,不要替换正在运行的二进制文件:
OK 时才继续。然后解压压缩包:
shasum -a 256,并将压缩包与校验和文件中的对应条目进行比对。
选项 B:Docker 镜像
初始发布以如下 Docker 镜像分发此补丁:libwasmvm。
2. 停止节点并备份其状态
通过现有的服务管理器或容器部署停止节点。同时停止其守护/监管进程,确保它在恢复期间不会自动重启。确认没有injectived 进程正在访问节点的数据目录。
继续之前,请备份节点配置、密钥和数据。在完成任何必要的回滚之前,请保留现有二进制文件。以下命令假定使用默认主目录 ~/.injectived;如有不同,请使用你配置的 --home 路径。
Docker Compose 示例: 在你现有的 Compose 项目中运行命令,并使用与常规部署相同的 Compose 文件和环境。将 node_service 设置为你实际的服务名称,将 container_node_home 设置为其在容器内的现有主目录路径;以下值仅为示例。确认该主目录由你现有的绑定挂载(bind mount)或命名卷(named volume)提供支持,然后停止服务:
3. 恢复受影响的节点(如需要)
仅当你的节点遇到 10 月 7 日的 AppHash 不匹配时才执行此步骤。已报告的一条错误如下:PATH 中的其他 injectived。
- Cosmovisor: 使用现有的
$DAEMON_HOME/cosmovisor/current/bin/injectived执行回滚,并让--home指向该节点的主目录。 - 容器: 使用旧镜像、相同的数据卷、节点主目录和用户权限,以一次性命令的方式执行回滚。在整个过程中保持常规节点容器处于停止状态。
image 保持为受影响节点所使用的确切旧镜像。完成备份后,运行以下命令代替上面的主机回滚命令:
injectived;如果你的部署使用自定义包装脚本,请保留所需的初始化步骤。
在替换二进制文件之前,请等待回滚成功完成。事件恢复说明估计耗时约 10 秒到 1 分钟;大型数据库或归档数据库可能需要更长时间。如果命令失败或不匹配仍然存在,请勿反复回滚更多区块。保持节点停止,并向支持团队提供其版本、高度和日志。
如果无法回滚或回滚失败,请通过 Chain Portal 或你的 Injective 支持联系人获取合适的快照。区块高度 186,223,485 之前的快照可以使用已打补丁的二进制文件重放。请保留验证者签名状态,并按照快照恢复流程操作。
4. 安装补丁
完成任何必要的回滚后:- 二进制部署: 用经过验证的压缩包中的可执行文件替换服务所使用的
injectived。将附带的libwasmvm库安装到部署所使用的库路径中,并保留服务的所有者和权限设置。 - Cosmovisor: 替换
$DAEMON_HOME/cosmovisor/current/bin中的injectived,并将附带的库放到服务加载库的位置。此补丁没有升级处理程序,因此将其放入新的upgrades目录不会自动激活。 - 容器: 将现有部署更新为
injectivelabs/injective-core:v1.20.4-bl.2,保留其数据卷、配置、用户和启动参数。
image 值(或提供该值的环境变量)更改为 injectivelabs/injective-core:v1.20.4-bl.2。在节点保持停止的状态下拉取并验证所配置的镜像:
version,并确认输出为:
可选:本地内存池黑名单
共识黑名单已内置于打过补丁的二进制文件中,无需任何配置。以下app.toml 条目用于添加本地交易准入过滤,属于可选项;它不能替代二进制文件升级。
如果启用此项,请将该条目添加到 ~/.injectived/config/app.toml 的顶层,位于 [api] 等任何 TOML 节标题之前:
5. 重启并验证
验证者在重启前必须恢复并验证停机后所做的签名状态备份。通过现有的服务管理器或容器部署启动节点。 对于 Docker Compose,使用新镜像重新创建服务,然后在运行中的容器内验证二进制文件并检查其日志:up 来应用镜像变更;仅重启旧容器不会替换其镜像。对于原生 Docker 或其他编排工具,请使用打过补丁的镜像重新创建已停止的节点容器,并沿用其现有的挂载、端口、环境、用户和启动参数。确保只有一个实例在使用该节点的数据和验证者密钥。
检查日志,确认启动成功,且 AppHash 不匹配不再出现。查询节点的本地 RPC 端点(如有需要请调整地址):
- 网络为
injective-1。 - 区块高度在连续多次检查中持续增长,并追上网络高度。
- 同步完成后,
catching_up变为false。 - 验证者恢复签名,交易所/RPC 运营者确认其下游服务能够接收最新区块。
