v3.16.0

Web3 / RPC

  • 新增支持 WebSocket 协议与 CORS

  • 增强区块响应(包含 receipts、logs bloom 计算)

  • 兼容无 chainId 的旧交易编码格式

  • 增强 estimateGas();新增同步交易行为配置

交易池(txpool)

  • 重构为 “sealed/unseal” 队列,移除未使用接口与冗余逻辑,统一并精简命名

  • 移除旧的 asyncSendBroadcastMessage;将 submitTransactionWithHook 合并至 submitTransaction

  • 修复 pending nonce、交易过滤等问题;补充交易验证器

执行、调度与性能

  • 引入 AnyHolder 优化 BlockImpl

  • 修复 delegatecall 的 value 处理问题

  • 改进 writeOne 实现

  • 多处异常捕获与容错处理

工程 / CI

  • 更新 vcpkg 基线与 CI 配置

  • HTTP Server、tars-protocol client 实现迁移

  • 修复广播序列问题

  • 调整回调 Sealer 的等待时间策略

补丁版本

  • v3.16.1(2025-09-29)

    • 回执新增字段;更新 sealTxs 接口

    • blockHeader() 的 const 返回类型调整为 AnyBlockHeader;blockHeaderConst 重命名为 blockHeader

    • 废弃“按索引取区块”相关接口;移除区块对象上已废弃的 receipt()、metaData()、transactions() 等访问器

    • 更新 archive-reader;优化正则性能,引入 throwWithTrace

    • P2P 写入路径改为将异步任务投递到 TBB 任务组;拆分 fastSendMessage;补充多处单元测试并修复缺失交易检查

  • v3.16.2(2025-10)

    • 修复 CallRequest 解码错误,改进 decodeCallRequest 的健壮性,对非法十六进制输入不再抛异常而是忽略

    • 版本号与默认兼容版本提升至 3.16.2,同步配置模板、协议版本常量等

  • v3.16.3(2025-11)

    • 新增 Web3Transactions 功能与单元测试;重构相关异常处理

    • 新增 AnyStorage、bloom storage;MultiLayerStorage 迁移至 bcos-framework 并统一命名空间

    • 交易存储并发处理增强与重构

    • 修复区块同步时 web3 内存 nonce 未更新的问题;修复 macOS x86 对齐错误

    • std::regex 替换为 boost::regex;清理无用头文件;移除 MoveBase/MoveImpl;版本号/默认兼容版本提升至 3.16.3

  • v3.16.4(2026-01)

    • EthEndpoint / TransactionExecutor 增强 gas 估算支持,改进区块响应格式;新增十六进制字符串补齐工具

    • 新增 getPendingStorageAt,支持读取 pending 状态的合约存储

    • 修复 revert 场景下的日志处理(新增 bugfix 开关);RPC JsonValidator 支持字符串类型 id 并精简校验逻辑

    • CI 增加 ubuntu-24.04 二进制产物上传并启用静态构建;补充余额不足、日志清理等测试

兼容性说明

兼容版本

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

  • 3.4.x ~ 3.15.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.15.0

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

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

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

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

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

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

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

[group0]: /apps>  getSystemConfigByKey compatibility_version
3.16.0

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