v3.10.0

新增

  • 新增feature开关feature_evm_cancun,用于控制EVM升级至CANCUN版本。相关PR:#4332

  • EVM支持至CANCUN版本,支持TLOAD, TSTORE, MCOPY, BLOBHASH and BLOBBASEFEE等最新操作码,支持soldity为0.8.26版本合约部署。相关PR:#4332

  • 一键搭链脚本增加开启日志级别为debug功能。相关PR:#4411

修复

  • 解决baseline模式下合约不存在时返回码与串行模式不同的问题。相关PR:#4512

  • 解决baseline模式下合约revert时可能会内存泄露的问题。相关PR:#4554

  • 限制baseline模式下缓存合约executive的数量,减少内存占用。相关PR:#4559

  • 修复Web3 JSON RPC部分接口不填入Block Tag导致节点退出的问题。PR:#4547

兼容性说明

兼容版本

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

  • 3.4.x、3.5.x,3.6.x、3.7.x、3.8.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的最新版本

实验功能

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

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

注意事项:

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

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

Feature 名 默认状态 说明
资产管理 feature_balance 关:0 默认关闭
资产操作预编译合约 feature_balance_precompile 关:0 默认关闭
计费模式 feature_policy1 关:0 默认关闭
块内分片 feature_sharding 关:0 默认关闭,仅在从3.3、3.4升级至当前版本时,feature_sharding打开
同态加密 feature_paillier 关:0 默认关闭
rpbft共识 feature_rpbft 关:0 默认关闭
EVM升级至CANCUN feature_evm_cancun 关:0 默认关闭
bug修复 bugfix_\<bug_name> 开:1 从低版本升级默认关闭

组件兼容性

推荐版本 最低版本 说明
WeBASE 3.0.2 3.0.2
WeIdentity v3.0.0-rc.1 v3.0.0-rc.1
Console 3.8.0 3.0.0
Java SDK 3.8.0 3.0.0
CPP SDK 3.8.0 3.0.0
Solidity 0.8.26 最低 0.4.25,最高 0.8.26 需根据合约版本下载编译器(控制台)
WBC-Liquid 1.0.0-rc3 1.0.0-rc3

升级方法

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

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

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

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

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

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

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

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

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

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

[group0]: /apps>  getSystemConfigByKey compatibility_version
3.10.0

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

EVM升级至CANCUN使用说明

首先通过控制台命令setSystemConfigByKey feature_evm_cancun 1开启EVM升级至CANCUN功能,然后部署0.8.26版本的合约。

注意:在部署0.8.26版本合约时,需要在depoly 后面指定sol-version 为0.8.26,如下所示:


[group0]: /apps> deploy StorageSlot.sol --sol-version 0.8.26
transaction hash: 0x8f3564047e3dd2913ed30f193e10c2b8af2b24896ce10b8add8eb47b888d7505
contract address: 0x29f1926cab679bc8bdd0757fb92adf020c8bd398
currentAccount: 0x0296737557c85bde21b4cf766c3f85e2e4c14d66

// 否则使用默认0.8.11版本编译则会报错
[group0]: /apps> deploy StorageSlot.sol
Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
--> StorageSlot.sol

Error: Function "tload" not found.
   --> StorageSlot.sol:127:22:
    |
127 |             value := tload(slot)
    |                      ^^^^^

Error: Variable count for assignment to "value" does not match number of values (1 vs. 0)