v3.15.0

执行器版本治理

  • 新增 executor_version 配置项(含创世配置),用于管理执行器版本

  • 修复执行器版本同步问题

  • 将 transaction-executor、scheduler 重命名为 v1,并引入新的 nonce 逻辑

  • 初始化 evmc_tx_context

Web3 / RPC 与其他

  • 修复交易 to 字段为空时的编码问题

  • 静态调用(call)场景下更新 nonce

  • 修复 StateKey 与 StateKeyView 比较函数的一致性问题

  • 修复若干余额相关问题

工程

  • 移除 checkRequirements

  • 简化 baseline 编译配置

补丁版本

  • v3.15.1(2025-04-15)

    • executeTransaction 新增 call 标志;消费余额的处理移动到执行阶段;不再返回空块

    • 调整更新 nonce 的顺序与保存点;LedgerNonceChecker::batchInsert 解锁;BucketMap::clear() 去除回调

    • 支持在多层存储中查询不存在的项

    • 规避潜在内存错误;为通知任务增加隔离;修复扩容模板(build_chain)问题

  • v3.15.2(2025-04-24)

    • memstorage 的 readOne 支持升级为 writer;改进 readSome/exists;将 blockhash/number 写入存储以支持 getBlockHash()

    • scheduler v1 支持空块;viewChange 时重置 lowWaterMark;每块获取 LedgerConfig;移除 marktx 锁

    • 新增 single_point_consensus 与 force_sender 测试开关

    • 修复预编译 EVM 状态、方法权限校验 sender、m_result 计算等问题

  • v3.15.3(2025-05-20)

    • 引入 RocksDB cache;merge 方法支持多参数

    • 修复 Web3 待处理交易计数问题

  • v3.15.4(2025-07-14)

    • 将 tag_invoke、EVMAccount 重构为成员自定义点;补充 Storage/Account 概念;新增 enforceSubmitTransaction 标志

    • 修复 Web3 pending nonce、max nonce 等问题;修复 KMS 在 CentOS + AWS SDK 环境下的内存分配问题

    • 增强 Web3 CI;为 GitHub macOS 添加 vcpkg 缓存;调整 Sealer 执行等待时间(1ms → 1s),并修复相关 pending 问题

  • v3.15.5(2025-08-19)

    • 修复 KMS 与交易池协同使用下的异常问题

    • RPC 新增获取区块头时间戳的调用

兼容性说明

兼容版本

需要升级的链的“数据兼容版本号(compatibility_version)”为如下版本时:

  • 3.4.x ~ 3.14.x:数据完全兼容当前版本,直接替换二进制即可完成升级

  • 3.3.x、3.2.x、3.1.x、3.0.x:支持通过替换二进制进行灰度升级,若需使用当前版本的新特性,需升级数据兼容版本号,操作见版本升级指南

  • 3.0-rc x:数据不兼容,无法升级,可考虑逐步将业务迁移至3.x正式版

  • 2.x:数据不兼容,2.x版本仍持续维护,可考虑升级为2.x的最新版本

说明:该区间依据版本发布时的固定兼容性惯例推算,未见于 ChangeLog 原文。

实验功能

效果:通过feature开关控制实验功能的开启

操作:升级节点可执行程序后,通过控制台命令setSystemConfigByKey <feature名> 1 开启对应实验功能,具体操作见文档升级方法部分

注意事项:

  • feature操作不可逆,打开后不可关闭

  • 需确认所有可执行程序版本相同后,再进行feature开启操作

组件兼容性

各组件(控制台、SDK、WeBASE 等)的推荐版本与最低版本,以 兼容性说明文档 为准。

升级方法

该操作仅支持将3.x版本升级为本版本,不支持3.0-rc或2.x的升级。

查询数据兼容版本号(compatibility_version)

用控制台 进行查询,如当前返回的版本为3.14.0

[group0]: /apps>  getSystemConfigByKey compatibility_version
3.14.0
替换节点二进制

需将所有节点 的二进制逐步替换为当前版本。为了不影响业务,替换过程能够以灰度方式进行,逐个替换并重启节点。替换过程中,当前的链仍然会以旧的数据兼容版本号的逻辑继续执行。当所有节点二进制替换完成并重启后,需用控制台修改数据兼容版本号为当前版本。

设置数据兼容版本号(compatibility_version)

用控制台 设置数据兼容版本号,如当前版本为3.15.0。

[group0]: /apps>  setSystemConfigByKey compatibility_version 3.15.0
{
    "code":0,
    "msg":"success"
}

注:若开启权限治理功能,需要使用 setSysConfigProposal 命令

设置成功,再次查询,得到当前版本已升级为3.15.0

[group0]: /apps>  getSystemConfigByKey compatibility_version
3.15.0

当前链已经完成升级,至此,链开始以新的逻辑继续运行,并支持了新的特性。