Skip to content

FISCO-BCOS v3.9.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@kyonRay kyonRay released this 03 Jul 02:57
· 247 commits to master since this release
dce491b

获取更多信息,请阅读FISCO BCOS 3.x文档

新增

  • 实现Web3 Json RPC接口,用户可以使用Hardhat、OpenZeppelin 等现有Web3开发工具在FISCO BCOS上进行调试。相关PR: #4334, #4337, #4356#4365
  • 支持RLP交易类型的解析以及执行。相关PR:#4347#4350
  • 新增事件拉取接口,用户可以使用主动拉取的方式收取合约事件、区块变化等。相关PR:#4403#4412,[#4440]](#4440)
  • 新增系统配置项web3_chain_id,用于Web3工具识别链的ID,发送正确的交易。相关PR:#4392
  • 新增配置项[web3_rpc],用户可选择开启Web3 Json RPC服务,默认端口号为8545。

修复

  • 修复在Solidity合约中使用staticcall的opcode调用合约异常时返回错误的问题。相关PR:#4443
  • 修复在Solidity合约中receive函数没有被正确处理的问题。相关PR:#4443
  • 修复在Solidity合约中获取EOA的code时返回错误的问题。相关PR:#4505
  • 修复在调用Solidity合约view函数时,合约内取区块高、时间戳错误的问题。相关PR:#4505

兼容性说明

兼容版本

需要升级的链的“数据兼容版本号(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的最新版本

升级方法

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

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

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

[group0]: /apps>  getSystemConfigByKey compatibility_version
3.7.0

替换节点二进制

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

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

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

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

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

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

[group0]: /apps>  getSystemConfigByKey compatibility_version
3.9.0

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

组件兼容性

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

What's Changed

  • (rpc): add eth json rpc interfaces. by @kyonRay in #4318
  • (code): sync code from release 3.8.0 by @kyonRay in #4325
  • sync code from release-3.8.0 by @kyonRay in #4328
  • (rpc,init): add web3 rpc service, add init web3 rpc logic. by @kyonRay in #4324
  • (rpc): impl fake web3 json rpc interface. by @kyonRay in #4330
  • (rpc): refactor web3 json rpc to coroutine-lize. by @kyonRay in #4333
  • (rpc): impl web3 rpc handle request. by @kyonRay in #4334
  • (rpc): impl eth/web3/net namespace fields functions. by @kyonRay in #4337
  • <feat&fix>(codec,rpc): add base rlp codec, fix web3_sha3 bug. by @kyonRay in #4347
  • (rpc): impl web3 transaction encode and decode. by @kyonRay in #4350
  • (rpc): fix web3 transaction encode decode bug, add ut for eip2930, eip1559, eip4844. by @kyonRay in #4352
  • (rpc,txpool): impl sendRawTransaction interface. by @kyonRay in #4356
  • (rpc): impl eth_call eth_getTransactionReceipt, logs bloom calculate. by @kyonRay in #4365
  • <feat&fix>(rpc): add block response, fix metamask joint debug issues. by @kyonRay in #4370
  • (code): sync code from 3.8.0. by @kyonRay in #4381
  • (rpc,ledger): impl getStorageAt in rpc and ledger. by @kyonRay in #4380
  • <feat&fix>(rpc,precompiled,ledger): add web3_chain genesis config, add web3_chain_id system config, fix getStorageAt logic error. by @kyonRay in #4392
  • (rpc): add filter, log matcher and filter request. by @jdkuangxx in #4403
  • (rpc): implement ethereum filter related interfaces (newBlockFilter, newPendingTxFilter, newFilter, uninstallFilter, getFilterChanges, getFilterLogs, getLogs) by @jdkuangxx in #4412
  • (execute): bugfix_staticcall_noaddr_return & bugfix_support_transfer_receive_fallback by @JimmyShi22 in #4443
  • sync code from 3.8.0: bugfix_evm_exception_gas_used & bugfix_set_row_with_dirty_flag by @JimmyShi22 in #4445
  • (rpc): fix web3 rpc bug in integration testing with hardhat. by @kyonRay in #4444
  • (rpc): adapt Ethereum event related interfaces in jsonrpc and web3jsonrpc by @jdkuangxx in #4440
  • (code): sync code from 3.8.0. by @kyonRay in #4452
  • (code): sync code from 3.7.2 by @kyonRay in #4462
  • (rpc): remove the threadpool in FilterSystem by @jdkuangxx in #4451
  • (txpool): fix proposal nonce check failed when same transaction in txpool. by @kyonRay in #4448
  • (code): sync code from master. by @kyonRay in #4467
  • (code): sync code from 3.7.3 by @kyonRay in #4468
  • (feature,tools): fix feature 3.9.0 bugfix, update version to 3.9.0. by @kyonRay in #4472
  • (rpc): fix web3 rpc api bug, add supportConfig keys in groupInfo. by @kyonRay in #4474
  • (rpc,txpool): fix eth_chain, estimateGas, filter apis bug, fix txpool sync bug. by @kyonRay in #4479
  • (rpc): replace the type of filterId from uint64 to u256 by @jdkuangxx in #4482
  • sync code to fix ubuntu ci problem by @morebtcg in #4483
  • Fix bugfix_set_row_dirty_flag error by @morebtcg in #4487
  • (rpc): fix web3 rpc syncing response, transaction response. by @kyonRay in #4495
  • (rpc,hash): fix new transaction sync bug, fix EIP1559 signature bug. by @kyonRay in #4497
  • (executor,feature): add bugfix_eoa_match_failed to fix eoa code match logic error, memstore latest timestamp for call request. by @kyonRay in #4505
  • (filter): add null parameter validation for the newFilter interface by @jdkuangxx in #4502
  • (rpc): fix web3 transaction rpc response fields' bug. by @kyonRay in #4508
  • add log_level debug setup for build_chain.sh by @wenlinlee in #4511
  • (precompiled): fix web3_chain_id set config bug. by @kyonRay in #4513
  • Release v3.9.0 by @kyonRay in #4515

Full Changelog: v3.8.0...v3.9.0