v3.13.0¶
性能与结构优化¶
内存与数据结构优化:
MemoryStorage支持异构查找(heterogeneous lookup)与Equal;多处容器/结构改用array替代unordered_map、std::string_view用于表示 nonce 等场景,并采用隐藏友元(hidden friend)风格重构任务与执行器优化:引入
pmr分配器以降低内存分配开销;执行器拆分为三段协程以提升并发能力;为基线执行器实现基础余额逻辑与BalancePrecompiled网络与网关优化:减少 handle 拷贝与不必要的
shared_ptr使用;新增协程化的broadcastMessage接口并在 PBFT/网络模块落地;去除阻塞式的notifyUnSealTxs
功能与接口¶
交易结构新增
conflictKeys字段新增交易签名检查开关
完善区块对象相关接口
定时器支持借用
io_service
修复与工程¶
多处基准测试、单元测试与工具链改进(sanitize CI、
BucketMap遍历修复、前置消息类型与路由图更新等)修复执行器与事务处理中的若干缺陷
完善性能基准测试用例
兼容性说明¶
兼容版本¶
需要升级的链的“数据兼容版本号(compatibility_version)”为如下版本时:
3.4.x ~ 3.12.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.12.0
[group0]: /apps> getSystemConfigByKey compatibility_version
3.12.0
替换节点二进制¶
需将所有节点 的二进制逐步替换为当前版本。为了不影响业务,替换过程能够以灰度方式进行,逐个替换并重启节点。替换过程中,当前的链仍然会以旧的数据兼容版本号的逻辑继续执行。当所有节点二进制替换完成并重启后,需用控制台修改数据兼容版本号为当前版本。
设置数据兼容版本号(compatibility_version)¶
用控制台 设置数据兼容版本号,如当前版本为3.13.0。
[group0]: /apps> setSystemConfigByKey compatibility_version 3.13.0
{
"code":0,
"msg":"success"
}
注:若开启权限治理功能,需要使用 setSysConfigProposal 命令
设置成功,再次查询,得到当前版本已升级为3.13.0
[group0]: /apps> getSystemConfigByKey compatibility_version
3.13.0
当前链已经完成升级,至此,链开始以新的逻辑继续运行,并支持了新的特性。