FISCO-BCOS v3.9.0
Pre-release
Pre-release
获取更多信息,请阅读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