Releases: hyperledger/besu-docs
23.1.1
23.1.1 Goerli Shanghai/Capella Release
This update is required for the Goerli Shanghai/Capella upgrade and recommended for all Mainnet users. If you use Besu on Goerli, update to 23.1.1. If you previously used 23.1.1-RC1, update to test 23.1.1 on Goerli.
Breaking Changes
Additions and Improvements
- Add support for Shanghai in Sepolia hyperledger/besu#5088
- Add implementation for engine_getPayloadBodiesByRangeV1 and engine_getPayloadBodiesByHashV1 hyperledger/besu#4980
- If a PoS block creation repetition takes less than a configurable duration, then waits before next repetition hyperledger/besu#5048
- Allow other users to read the /opt/besu dir when using docker hyperledger/besu#5092
- Invalid params - add some error detail #5066
- Added the option --kzg-trusted-setup to pass a custom setup file for custom networks or to override the default one for named networks #5084
- Gas accounting for EIP-4844 #4992
- Goerli configs for shapella #5151
Bug Fixes
- Fix engine_getPayloadV2 block value calculation hyperledger/besu#5040
- Moves check for init code length before balance check hyperledger/besu#5077
- Address concurrency problems with eth_call #5179
23.1.0
23.1.0
Besu 23.1.0 is a recommended update for Mainnet users. Thank you all for your patience as we crafted this quarterly release.
This is a rather large release with some breaking changes, so please be sure to read these notes carefully before you upgrade any Besu instances. We are including a move to Java 17 LTS. To build and run Besu, please make sure you have Java 17 on the host machine. Additionally, there are a host of spec compliance changes that change existing formats, so please check the specific RPC updates. Lastly, this release formalizes a deprecation notice for GoQuorum privacy modes and IBFT1.0 in Besu. These will be removed in the 23.4 series, unless otherwise stated.
From the improvements and fixes side, we have a host of execution performance improvements and fixes for defects with bonsai storage. We have also included an error detection and auto-heal capability for nodes that encounter state issues. This should keep nodes online and validating that may have previously required a resync.
One final note. 23.1.0 is not a Shanghai ready release. If you intend to test Besu on the long-lived testnets like Zhejiang, please follow the instructions here. We will have more to share on our official Shanghai releases soon.
Breaking Changes
- Change JsonRpc http service to return the error -32602 (Invalid params) with a 200 http status code
- Besu requires minimum Java 17 and up to build and run #3320
- PKCS11 with nss module (PKCS11 based HSM can be used in DevP2P TLS and QBFT PKI) does not work with RSA keys
in Java 17. SoftHSM is tested manually and working. (Other PKCS11 HSM are not tested). The relevant unit and acceptance
tests are updated to use EC private keys instead of RSA keys. - Change eth_feeHistory parameter
blockCount
to accept hexadecimal string (was accepting plain integer) #5047 - Default configurations for the deprecated Ropsten, Kiln, Shandong, and Astor networks have been removed from the CLI network list. These networks can currently be accessed but will require a user-provided genesis configuration. #4869
- GoQuorum-compatible privacy is deprecated and will be removed in 23.4
- IBFT 1.0 is deprecated and will be removed in 23.4
- Optimize SSTORE Operation execution time (memoize current and original value) #4836
Additions and Improvements
- Default rpc batch request to 1000 #5104
- Add a new CLI option to limit the number of requests in a single RPC batch request. #4965
- Support for new DATAHASH opcode as part of EIP-4844 #4823
- Send only hash announcement for blob transaction type #4940
- Add
excess_data_gas
field to block header #4958 - Add
max_fee_per_data_gas
field to transaction #4970 - Added option to evm CLI tool to allow code execution at specific forks #4913
- Improve get account performance by using the world state updater cache #4897
- Add new KZG precompile and option to override the trusted setup being used #4822
- Add implementation for eth_createAccessList RPC method #4942
- Updated reference tests to v11.3 #4996
- Add DebugGetRawBlock and DebugGetRawHeader RPC methods #5011
- Besu requires minimum Java 17 and up to build and run #3320
- Add worldstate auto-heal mechanism #5059
- Support for EIP-4895 - Withdrawals for Shanghai fork
- Improve SLOAD and SSTORE performance by caching empty slots #4874
- RPC methods that lookup block by hash will now return an error response if no block found #4582
- Added support for
safe
andfinalized
strings for the RPC methods using defaultBlock parameter #4902 - Added post-execution state logging option to EVM Tool #4709
- Add access list to Transaction Call Object #4802
- Add timestamp fork support, including shanghaiTime and cancunTime forks #4743
- Optimization: Memoize transaction size and hash at the same time #4812
- Add chain data pruning feature with three experimental CLI options:
--Xchain-pruning-enabled
,--Xchain-pruning-blocks-retained
and--Xchain-pruning-frequency
[#4686](https://github.com
/hyperledger/besu/pull/4686)- Note that chain pruning is hidden and disabled by default. Once you choose to enable chain pruning, a new column family will be added to the db and you cannot roll back to a previous versi
on of Besu.
- Note that chain pruning is hidden and disabled by default. Once you choose to enable chain pruning, a new column family will be added to the db and you cannot roll back to a previous versi
Bug Fixes
- Mitigation fix for stale bonsai code storage leading to log rolling issues on contract recreates #4906
- Ensure latest cached layered worldstate is subscribed to storage, fix problem with RPC calls using 'latest' #5076
- Fix for segmentation faults on worldstate truncation, snap-sync starts #4786
- Fix for worldstate mismatch on failed forkchoiceUpdate #4862
23.1.0-RC1
23.1.0-RC1
Breaking Changes
- Default configurations for the deprecated Ropsten, Kiln, Shandong, and Astor networks have been removed from the CLI network list. These networks can currently be accessed but will require a user-provided genesis configuration. #4869
Additions and Improvements
22.10.3
22.10.3
Breaking Changes
- Added
--rpc-max-logs-range
CLI option to allow limiting the number of blocks queried byeth_getLogs
RPC API. Default value: 1000 #4597 - The
graalvm
docker variant no longer meets the performance requirements for Ethereum Mainnet. Theopenjdk-11
andopenjdk-latest
variants are recommended in its place.
Additions and Improvements
- Implement Eth/68 sub-protocol #4715
- Increase the speed of modexp gas execution and execution. #4780
- Added experimental CLI options
--Xeth-capability-max
and--Xeth-capability-min
to specify a range of capabilities to be supported by the Eth protocol. #4752 - Set the default curve in the EVMTool, like is done in production operations #4790
Bug Fixes
- Fix storage key format for eth_getProof so that it follows the EIP-1474 spec #4564
22.10.1
22.10.1
Breaking Changes
- Fields
publicKey
andraw
removed from RPC APITransaction
result object #4575
Additions and Improvements
- Explain and improve price validation for London and local transactions during block proposal selection #4602
- Support for ephemeral testnet Shandong, for EOF testing. #4599
- Improve performance of block processing by parallelizing some parts during the "commit" step #4635
- Upgrade RocksDB version from 7.6.0 to 7.7.3
- Added new RPC endpoints
debug_setHead
& `debug_replayBlock 4580 - Upgrade OpenTelemetry to version 1.19.0 #3675
- Implement Eth/67 sub-protocol #4596
- Backward sync log UX improvements #4655
- Enable RocksDB Bloom filters to improve read performance #4682
- Backward sync: use retry switching peer when fetching data from peers #4656
- Shanghai implementation of EIP-3651 Warm coinbase #4620
- Shanghai implementation of EIP-3855 Push0 #4660
- Shanghai implementation of EIP-3540 and EIP-3670 Ethereum Object Format and Code Validation #4644
- Remove some log statements that are keeping some objects live in heap for a long time, to reduce the amount of memory required during initial sync #4705
- Add field
type
to Transaction receipt object (eth_getTransactionReceipt) #4505 - Print an overview of configuration and system information at startup #4451
- Do not send new payloads to backward sync if initial sync is in progress #4720
- Improve the way transaction fee cap validation is done on London fee market to not depend on transient network conditions #4598
- Preload and cache account and storage data from RocksDB to improve performance #4737
Bug Fixes
- Restore updating chain head and finalized block during backward sync #4718
22.10.0
22.10.0
Breaking Changes
- Flexible Privacy Groups (early access) support to Tessera's EC encryptor (contracts modified) #4282
- Before this change, the
bytes32
type was used for the enclave public keys, just supporting encryptors with public keys of that length (like the default NaCl) - For the EC encryptor, the encoded public key length is 91
- Before this change, the
--tx-pool-hashes-max-size
option removed (deprecated in 22.1.3)--Xmerge-support
option remove (deprecated in 22.4.2) #4518- Breaking API changes in the
OperationTracer
interface to enable performance work.- The
traceExecution
method has been replaced withtracePreExecution
andtracePostExecution
methods, called just before and just after operation execution. - See
DebugOperationTracer
andStandardJsonTracer
for migration examples.
- The
Additions and Improvements
- Updated jackson-databind library to version 2.13.4.2 addressing CVE-2022-42003
- Update snapsync feature to avoid restarting the download of the world state from scratch when restarting Besu #4381
- Added worldstate snapshot isolation to improve the stability of bonsai (
--Xbonsai-use-snapshots=true
) #4351 - Reduce the number of runtime exceptions (SecurityModuleException) and unnecessary executions during ECIES handshake, by trying to decrypt EIP-8 formatted messages first #4508.
- Improved RLP processing of zero-length string as 0x80 #4283 #4388
- Increased level of detail in JSON-RPC parameter error log messages #4510
- New unstable configuration options to set the maximum time, in milliseconds, a PoS block creation jobs is allowed to run #4519
- Tune EthScheduler thread pools to avoid recreating too many threads #4529
- RocksDB snapshot based worldstate and plugin-api addition of Snapshot interfaces #4409
- Continuously try to build better block proposals until timeout or GetPayload is called #4516
- Upgrade RocksDB database version from 6.29.5 to 7.6.0 #4517
- Avoid connecting to self when using static-nodes #4521
- EVM performance has increased 20%-100% depending on the particulars of the contract. #4540
- Improve calculateRootHash method performance during Block processing #4568
- Bring GraphQL into compliance with execution-api specs #4112
- Refactor unverified forkchoice event #4487
- Improve UX of initial sync logs, pushing not relevant logs to debug level #4486
- Optimize pivot block selector on PoS networks #4488
- Optimize Snap sync on PoS networks #4462
Bug Fixes
- Fixed default fromBlock value and improved parameter interpretation in eth_getLogs RPC handler #4513
- Fix for NoSuchElementException for missing invalid reason when rejecting a local sent transaction #4569
- Corrects treating a block as bad on internal error during either validation or processing #4512
- Corrects emission of blockadded events when rewinding during a re-org. Fix for #4495
- Always return a transaction type for pending transactions #4364
- Avoid a cyclic reference while printing EngineExchangeTransitionConfigurationParameter #4357
- Corrects treating a block as bad on internal error #4512
- In GraphQL update scalar parsing to be variable friendly #4522
- Initiate connection to maintained peers soon after startup. #4469
- Update apache-commons-text to 1.10.0 to address CVE-2022-42889 #4542
22.10.0-RC2
22.10.0-RC2
Breaking Changes
- Flexible Privacy Groups (early access) support to Tessera's EC encryptor (contracts modified) #4282
- Before this change, the
bytes32
type was used for the enclave public keys, just supporting encryptors with public keys of that length (like the default NaCl) - For the EC encryptor, the encoded public key length is 91
- Before this change, the
--tx-pool-hashes-max-size
option removed (deprecated in 22.1.3)--Xmerge-support
option remove (deprecated in 22.4.2) #4518- Breaking API changes in the
OperationTracer
interface to enable performance work.- The
traceExecution
method has been replaced withtracePreExecution
andtracePostExecution
methods, called just before and just after operation execution. - See
DebugOperationTracer
andStandardJsonTracer
for migration examples.
- The
Additions and Improvements
- Reduce the number of runtime exceptions (SecurityModuleException) and unnecessary executions during ECIES handshake, by trying to decrypt EIP-8 formatted messages first #4508.
- Improved RLP processing of zero-length string as 0x80 #4283 #4388
- Increased level of detail in JSON-RPC parameter error log messages #4510
- New unstable configuration options to set the maximum time, in milliseconds, a PoS block creation jobs is allowed to run #4519
- Tune EthScheduler thread pools to avoid recreating too many threads #4529
- RocksDB snapshot based worldstate and plugin-api addition of Snapshot interfaces #4409
- Continuously try to build better block proposals until timeout or GetPayload is called #4516
- Upgrade RocksDB database version from 6.29.5 to 7.6.0 #4517
- Avoid connecting to self when using static-nodes #4521
- EVM performance has increased 20%-100% depending on the particulars of the contract. #4540
Bug Fixes
- Corrects emission of blockadded events when rewinding during a re-org. Fix for #4495
- Always return a transaction type for pending transactions #4364
- Avoid a cyclic reference while printing EngineExchangeTransitionConfigurationParameter #4357
- Corrects treating a block as bad on internal error #4512
- In GraphQL update scalar parsing to be variable friendly #4522
- Initiate connection to maintained peers soon after startup. #4469
- Update apache-commons-text to 1.10.0 to address CVE-2022-42889 #4542
22.7.7
22.7.7
Additions and Improvements
- Tune EthScheduler thread pools to avoid recreating too many threads #4529
- Reduce the number of runtime exceptions (SecurityModuleException) and unnecessary executions during ECIES handshake, by trying to decrypt EIP-8 formatted messages first #4508.
- The block variable was keeping too much memory while waiting for future to finish #4489
Bug Fixes
- Corrects treating a block as bad on internal error #4512
- update appache-commons-text to 1.10.0 to address CVE-2022-42889 #4542
- In GraphQL update scalar parsing to be variable friendly #4522
22.10.0-RC1
22.10.0-RC1
Additions and Improvements
- Bring GraphQL into compliance with execution-api specs #4112
- Refactor unverified forkchoice event #4487
- Optimize pivot block selector on PoS networks #4488
- Improve UX of initial sync logs, pushing not relevant logs to debug level #4486
- Refactor unverified forkchoice event #4487
- Optimize pivot block selector on PoS networks #4488
- Optimize Snap sync on PoS networks #4462