- Remove these deprecated CLI options #9385
- Remove
--Xbonsai-parallel-tx-processing-enableddeprecated since 25.7.0. Use--bonsai-parallel-tx-processing-enabledinstead. - Remove
--Xsnapsync-server-enableddeprecated since 25.7.0. Use--snapsync-server-enabledinstead. - Remove
--Xsnapsync-synchronizer-pre-merge-headers-only-enableddeprecated since 25.7.0. Use--snapsync-synchronizer-pre-checkpoint-headers-only-enabledinstead. - Remove
--Xhistory-expiry-prunedeprecated since 25.7.0. Use--history-expiry-pruneinstead.
- Remove
- RPC changes to enhance compatibility with other ELs
- Use error code 3 for execution reverted #9365
- eth_createAccessList now returns success result if execution reverted #9358
- Return null result if block not found for
debug_accountAt,debug_setHead,eth_call,eth_getBlockReceipts,eth_getProof,eth_simulateV1,eth_getBalance,eth_getCode,eth_getStorageAt,eth_getTransactionCount#9303
- Remove PoW specific RPCs:
eth_getMinerDataByBlockHash,eth_getMinerDataByBlockNumber,miner_setCoinbase,miner_setEtherbase#9481,eth_coinbase#9487 - Remove PoW CLI options:
--miner-enabled,--miner-coinbase#9486
- ETC Classic and Mordor network support in Besu is deprecated #9437
- Holesky network is deprecated #9437
- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- ETC (Ethereum Classic) network support
- Proof of Work consensus (PoW)
- Clique Block Production (mining) - you will still be able to sync existing Clique networks, but not be a validator or create new Clique networks.
- Fast Sync
- Update to vertx 4.5.22 #9375
- Add
opcodesoptional parameter to RPC methods:debug_standardTraceBlockToFile,debug_standardTraceBadBlockToFile,debug_traceBlockByNumber,debug_traceBlockByHash,debug_traceTransaction,debug_traceBlock,debug_traceCallfor tracing specified opcodes #9335 - Use Eclipse Temurin OpenJDK JRE in Besu docker image #9392
- Performance: 5-6x faster toFastHex calculation for engine_getBlobsV2 #9426
- Performance: Optimise
engine_getPayload*methods andengine_getBlobsV2#9445 - Add Linea named networks for mainnet and sepolia on Linea network #9436
- Fix loss of colored output in terminal when using
--color-enabled=trueoption #8908
- Deprecated CLI options
--Xbonsai-parallel-tx-processing-enabledis deprecated since 25.7.0. Use--bonsai-parallel-tx-processing-enabledinstead.--Xsnapsync-server-enabledis deprecated since 25.7.0. Use--snapsync-server-enabledinstead.--Xsnapsync-synchronizer-pre-merge-headers-only-enabledis deprecated since 25.7.0. Use--snapsync-synchronizer-pre-checkpoint-headers-only-enabledinstead.--Xhistory-expiry-pruneis deprecated since 25.7.0. Use--history-expiry-pruneinstead.
- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Proof of Work consensus (PoW)
- Fast Sync
- Add Osaka, BPO1 and BPO2 fork times for mainnet #9380
- Add blockTimestamp to receipt logs for
eth_getBlockReceiptsandeth_getTransactionReceiptresults #9294 - Upgrade to execution-spec-tests v5.3.0 #9301
- Update to netty 4.2.7.Final #9330
- Ability to enable/disable stack, storage and returnData tracing data in debug_traceStandardBlockToFile and debug_traceStandardBadBlockToFile endpoints #9183
- Increase mainnet gas limit to 60M #9339
- Update to tuweni 2.7.2 #9338
This is a recommended update for Hoodi users for the Fusaka hardfork.
- Deprecated CLI options
--Xbonsai-parallel-tx-processing-enabledis deprecated since 25.7.0. Use--bonsai-parallel-tx-processing-enabledinstead.--Xsnapsync-server-enabledis deprecated since 25.7.0. Use--snapsync-server-enabledinstead.--Xsnapsync-synchronizer-pre-merge-headers-only-enabledis deprecated since 25.7.0. Use--snapsync-synchronizer-pre-checkpoint-headers-only-enabledinstead.--Xhistory-expiry-pruneis deprecated since 25.7.0. Use--history-expiry-pruneinstead.
- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Proof of Work consensus (PoW)
- Fast Sync
- Add blockTimestamp to
eth_getLogsresult #9278 - Add
--ethstats-report-intervalCLI option to control ethstats reporting frequency instead of using hardcoded 5-second interval #9271 - Add
isCancelledmethod toTransactionEvaluationContext. That way selectors could check if the block creation has been cancelled or in timeout #9285 - Performance improvements for MOD related opcodes #9188 thanks to @thomas-quadratic
This RC is a pre-release, recommended update for Holesky and Sepolia users for the Fusaka hardfork. This updates a dependency used for PeerDAS. This RC is still pending burn in for mainnet.
- Deprecated CLI options
--Xbonsai-parallel-tx-processing-enabledis deprecated since 25.7.0. Use--bonsai-parallel-tx-processing-enabledinstead.--Xsnapsync-server-enabledis deprecated since 25.7.0. Use--snapsync-server-enabledinstead.--Xsnapsync-synchronizer-pre-merge-headers-only-enabledis deprecated since 25.7.0. Use--snapsync-synchronizer-pre-checkpoint-headers-only-enabledinstead.--Xhistory-expiry-pruneis deprecated since 25.7.0. Use--history-expiry-pruneinstead.
- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Proof of Work consensus (PoW)
- Fast Sync
This RC is a pre-release for Holesky and Sepolia users. Only upgrade to this release if you're experiencing the eth_subscribe or ethstats known issue from 25.9.0.
- Deprecated CLI options
--Xbonsai-parallel-tx-processing-enabledis deprecated since 25.7.0. Use--bonsai-parallel-tx-processing-enabledinstead.--Xsnapsync-server-enabledis deprecated since 25.7.0. Use--snapsync-server-enabledinstead.--Xsnapsync-synchronizer-pre-merge-headers-only-enabledis deprecated since 25.7.0. Use--snapsync-synchronizer-pre-checkpoint-headers-only-enabledinstead.--Xhistory-expiry-pruneis deprecated since 25.7.0. Use--history-expiry-pruneinstead.
- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Proof of Work consensus (PoW)
- Fast Sync
- Update spring security framework (toml parsing) #9153
- Update grpc and guava #9150
- Implement optional sender balance checks in the layered txpool #9176
- Add
--cache-last-block-headersflag to cache the last n block headers persisted to the blockchain #9223 - Manage unexpected exceptions during block creation #9208
- Upgrade to execution-spec-tests v5.1.0 #9226
- Add
--cache-last-block-headers-preload-enabledflag to enable preloading the block headers cache during startup time #9248 - Upgrade to execution-spec-tests v5.2.0 #9226, #9242
- Fix eth_subscribe RPC failing returning a block response #9212
- Fix ethstats integration failing to provide block updates to ethstats server #9220
- Remove deprecated option
--bonsai-maximum-back-layers-to-load(deprecated since 23.4.0). Use--bonsai-historical-block-limitinstead
Affects users of eth_subscribe (WebSocket) eg SSV, and ethstats integration
- symptom:
io.vertx.core.json.EncodeException: Failed to encode as JSON: Java 8 optional type - fixes and more info #9212 and #9220
- if you experience this issue, you can downgrade to the previous released version of Besu, or build off main if that is an option for your environment.
- Deprecated CLI options
--Xbonsai-parallel-tx-processing-enabledis deprecated since 25.7.0. Use--bonsai-parallel-tx-processing-enabledinstead.--Xsnapsync-server-enabledis deprecated since 25.7.0. Use--snapsync-server-enabledinstead.--Xsnapsync-synchronizer-pre-merge-headers-only-enabledis deprecated since 25.7.0. Use--snapsync-synchronizer-pre-checkpoint-headers-only-enabledinstead.--Xhistory-expiry-pruneis deprecated since 25.7.0. Use--history-expiry-pruneinstead.
- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Proof of Work consensus (PoW)
- Fast Sync
- Update log4j #9131
- Update netty #9156
- Expose new method to query hardfork by block number Plugin API #9115
- Support loading multiple transaction selector plugins #8743
- Configurable limit for how much time plugins are allowed to take, to propose transactions, during block creation #9184
- Add Osaka, BPO1 and BPO2 fork times for holesky, hoodi and sepolia #9196
- Ability to export ERA1 files #9081
- Add jmh benchmarks for some compute-related opcodes #9069
- Improve EcRecover precompile performance #9053
- Change in behavior for
eth_estimateGasto improve accuracy when used on a network with a base fee market.- if there are no gas pricing parameters specified in the request, then gas price for the transaction is set to the base fee value #8888
- however, if you specify gas price of 0, the estimation will fail if the baseFee is > 0
- Remove PoAMetricsService and IbftQueryService which have been deprecated since 2019 and are replaced by PoaQueryService and BftQueryService respectively #8940
- Remove deprecated
Quantity.getValuemethod (deprecated since 2019) #8968 - Support for block creation on networks running a pre-Byzantium fork is removed, after being deprecated for a few months. If still running a pre-Byzantium network, it needs to be updated to continue to produce blocks #9005
- Remove support for Ethereum protocol version
eth/67. #9008. - Abort startup if boolean command line options are specified more than once #8898
- Ubuntu 20.04 is no longer supported. You need at least 22.04 (required for native libraries).
- Improve performance of OperandStack resizes for deep stacks (> 100 elements). Impacts general EVM performance while working with deep stacks #8869
- Deprecated CLI options
--Xbonsai-parallel-tx-processing-enabledis deprecated since 25.7.0. Use--bonsai-parallel-tx-processing-enabledinstead.--Xsnapsync-server-enabledis deprecated since 25.7.0. Use--snapsync-server-enabledinstead.--Xsnapsync-synchronizer-pre-merge-headers-only-enabledis deprecated since 25.7.0. Use--snapsync-synchronizer-pre-checkpoint-headers-only-enabledinstead.--Xhistory-expiry-pruneis deprecated since 25.7.0. Use--history-expiry-pruneinstead.
- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Proof of Work consensus (PoW)
- Fast Sync
- Improve transaction simulation and gas estimation when no gas pricing is present #8888
- Add option to trace reference tests during execution #8878
- Expose methods to query hardfork by block header or for the next block in the Plugin API #8909
- Add
WorldStateServiceto the plugin API #9024 - Wait for peers before starting Backward Sync #9003
- LUKSO Mainnet Pectra Hardfork #9070
- More informative logs during block creation #9020
- Faster block creation, reducing the time spent committing world state changes #9023
- Generate distribution dependencies catalog #8987
- Update commons dependencies #9114
- resolves CVE-2025-48924
- resolves CVE-2020-15250
- Update Netty #9112
- resolves CVE-2025-55163
- Improve the sync performance by not RLP decoding bodies during sync. This means we are using less memory and CPU, allowing us to increase the parallelism of the download pipeline, which has been increased from 4 to 8. Can be reduced again with
--Xsynchronizer-downloader-parallelism=4#8959 - Enable decoding for large RPC requests #8877
- Add
--attempt-cache-bustto evmtool benchmark subcommand #8985 - Add gas usage metric to eth_call #9019
- Improve P256Verify precompile performance #9035
- Fix bug with
eth_estimateGason QBFT - use zero address when doing simulation againstpendingblock #9031
- Changes in Maven coordinates of Besu artifacts to avoid possible collisions with other libraries when packaging plugins. See Appendix A for a mapping. #8589 #8746
BesuContextis removed, since deprecated in favor ofServiceManagersince24.12.0- Remove the deprecated
--Xbonsai-trie-logs-pruning-window-size, use--bonsai-trie-logs-pruning-window-sizeinstead. #8823 - Remove the deprecated
--Xbonsai-limit-trie-logs-enabled, use--bonsai-limit-trie-logs-enabledinstead. #8704 - Remove the deprecated
--Xbonsai-trie-log-pruning-enabled, use--bonsai-limit-trie-logs-enabledinstead. #8704 - Remove the deprecated
--Xsnapsync-bft-enabled. SNAP sync is now supported for BFT networks. #8861 - Remove methods from gas calculator deprecated since 24.4
create2OperationGasCost,callOperationGasCost,createOperationGasCost, andcost#8817 - Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Introduce history expiry behaviour for mainnet 8875
- SNAP sync will now download only headers for pre-checkpoint (pre-merge) blocks
--snapsync-synchronizer-pre-checkpoint-headers-only-enabledcan be set to false to force SNAP sync to download pre-checkpoint (pre-merge) blocks--history-expiry-prunecan be used to enable online pruning of pre-checkpoint (pre-merge) blocks as well as modifying database garbage collection parameters to free up disk space from the pruned blocks
--Xbonsai-parallel-tx-processing-enabledis deprecated, use--bonsai-parallel-tx-processing-enabledinstead.--Xsnapsync-server-enabledis deprecated, use--snapsync-server-enabledinstead #8512- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Proof of Work consensus (PoW)
- Fast Sync
- Support for block creation on networks running a pre-Byzantium fork is deprecated for removal in a future release, after that to update Besu on nodes that build blocks, your network needs to be upgraded at least to the Byzantium fork. The main reason is to simplify world state management during block creation, since before Byzantium for each selected transaction, the receipt must contain the root hash of the modified world state, and this does not play well with the new plugin features and future work on parallelism.
--Xsnapsync-synchronizer-pre-merge-headers-only-enabledis deprecated and will be removed in a future release. Use--snapsync-synchronizer-pre-checkpoint-headers-only-enabledinstead.--Xhistory-expiry-pruneis deprecated and will be removed in a future release. Use--history-expiry-pruneinstead.
- Introduce the
TransactionValidatorServiceto allow plugins to add custom validation rules #8793 - Implement rewardPercentile cap in eth_feeHistory #8748
- Expose a method to get blob gas price from plugins #8843
- Experimental Bonsai Archive support #7475
- Use eth/69 by default #8858
--snapsync-server-enabledNew option to enable serving snap sync data #8512- Introduce history expiry behaviour #8875
- SNAP sync will now download only headers for pre-checkpoint (pre-merge) blocks
--snapsync-synchronizer-pre-checkpoint-headers-only-enabledcan be set to false to force SNAP sync to download pre-checkpoint (pre-merge) blocks--history-expiry-prunecan be used to enable online pruning of pre-checkpoint (pre-merge) blocks as well as modifying database garbage collection parameters to free up disk space from the pruned blocks
- Increase mainnet gas limit to 45M #8824
- Enable parallel tx processing by default if Bonsai is used #8668
- Remove redundant serialization of json params #8847
- Improve ExtCodeHash performance #8811
- Improve ModExp precompile performance #8868
- EIP-7825 - Transaction gas limit cap #8700
- EIP-7823 - Modexp upper bounds #8632
- EIP-7892 - Max number of blobs per transaction #8761
- EIP-7934 - RLP Execution Block Size Limit #8765
- EIP-7951 - Precompile for secp256r1 Curve Support #8750
| Old Module Name | New Module Name |
|---|---|
| org.hyperledger.besu.internal:dsl | org.hyperledger.besu.internal:besu-acceptance-tests-dsl |
| org.hyperledger.besu.internal:besu | org.hyperledger.besu.internal:besu-app |
| org.hyperledger.besu.internal:config | org.hyperledger.besu.internal:besu-config |
| org.hyperledger.besu.internal:clique | org.hyperledger.besu.internal:besu-consensus-clique |
| org.hyperledger.besu.internal:common | org.hyperledger.besu.internal:besu-consensus-common |
| org.hyperledger.besu.internal:ibft | org.hyperledger.besu.internal:besu-consensus-ibft |
| org.hyperledger.besu.internal:ibftlegacy | org.hyperledger.besu.internal:besu-consensus-ibftlegacy |
| org.hyperledger.besu.internal:merge | org.hyperledger.besu.internal:besu-consensus-merge |
| org.hyperledger.besu.internal:qbft | org.hyperledger.besu.internal:besu-consensus-qbft |
| org.hyperledger.besu.internal:qbft-core | org.hyperledger.besu.internal:besu-consensus-qbft-core |
| org.hyperledger.besu.internal:algorithms | org.hyperledger.besu.internal:besu-crypto-algorithms |
| org.hyperledger.besu.internal:services | org.hyperledger.besu.internal:besu-crypto-services |
| org.hyperledger.besu:besu-datatypes | org.hyperledger.besu:besu-datatypes |
| org.hyperledger.besu.internal:api | org.hyperledger.besu.internal:besu-ethereum-api |
| org.hyperledger.besu.internal:blockcreation | org.hyperledger.besu.internal:besu-ethereum-blockcreation |
| org.hyperledger.besu.internal:core | org.hyperledger.besu.internal:besu-ethereum-core |
| org.hyperledger.besu.internal:eth | org.hyperledger.besu.internal:besu-ethereum-eth |
| org.hyperledger.besu.internal:p2p | org.hyperledger.besu.internal:besu-ethereum-p2p |
| org.hyperledger.besu.internal:permissioning | org.hyperledger.besu.internal:besu-ethereum-permissioning |
| org.hyperledger.besu.internal:referencetests | org.hyperledger.besu.internal:besu-ethereum-referencetests |
| org.hyperledger.besu.internal:rlp | org.hyperledger.besu.internal:besu-ethereum-rlp |
| org.hyperledger.besu.internal:trie | org.hyperledger.besu.internal:besu-ethereum-trie |
| org.hyperledger.besu:evm | org.hyperledger.besu:besu-evm |
| org.hyperledger.besu.internal:metrics-core | org.hyperledger.besu.internal:besu-metrics-core |
| org.hyperledger.besu:plugin-api | org.hyperledger.besu:besu-plugin-api |
| org.hyperledger.besu.internal:testutil | org.hyperledger.besu.internal:besu-testutil |
| org.hyperledger.besu.internal:util | org.hyperledger.besu.internal:besu-util |
| org.hyperledger.besu.internal:nat | org.hyperledger.besu.internal:besu-nat |
| org.hyperledger.besu.internal:tasks | org.hyperledger.besu.internal:besu-services-tasks |
| org.hyperledger.besu.internal:pipeline | org.hyperledger.besu.internal:besu-services-pipeline |
| org.hyperledger.besu.internal:kvstore | org.hyperledger.besu.internal:besu-services-kvstore |
- Sunset features - for more context on the reasoning behind the removal of these features, including alternative options, read this blog post
- Remove
MetricSystem::createLabelledGaugedeprecated since24.12.0, replace it withMetricSystem::createLabelledSuppliedGauge#8299 - Remove the deprecated
--tx-pool-disable-localsoption, use--tx-pool-no-local-priorityinstead. #8614 - Remove the deprecated
--Xsnapsync-synchronizer-flat-db-healing-enabled, use--Xbonsai-full-flat-db-enabledinstead. #8415 - Change in behavior, the non-standard
strictparameter of theeth_estimateGasmethod changed its default fromfalsetotrue, for more accurate estimations. It is still possible to force the previous behavior, explicitly passing thestrictparameter in the request, set tofalse#8629
--Xbonsai-limit-trie-logs-enabledis deprecated, use--bonsai-limit-trie-logs-enabledinstead.--Xbonsai-trie-log-pruning-enabledis deprecated, use--bonsai-limit-trie-logs-enabledinstead.--Xbonsai-trie-logs-pruning-window-sizeis deprecated, use--bonsai-trie-logs-pruning-window-sizeinstead.--Xsnapsync-bft-enabledis deprecated and will be removed in a future release. SNAP sync is supported for BFT networks.- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Proof of Work consensus (PoW)
- Fast Sync
- Support for block creation on networks running a pre-Byzantium fork is deprecated for removal in a future release, after that to update Besu on nodes that build blocks, your network needs to be upgraded at least to the Byzantium fork. The main reason is to simplify world state management during block creation, since before Byzantium for each selected transaction, the receipt must contain the root hash of the modified world state, and this does not play well with the new plugin features and future work on parallelism.
- Add eth/69 protocol for optional use by using the
--Xeth-capability-max=69flag (currently defaults to 68) #8519 - BlobDB GC early access config options:
- Increase default target-gas-limit to 60M for Ephemery #8622
- Increase default target-gas-limit to 60M for Hoodi #8705
- Gas estimation
eth_estimateGas: - Update ref test to 4.5.0 #8643
- EVM skip unnecessary state access for CALL/LOG #8639
- EIP-5920 - PAY opcode #8498
- EIP-7892 - Blob Parameter Only (BPO) forks #8671
- EIP-7883 - MODEXP gas cost increase #8707
- Update discovery library to 25.4.0 #8635
- Upgrade Gradle to 8.14 and related plugins #8638
- Make gas estimation strict by default #8629
- Fix
besu -Xunstable options help #8662 - Prevent parsing of invalid ENR records from crashing DNSDaemon #8368
- ENR records with Base64 padding at the end are not parsed correctly #8697
- Changes to gas estimation algorithm for
eth_estimateGasandeth_createAccessList#8478 - if you require the previous behavior, specify--estimate-gas-tolerance-ratio=0.0 - Transaction indexing is now disabled by default during the initial sync for snap sync and checkpoint sync. This will break RPCs that use transaction hash for historical queries. #8611. If you need to enable transaction for the initial sync, use
--snapsync-synchronizer-transaction-indexing-enabled
MetricSystem::createLabelledGaugeis deprecated and will be removed in a future release, replace it withMetricSystem::createLabelledSuppliedGauge--Xsnapsync-synchronizer-flat-db-healing-enabledis deprecated, use--Xbonsai-full-flat-db-enabledinstead.--Xbonsai-limit-trie-logs-enabledis deprecated, use--bonsai-limit-trie-logs-enabledinstead.--Xbonsai-trie-log-pruning-enabledis deprecated, use--bonsai-limit-trie-logs-enabledinstead.--Xbonsai-trie-logs-pruning-window-sizeis deprecated, use--bonsai-trie-logs-pruning-window-sizeinstead.--Xsnapsync-bft-enabledis deprecated and will be removed in a future release. SNAP sync is supported for BFT networks.- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Tessera privacy
- Proof of Work consensus
- Fast Sync
- Transaction indexing will be disabled by default in a future release for snap sync and checkpoint sync modes. This will break RPCs that use transaction hash for historical queries.
- Support for block creation on networks running a pre-Byzantium fork is deprecated for removal in a future release, after that in order to update Besu on nodes that build blocks, your network needs to be upgraded at least to the Byzantium fork. The main reason is to simplify world state management during block creation, since before Byzantium for each selected transaction, the receipt must contain the root hash of the modified world state, and this does not play well with the new plugin features and future work on parallelism.
- Sepolia checkpoint block has been updated to the merge block #8584
- Add experimental
--profile=PERFORMANCEfor high spec nodes: increases rocksdb cache and enables parallel transaction processing #8560 - Add
--profile=PERFORMANCE_RPCfor high spec RPC nodes: increases rocksdb cache and caches last 2048 blocks #8560 - Refine gas estimation algorithm for
eth_estimateGasandeth_createAccessList#8478 including a new option to specify--estimate-gas-tolerance-ratio - Increase default target-gas-limit to 60M for Holesky and Sepolia #8594
- Add support for Pyroscope to Docker image #8510
- update jc-kzg-4844 dependency from 2.0.0 to 2.1.1
- Fix block import tracing, refactor BlockProcessor interface #8549
- Shorten and standardize log labels in AbstractEngineNewPayload and AbstractEngineForkchoiceUpdated #8568
--compatibility-eth64-forkid-enabledhas been removed. #8541
MetricSystem::createLabelledGaugeis deprecated and will be removed in a future release, replace it withMetricSystem::createLabelledSuppliedGauge--Xsnapsync-synchronizer-flat-db-healing-enabledis deprecated, use--Xbonsai-full-flat-db-enabledinstead.--Xbonsai-limit-trie-logs-enabledis deprecated, use--bonsai-limit-trie-logs-enabledinstead.--Xbonsai-trie-log-pruning-enabledis deprecated, use--bonsai-limit-trie-logs-enabledinstead.--Xbonsai-trie-logs-pruning-window-sizeis deprecated, use--bonsai-trie-logs-pruning-window-sizeinstead.--Xsnapsync-bft-enabledis deprecated and will be removed in a future release. SNAP sync is supported for BFT networks.--tx-pool-disable-localshas been deprecated, use--tx-pool-no-local-priority, instead.- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Tessera privacy
- Smart-contract-based (onchain) permissioning
- Proof of Work consensus
- Fast Sync
- Transaction indexing will be disabled by default in a future release for snap sync and checkpoint sync modes. This will break RPCs that use transaction hash for historical queries.
- Support for block creation on networks running a pre-Byzantium fork is deprecated for removal in a future release, after that in order to update Besu on nodes that build blocks, your network needs to be upgraded at least to the Byzantium fork. The main reason is to simplify world state management during block creation, since before Byzantium for each selected transaction, the receipt must contain the root hash of the modified world state, and this does not play well with the new plugin features and future work on parallelism.
- Add support for
eth_simulateV1. #8406 - New metric
besu_peers_peer_count_by_clientto report the count of peers by client name #8515- Add Prague fork time for mainnet. #8521 - Add Prague fork time for mainnet. #8521
- Default ExtraData to "besu+version" rather than empty. #8536
- Add block import tracer plugin provider, used during block import #8524
- Tune and make configurable the PeerTransactionTracker #8537
- Fix for storage proof key - if the key is zero use
0x0not0x#8499 - Fix ephemery genesis since genesisHash changed #8539
MetricSystem::createLabelledGaugeis deprecated and will be removed in a future release, replace it withMetricSystem::createLabelledSuppliedGauge--Xsnapsync-synchronizer-flat-db-healing-enabledis deprecated, use--Xbonsai-full-flat-db-enabledinstead.--Xbonsai-limit-trie-logs-enabledis deprecated, use--bonsai-limit-trie-logs-enabledinstead.--Xbonsai-trie-log-pruning-enabledis deprecated, use--bonsai-limit-trie-logs-enabledinstead.--Xbonsai-trie-logs-pruning-window-sizeis deprecated, use--bonsai-trie-logs-pruning-window-sizeinstead.--Xsnapsync-bft-enabledis deprecated and will be removed in a future release. SNAP sync is supported for BFT networks.--tx-pool-disable-localshas been deprecated, use--tx-pool-no-local-priority, instead.- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Tessera privacy
- Smart-contract-based (onchain) permissioning
- Proof of Work consensus
- Fast Sync
- Transaction indexing will be disabled by default in a future release for snap sync and checkpoint sync modes. This will break RPCs that use transaction hash for historical queries.
- Support for block creation on networks running a pre-Byzantium fork is deprecated for removal in a future release, after that in order to update Besu on nodes that build blocks, your network needs to be upgraded at least to the Byzantium fork. The main reason is to simplify world state management during block creation, since before Byzantium for each selected transaction, the receipt must contain the root hash of the modified world state, and this does not play well with the new plugin features and future work on parallelism.
--compatibility-eth64-forkid-enabledhas been deprecated and will be removed in the next release. #8492
- Add Hoodi discovery DNS #8446
- Decode deposit log data without Web3j #8394
- Tune layered txpool default configuration for upcoming gas limit and blob count increases #8487
- Removed support for Ethereum protocol versions
eth/62,eth/63,eth/64, andeth/65. #8492
- Replace tuweni libs with https://github.com/Consensys/tuweni #8330, #8461
- Performance: Consensys/tuweni 2.7.0 reduces boxing/unboxing overhead on some EVM opcodes, like PushX and Caller #8330, #8461
- Fix QBFT and IBFT transitions that change the mining beneficiary #8387
eth_getLogs- empty topic is a wildcard match #8420- Upgrade spring-security-crypto to address CVE-2025-22228 #8448
- Fix restoring txpool from disk when blob transactions are present #8481
- Fix for bonsai db inconsistency on abnormal shutdown #8500
- Fix to add stateroot mismatches to bad block manager #8207
NOTE: This release breaks native Windows compatibility for mainnet ethereum configurations. As the prague(pectra) hardfork require BLS12-381 precompiles and besu does not currently have a pure java implementation of bls12-381, only platforms which have support in besu-native can run mainnet ethereum configurations. Windows support via WSL should still continue to work.
- k8s (KUBERNETES) Nat method is removed. Use docker or none instead. #8289
- Change
Invalid block, unable to parse RLPRPC error message toInvalid block param (block not found)#8328 - Mainnet ethereum now REQUIRES native crypto libraries, so only linux and macos(darwin) are supported mainnet configurations #8418
MetricSystem::createLabelledGaugeis deprecated and will be removed in a future release, replace it withMetricSystem::createLabelledSuppliedGauge--Xsnapsync-synchronizer-flat-db-healing-enabledis deprecated, use--Xbonsai-full-flat-db-enabledinstead.--Xbonsai-limit-trie-logs-enabledis deprecated, use--bonsai-limit-trie-logs-enabledinstead.--Xbonsai-trie-log-pruning-enabledis deprecated, use--bonsai-limit-trie-logs-enabledinstead.--Xbonsai-trie-logs-pruning-window-sizeis deprecated, use--bonsai-trie-logs-pruning-window-sizeinstead.--Xsnapsync-bft-enabledis deprecated and will be removed in a future release. SNAP sync is supported for BFT networks.--tx-pool-disable-localshas been deprecated, use--tx-pool-no-local-priority, instead.- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Tessera privacy
- Smart-contract-based (onchain) permissioning
- Proof of Work consensus
- Fast Sync
- Transaction indexing will be disabled by default in a future release for snap sync and checkpoint sync modes. This will break RPCs that use transaction hash for historical queries.
- Support for block creation on networks running a pre-Byzantium fork is deprecated for removal in a future release, after that in order to update Besu on nodes that build blocks, your network needs to be upgraded at least to the Byzantium fork. The main reason is to simplify world state management during block creation, since before Byzantium for each selected transaction, the receipt must contain the root hash of the modified world state, and this does not play well with the new plugin features and future work on parallelism.
- Increase mainnet and Sepolia gas limit to 36M #8249
- Update Holesky and Sepolia deposit contract addresses #8346
- Allow plugins to propose transactions during block creation #8268
- Add support for transaction permissioning rules in Plugin API #8365
- Improve conflict detection by considering slots to reduce false positives #7923
- Upgrade Netty to version 4.1.118 to fix CVE-2025-24970 #8275
- Update the jc-kzg-4844 dependency from 1.0.0 to 2.0.0, which is now available on Maven Central #7849
- Other dependency updates #8293 #8315 #8350
- Update to gradle 8.11 #8294 and update usage of some deprecated features #8295 #8340
- Update gradle plugins #8296 #8333 #8334
- Add TLS/mTLS options and configure the GraphQL HTTP service#7910
- Update
eth_getLogsto return aBlock not founderror when the requested block is not found. #8290 - Change
Invalid block, unable to parse RLPRPC error message toInvalid block param (block not found)#8328 - Add IBFT1 to QBFT migration capability #8262
- Support pending transaction score when saving and restoring txpool #8363
- Upgrade to execution-spec-tests v4.1.0 including better EIP-2537 coverage for BLS #8402
- Add era1 format to blocks import subcommand #7935
- Add Hoodi as new named testnet #8428
- Add missing RPC method
debug_accountRangetoRpcMethod.javaso this method can be used with--rpc-http-api-method-no-auth#8153 - Add a fallback pivot strategy when the safe block does not change for a long time, to make possible to complete the initial sync in case the chain is not finalizing #8395
- Fix issue with new QBFT/IBFT blocks being produced under certain circumstances. #8308
- Bonsai - check if storage is present before saving world state #8434
- Pectra - Sepolia: Fix for deposit contract log decoding #8383
- Pectra - update Holesky and Sepolia deposit contract addresses #8346
rpc-gas-capdefault value has changed from 0 (unlimited) to 50M. If you requirerpc-gas-capgreater than 50M, you'll need to set that explicitly. #8251
MetricSystem::createLabelledGaugeis deprecated and will be removed in a future release, replace it withMetricSystem::createLabelledSuppliedGauge- k8s (KUBERNETES) Nat method is now deprecated and will be removed in a future release. Use docker or none instead.
--Xsnapsync-synchronizer-flat-db-healing-enabledis deprecated, use--Xbonsai-full-flat-db-enabledinstead.--Xbonsai-limit-trie-logs-enabledis deprecated, use--bonsai-limit-trie-logs-enabledinstead.--Xbonsai-trie-log-pruning-enabledis deprecated, use--bonsai-limit-trie-logs-enabledinstead.--Xbonsai-trie-logs-pruning-window-sizeis deprecated, use--bonsai-trie-logs-pruning-window-sizeinstead.- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Tessera privacy
- Smart-contract-based (onchain) permissioning
- Proof of Work consensus
- Fast Sync
- Support for block creation on networks running a pre-Byzantium fork is deprecated for removal in a future release, after that in order to update Besu on nodes that build blocks, your network needs to be upgraded at least to the Byzantium fork. The main reason is to simplify world state management during block creation, since before Byzantium for each selected transaction, the receipt must contain the root hash of the modified world state, and this does not play well with the new plugin features and future work on parallelism.
- Add a tx selector to skip txs from the same sender after the first not selected #8216
rpc-gas-capdefault value has changed from 0 (unlimited) to 50M #8251
- Add timestamps to enable Prague hardfork on Sepolia and Holesky test networks #8163
- Update system call addresses to match devnet-6 values #8209
- Extend simulate transaction on pending block plugin API #8174
- Fix the simulation of txs with a future nonce #8215
- Bump to besu-native 1.1.2 for ubuntu 20.04 native support#8264
--host-whitelisthas been deprecated since 2020 and this option is removed. Use the equivalent--host-allowlistinstead.- Change tracer API to include the mining beneficiary in BlockAwareOperationTracer::traceStartBlock #8096
- Change the input defaults on debug_trace* calls to not trace memory by default ("disableMemory": true, "disableStack": false, "disableStorage": false)
- Change the output format of debug_trace* and trace_* calls to match Geth behaviour
MetricSystem::createLabelledGaugeis deprecated and will be removed in a future release, replace it withMetricSystem::createLabelledSuppliedGauge- k8s (KUBERNETES) Nat method is now deprecated and will be removed in a future release. Use docker or none instead.
--Xsnapsync-synchronizer-flat-db-healing-enabledis deprecated, use--Xbonsai-full-flat-db-enabledinstead.--Xbonsai-limit-trie-logs-enabledis deprecated, use--bonsai-limit-trie-logs-enabledinstead.--Xbonsai-trie-log-pruning-enabledis deprecated, use--bonsai-limit-trie-logs-enabledinstead.--Xbonsai-trie-logs-pruning-window-sizeis deprecated, use--bonsai-trie-logs-pruning-window-sizeinstead.- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Tessera privacy
- Smart-contract-based (onchain) permissioning
- Proof of Work consensus
- Fast Sync
- Plugins
BesuConfigurationmethodsgetRpcHttpHostandgetRpcHttpPort(which return Optionals) have been deprecated in favour ofgetConfiguredRpcHttpHostandgetConfiguredRpcHttpPortwhich return the actual values, which will always be populated since these options have defaults. #8127
- Add RPC HTTP options to specify custom truststore and its password #7978
- Retrieve all transaction receipts for a block in one request #6646
- Implement EIP-7840: Add blob schedule to config files #8042
- Allow gasPrice (legacy) and 1559 gasPrice params to be specified simultaneously for
eth_call,eth_createAccessList, andeth_estimateGas#8059 - Improve debug_traceBlock calls performance and reduce output size #8103
- Add support for EIP-7702 transaction in the txpool #8018 #7984
- Add support for
movePrecompileToAddressinStateOverrides(eth_call)8115 - Default target-gas-limit to 36M for holesky #8125
- Add EIP-7623 - Increase calldata cost #8093
- Add nonce to transaction call object #8139
- Fix serialization of state overrides when
movePrecompileToAddressis present #8024 - Revise the approach for setting level_compaction_dynamic_level_bytes RocksDB configuration option #8037
- Fix possible incomplete txpool restore from dump file #7991
This is an optional hotfix to address serialization of state overrides parameter when movePrecompileToAddress is present.
There is no need to upgrade from 24.12.0 (or 24.12.1) to this release if you are not yet using this functionality.
- Fix serialization of state overrides when
movePrecompileToAddressis present #8024
This is a hotfix to address publishing besu maven artifacts. There are no issues with 24.12.0 other than incomplete artifact publishing, and there is no functional difference between 24.12.0 and 24.12.1 release binaries.
- Fix BOM pom publication to Artifactory #8021
- Removed Retesteth rpc service and commands #7833
- TLS for P2P (early access feature) has been removed #7942
- In the plugin API,
BesuContexthas been renamed toServiceManagerto better reflect its function, plugins must be updated to work with this version - With the upgrade of the Prometheus Java Metrics library, there are the following changes:
-
Gauge names are not allowed to end with
total, therefore the metricbesu_blockchain_difficulty_totalis losing the_totalsuffix -
The
_createdtimestamps are not returned by default, you can set the env varBESU_OPTS="-Dio.prometheus.exporter.includeCreatedTimestamps=true"to enable them -
Some JVM metrics have changed name to adhere to the OTEL standard (see the table below), Besu Full Grafana dashboard is updated to support both names
Old Name New Name jvm_memory_bytes_committed jvm_memory_committed_bytes jvm_memory_bytes_init jvm_memory_init_bytes jvm_memory_bytes_max jvm_memory_max_bytes jvm_memory_bytes_used jvm_memory_used_bytes jvm_memory_pool_bytes_committed jvm_memory_pool_committed_bytes jvm_memory_pool_bytes_init jvm_memory_pool_init_bytes jvm_memory_pool_bytes_max jvm_memory_pool_max_bytes jvm_memory_pool_bytes_used jvm_memory_pool_used_bytes
-
- Plugin API will be deprecating the BesuContext interface to be replaced with the ServiceManager interface.
MetricSystem::createLabelledGaugeis deprecated and will be removed in a future release, replace it withMetricSystem::createLabelledSuppliedGauge- k8s (KUBERNETES) Nat method is now deprecated and will be removed in a future release
--host-whitelisthas been deprecated in favor of--host-allowlistsince 2020 and will be removed in a future release- Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
- Tessera privacy
- Smart-contract-based (onchain) permissioning
- Proof of Work consensus
- Fast Sync
- Fine tune already seen txs tracker when a tx is removed from the pool #7755
- Support for enabling and configuring TLS/mTLS in WebSocket service. #7854
- Create and publish Besu BOM (Bill of Materials) #7615
- Update Java dependencies #7786
- Add a method to get all the transaction in the pool, to the
TransactionPoolService, to easily access the transaction pool content from plugins #7813 - Upgrade RocksDB JNI library from version 8.3.2 to 9.7.3 #7817
- Add a method to check if a metric category is enabled to the plugin API #7832
- Add a new metric collector for counters which get their value from suppliers #7894
- Add account and state overrides to
eth_call#7801 andeth_estimateGas#7890 - Add RPC WS options to specify password file for keystore and truststore #7970
- Prometheus Java Metrics library upgraded to version 1.3.3 #7880
- Add histogram to Prometheus metrics system #7944
- Improve newPayload and FCU logs #7961
- Proper support for
pendingblock tag when callingeth_estimateGasandeth_createAccessList#7951
- Fix registering new metric categories from plugins #7825
- Fix CVE-2024-47535 7878
- Fix QBFT prepared block based proposal validation #7875
- Correct default parameters for frontier transactions in
eth_callandeth_estimateGas#7965 - Correctly parse nonce as hex in
eth_callaccount overrides #7999
- Besu will now fail to start if any plugins encounter errors during initialization. To allow Besu to continue running despite plugin errors, use the
--plugin-continue-on-erroroption. #7662
- k8s (KUBERNETES) Nat method is now deprecated and will be removed in a future release
--host-whitelisthas been deprecated in favor of--host-allowlistsince 2020 and will be removed in a future release
- Remove privacy test classes support #7569
- Add Blob Transaction Metrics #7622
- Implemented support for emptyBlockPeriodSeconds in QBFT #6965
- LUKSO Cancun Hardfork #7686
- Add configuration of Consolidation Request Contract Address via genesis configuration #7647
- Interrupt pending transaction processing on block creation timeout #7673
- Align gas cap calculation for transaction simulation to Geth approach #7703
- Expose chainId in the
BlockchainService7702 - Add support for
chainIdinCallParameters#7720 - Add
--ephemerynetwork support for Ephemery Testnet #7563 thanks to @gconnect - Add configuration of Consolidation Request Contract Address via genesis configuration #7647
- Fix mounted data path directory permissions for besu user #7575
- Fix for
debug_traceCallto handle transactions without specified gas price. #7510 - Corrects a regression where custom plugin services are not initialized correctly. #7625
- Fix for IBFT2 chains using the BONSAI DB format #7631
- Fix reading
tx-pool-min-scoreoption from configuration file #7623 - Fix an unhandled PeerTable exception #7733
- Fix RocksDBException: Busy leading to MerkleTrieException: Unable to load trie node value #7745
- If a BFT validator node is syncing, pause block production until sync has completed #7657
- Fix eth_feeHistory rewards when bounded by configuration #7750
- Receipt compaction is enabled by default. It will no longer be possible to downgrade Besu to versions prior to 24.5.1.
- Add 'inbound' field to admin_peers JSON-RPC Call #7461
- Add pending block header to
TransactionEvaluationContextplugin API #7483 - Add bootnode to holesky config #7500
- Implement engine_getClientVersionV1 #7512
- Performance optimzation for ECMUL (1 of 2) #7509
- Performance optimzation for ECMUL (2 of 2) #7543
- Include current chain head block when computing
eth_maxPriorityFeePerGas#7485 - Remove (old) documentation updates from the changelog #7562
- Update Java and Gradle dependencies #7571
- Layered txpool: new options
--tx-pool-min-scoreto remove a tx from pool when its score is lower than the specified value #7576 - Add
engine_getBlobsV1method to the Engine API #7553
- Fix tracing in precompiled contracts when halting for out of gas #7318
- Correctly release txpool save and restore lock in case of exceptions #7473
- Fix for
eth_gasPricecould not retrieve block error #7482 - Correctly drops messages that exceeds local message size limit #5455
- DebugMetrics: Fixed a
ClassCastExceptionoccurring inDebugMetricswhen handling nested metric structures. Previously,Doublevalues within these structures were incorrectly cast toMapobjects, leading to errors. This update allows for proper handling of both direct values and nested structures at the same level. Issue# #7383 evmtoolwas not respecting the--genesissetting, resulting in unexpected trace results. #7433- The genesis config override
contractSizeLimitwas not wired into code size limits #7557 - Fix incorrect key filtering in LayeredKeyValueStorage stream #7535
- Layered txpool: do not send notifications when moving tx between layers #7539
- Layered txpool: fix for unsent drop notifications on remove #7538
- Honor block number or tag parameter in eth_estimateGas and eth_createAccessList #7502
- Fixed NPE during DefaultBlockchain object initialization #7601
This release version has been deprecated release due to CI bug
- Receipt compaction will be enabled by default in a future version of Besu. After this change it will not be possible to downgrade to the previous Besu version.
- --Xbonsai-limit-trie-logs-enabled is deprecated, use --bonsai-limit-trie-logs-enabled instead
- --Xbonsai-trie-logs-pruning-window-size is deprecated, use --bonsai-trie-logs-pruning-window-size instead
besu storage x-trie-logsubcommand is deprecated, usebesu storage trie-loginstead- Allow configuration of Withdrawal Request Contract Address via genesis configuration #7356
- Remove long-deprecated
perm*whitelist*methods #7401
- Allow optional loading of
jemalloc(if installed) by setting the environment variableBESU_USING_JEMALLOCto true/false. It that env is not set at all it will behave as if it is set totrue - Expose set finalized/safe block in plugin api BlockchainService. These method can be used by plugins to set finalized/safe block for a PoA network (such as QBFT, IBFT and Clique).#7382
- In process RPC service #7395
- Added support for tracing private transactions using
priv_traceTransactionAPI. #6161 - Wrap WorldUpdater into EVMWorldupdater #7434
- Bump besu-native to 0.9.4 #7456=
- Correct entrypoint in Docker evmtool #7430
- Fix protocol schedule check for devnets #7429
- Fix behaviour when starting in a pre-merge network #7431
- Fix Null pointer from DNS daemon #7505
https://github.com/hyperledger/besu/releases/tag/24.8.0 https://github.com/hyperledger/besu/releases/download/24.8.0/besu-24.8.0.tar.gz / sha256 9671157a623fb94005357bc409d1697a0d62bb6fd434b1733441bb301a9534a4 https://github.com/hyperledger/besu/releases/download/24.8.0/besu-24.8.0.zip / sha256 9ee217d2188e8da89002c3f42e4f85f89aab782e9512bd03520296f0a4dcdd90
- Remove deprecated sync modes (X_SNAP and X_CHECKPOINT). Use SNAP and CHECKPOINT instead #7309
- Remove PKI-backed QBFT (deprecated in 24.5.1) Other forms of QBFT remain unchanged. #7293
- Do not maintain connections to PoA bootnodes #7358. See #7314 for recommended alternative behaviour.
- Receipt compaction will be enabled by default in a future version of Besu. After this change it will not be possible to downgrade to the previous Besu version.
- --Xbonsai-limit-trie-logs-enabled is deprecated, use --bonsai-limit-trie-logs-enabled instead
- --Xbonsai-trie-logs-pruning-window-size is deprecated, use --bonsai-trie-logs-pruning-window-size instead
besu storage x-trie-logsubcommand is deprecated, usebesu storage trie-loginstead
--Xsnapsync-bft-enabledoption enables experimental support for snap sync with IBFT/QBFT permissioned Bonsai-DB chains #7140- Add support to load external profiles using
--profile#7265 privacy-nonce-always-incrementsoption enables private transactions to always increment the nonce, even if the transaction is invalid #6593- Added
block-testsubcommand to the evmtool which runs blockchain reference tests #7293 - removed PKI backed QBFT #7310
- Implement gnark-crypto for eip-2537 #7316
- Improve blob size transaction selector #7312
- Added EIP-7702 #7237
- Implement gnark-crypto for eip-196 #7262
- Add trie log pruner metrics #7352
- Force bonsai-limit-trie-logs-enabled=false when sync-mode=FULL instead of startup error #7357
--Xbonsai-parallel-tx-processing-enabledoption enables executing transactions in parallel during block processing for Bonsai nodes- Reduce default trie log pruning window size from 30,000 to 5,000 #7365
- Add option
--poa-discovery-retry-bootnodesfor PoA networks to always use bootnodes during peer refresh, not just on first start #7314
- Fix
eth_calldeserialization to correctly ignore unknown fields in the transaction object. #7323 - Prevent Besu from starting up with sync-mode=FULL and bonsai-limit-trie-logs-enabled=true for private networks #7357
- Add 30 second timeout to trie log pruner preload #7365
- Avoid executing pruner preload during trie log subcommands #7366
https://github.com/hyperledger/besu/releases/tag/24.7.1 https://github.com/hyperledger/besu/releases/download/24.7.1/besu-24.7.1.tar.gz / sha256 59ac352a86fd887225737a5fe4dad1742347edd3c3fbed98b079177e4ea8d544 https://github.com/hyperledger/besu/releases/download/24.7.1/besu-24.7.1.zip / sha256 e616f8100f026a71a146a33847b40257c279b38085b17bb991df045cccb6f832
- Receipt compaction will be enabled by default in a future version of Besu. After this change it will not be possible to downgrade to the previous Besu version.
- PKI-backed QBFT will be removed in a future version of Besu. Other forms of QBFT will remain unchanged.
- --Xbonsai-limit-trie-logs-enabled is deprecated, use --bonsai-limit-trie-logs-enabled instead
- --Xbonsai-trie-logs-pruning-window-size is deprecated, use --bonsai-trie-logs-pruning-window-size instead
besu storage x-trie-logsubcommand is deprecated, usebesu storage trie-loginstead
Xp2p-peer-lower-boundhas been removed. #7247
- Support for eth_maxPriorityFeePerGas #5658
- Improve genesis state performance at startup #6977
- Enable continuous profiling with default setting #7006
- A full and up to date implementation of EOF for Prague #7169
- Add Subnet-Based Peer Permissions. #7168
- Reduce lock contention on transaction pool when building a block #7180
- Update Docker base image to Ubuntu 24.04 #7251
- Add LUKSO as predefined network name #7223
- Refactored how code, initcode, and max stack size are configured in forks. #7245
- Nodes in a permissioned chain maintain (and retry) connections to bootnodes #7257
- Promote experimental
besu storage x-trie-logsubcommand to production-ready #7278 - Enhanced BFT round-change diagnostics #7271
- Validation errors ignored in accounts-allowlist and empty list #7138
- Fix "Invalid block detected" for BFT chains using Bonsai DB #7204
- Fix "Could not confirm best peer had pivot block" #7109
- Fix "Chain Download Halt" #6884
https://github.com/hyperledger/besu/releases/tag/24.7.0 https://github.com/hyperledger/besu/releases/download/24.7.0/besu-24.7.0.tar.gz / sha256 96cf47defd1d8c10bfc22634e53e3d640eaa81ef58cb0808e5f4265998979530 https://github.com/hyperledger/besu/releases/download/24.7.0/besu-24.7.0.zip / sha256 7e92e2eb469be197af8c8ca7ac494e7a2e7ee91cbdb02d99ff87fb5209e0c2a0
- Java 21 has been enforced as minimum version to build and run Besu.
- With --Xbonsai-limit-trie-logs-enabled by default in this release, historic trie log data will be removed from the database unless sync-mode=FULL. It respects the --bonsai-historical-block-limit setting so shouldn't break any RPCs, but may be breaking if you are accessing this data from the database directly. Can be disabled with --bonsai-limit-trie-logs-enabled=false
- In profile=ENTERPRISE, use sync-mode=FULL (instead of FAST) and data-storage-format=FOREST (instead of BONSAI) #7186
- If this breaks your node, you can reset sync-mode=FAST and data-storage-format=BONSAI
- Receipt compaction will be enabled by default in a future version of Besu. After this change it will not be possible to downgrade to the previous Besu version.
- PKI-backed QBFT will be removed in a future version of Besu. Other forms of QBFT will remain unchanged.
- --Xbonsai-limit-trie-logs-enabled is deprecated, use --bonsai-limit-trie-logs-enabled instead
- --Xbonsai-trie-logs-pruning-window-size is deprecated, use --bonsai-trie-logs-pruning-window-size instead
- Add two counters to DefaultBlockchain in order to be able to calculate TPS and Mgas/s #7105
- Enable --Xbonsai-limit-trie-logs-enabled by default, unless sync-mode=FULL #7181
- Promote experimental --Xbonsai-limit-trie-logs-enabled to production-ready, --bonsai-limit-trie-logs-enabled #7192
- Promote experimental --Xbonsai-trie-logs-pruning-window-size to production-ready, --bonsai-trie-logs-pruning-window-size #7192
admin_nodeInfoJSON/RPC call returns the currently active EVM version #7127- Improve the selection of the most profitable built block #7174
- Make
eth_gasPriceaware of the base fee market #7102
https://github.com/hyperledger/besu/releases/tag/24.6.0 https://github.com/hyperledger/besu/releases/download/24.6.0/besu-24.6.0.tar.gz / sha256 fa86e5c6873718cd568e3326151ce06957a5e7546b52df79a831ea9e39b857ab https://github.com/hyperledger/besu/releases/download/24.6.0/besu-24.6.0.zip / sha256 8b2d3a674cd7ead68b9ca68fea21e46d5ec9b278bbadc73f8c13c6a1e1bc0e4d
- Version 24.5.x will be the last series to support Java 17. Next release after versions 24.5.x will require Java 21 to build and run.
- Receipt compaction will be enabled by default in a future version of Besu. After this change it will not be possible to downgrade to the previous Besu version.
- PKI-backed QBFT will be removed in a future version of Besu. Other forms of QBFT will remain unchanged.
- Remove deprecated Goerli testnet #7049
- Default bonsai to use full-flat db and code-storage-by-code-hash #6984
- New RPC methods miner_setExtraData and miner_getExtraData #7078
- Disconnect peers that have multiple discovery ports since they give us bad neighbours #7089
- Port Tuweni dns-discovery into Besu. #7129
- [Frequency: occasional < 10%] Chain download halt. Only affects new syncs (new nodes syncing from scratch). Symptom: Block import halts, despite having a full set of peers and world state downloading finishing. Generally restarting besu will resolve the issue. We are tracking this in #6884
- Fix parsing
gasLimitparameter when its value is >Long.MAX_VALUE#7116 - Skip validation of withdrawals when importing BFT blocks since withdrawals don't apply to BFT chains #7115
- Make
vabdyParitymatch in type 1 and 2 transactions in JSON-RPC and GraphQL #7139
https://github.com/hyperledger/besu/releases/tag/24.5.2 https://github.com/hyperledger/besu/releases/download/24.5.2/besu-24.5.2.tar.gz / sha256 4049bf48022ae073065b46e27088399dfb22035e9134ed4ac2c86dd8c5b5fbe9 https://github.com/hyperledger/besu/releases/download/24.5.2/besu-24.5.2.zip / sha256 23966b501a69e320e8f8f46a3d103ccca45b53f8fee35a6543bd9a260b5784ee
- RocksDB database metadata format has changed to be more expressive, the migration of an existing metadata file to the new format is automatic at startup. Before performing a downgrade to a previous version it is mandatory to revert to the original format using the subcommand
besu --data-path=/path/to/besu/datadir storage revert-metadata v2-to-v1. - BFT networks won't start with SNAP or CHECKPOINT sync (previously Besu would start with this config but quietly fail to sync, so it's now more obvious that it won't work) #6625, #6667
- Forest pruning has been removed, it was deprecated since 24.1.0. In case you are still using it you must now remove any of the following options:
pruning-enabled,pruning-blocks-retainedandpruning-block-confirmations, from your configuration, and you may want to consider switching to Bonsai. - Deprecated Goerli testnet has been removed.
- Version 24.5.x will be the last series to support Java 17. Next release after versions 24.5.x will require Java 21 to build and run.
- Receipt compaction will be enabled by default in a future version of Besu. After this change it will not be possible to downgrade to the previous Besu version.
- PKI-backed QBFT will be removed in a future version of Besu. Other forms of QBFT will remain unchanged.
- [Frequency: occasional < 10%] Chain download halt. Only affects new syncs (new nodes syncing from scratch). Symptom: Block import halts, despite having a full set of peers and world state downloading finishing. Generally restarting besu will resolve the issue. We are tracking this in #6884
- [Frequency: occasional < 10%] Low peer numbers. More likely to occur on testnets (holesky and sepolia) but also can occur on mainnet. Symptom: peer count stays at 0 for an hour or more. Generally restarting besu will resolve the issue. We are tracking this in #6805
- Update "host allow list" logic to transition from deprecated
host()method to suggestedauthority()method.#6878 txpool_besuPendingTransactionschange parameternumResultsto optional parameter #6708- Extend
Blockchainservice #6592 - Add bft-style
blockperiodsecondstransitions to Clique #6596 - Add
createemptyblockstransitions to Clique #6608 - RocksDB database metadata refactoring #6555
- Make layered txpool aware of
minGasPriceandminPriorityFeePerGasdynamic options #6611 - Update commons-compress to 1.26.0 #6648
- Update Vert.x to 4.5.4 #6666
- Refactor and extend
TransactionPoolValidatorService#6636 - Introduce
TransactionSimulationService#6686 - Transaction call object to accept both
inputanddatafield simultaneously if they are set to equal values #6702 eth_callfor blob tx allows for emptymaxFeePerBlobGas#6731- Extend error handling of plugin RPC methods #6759
- Added engine_newPayloadV4 and engine_getPayloadV4 methods #6783
- Reduce storage size of receipts #6602
- Dedicated log marker for invalid txs removed from the txpool #6826
- Prevent startup with BONSAI and privacy enabled #6809
- Remove deprecated Forest pruning #6810
- Experimental Snap Sync Server #6640
- Upgrade Reference Tests to 13.2 #6854
- Update Web3j dependencies #6811
- Add
tx-pool-blob-price-bumpoption to configure the price bump percentage required to replace blob transactions (by default 100%) #6874 - Log detailed timing of block creation steps #6880
- Expose transaction count by type metrics for the layered txpool #6903
- Expose bad block events via the BesuEvents plugin API #6848
- Add RPC errors metric #6919
- Add
rlp decodesubcommand to decode IBFT/QBFT extraData to validator list #6895 - Allow users to specify which plugins are registered #6700
- Layered txpool tuning for blob transactions #6940
- Fix txpool dump/restore race condition #6665
- Make block transaction selection max time aware of PoA transitions #6676
- Don't enable the BFT mining coordinator when running sub commands such as
blocks export#6675 - In JSON-RPC return optional
vfields for type 1 and type 2 transactions #6762 - Fix Shanghai/QBFT block import bug when syncing new nodes #6765
- Fix to avoid broadcasting full blob txs, instead of only the tx announcement, to a subset of nodes #6835
- Snap client fixes discovered during snap server testing #6847
- Correctly initialize the txpool as disabled on creation #6890
- Fix worldstate download halt when using snap sync during initial sync #6981
- Fix chain halt due to peers only partially responding with headers. And worldstate halts caused by a halt in the chain sync #7027
https://github.com/hyperledger/besu/releases/tag/24.5.1 https://github.com/hyperledger/besu/releases/download/24.5.1/besu-24.5.1.tar.gz / sha256 77e39b21dbd4186136193fc6e832ddc1225eb5078a5ac980fb754b33ad35d554 https://github.com/hyperledger/besu/releases/download/24.5.1/besu-24.5.1.zip / sha256 13d75b6b22e1303f39fd3eaddf736b24ca150b2bafa7b98fce7c7782e54b213f
- SNAP - Snap sync is now the default for named networks #6530
- if you want to use the previous default behavior, you'll need to specify
--sync-mode=FAST
- if you want to use the previous default behavior, you'll need to specify
- BONSAI - Default data storage format is now Bonsai #6536
- if you had previously used the default (FOREST), at startup you will get an error indicating the mismatch
Mismatch: DB at '/your-path' is FOREST (Version 1) but config expects BONSAI (Version 2). Please check your config. - to fix this mismatch, specify the format explicitly using
--data-storage-format=FOREST
- if you had previously used the default (FOREST), at startup you will get an error indicating the mismatch
- Following the OpenMetrics convention, the updated Prometheus client adds the
_totalsuffix to every metrics of type counter, with the effect that some existing metrics have been renamed to have this suffix. If you are using the official Besu Grafana dashboard (available here), just update it to the latest revision, that accepts the old and the new name of the affected metrics. If you have a custom dashboard or use the metrics in other ways, then you need to manually update it to support the new naming. - The
trace-filtermethod in JSON-RPC API now has a default block range limit of 1000, adjustable with--rpc-max-trace-filter-range(thanks @alyokaz) #6446 - Requesting the Ethereum Node Record (ENR) to acquire the fork id from bonded peers is now enabled by default, so the following change has been made #5628:
--Xfilter-on-enr-fork-idhas been removed. To disable the feature use--filter-on-enr-fork-id=false.--engine-jwt-enabledhas been removed. Use--engine-jwt-disabledinstead. #6491- Release docker images now provided at ghcr.io instead of dockerhub
- X_SNAP and X_CHECKPOINT are marked for deprecation and will be removed in 24.6.0 in favor of SNAP and CHECKPOINT #6405
--Xp2p-peer-lower-boundis deprecated. #6501
--Xbonsai-limit-trie-logs-enabledwill be removed. You will need to use--bonsai-limit-trie-logs-enabledinstead. Additionally, this limit will change to be enabled by default.- If you do not want the limit enabled (eg you have
--bonsai-historical-block-limitset < 512), you need to explicitly disable it using--bonsai-limit-trie-logs-enabled=falseor increase the limit. #6561
- If you do not want the limit enabled (eg you have
- Upgrade Prometheus and Opentelemetry dependencies #6422
- Add
OperationTracer.tracePrepareTransaction, where the sender account has not yet been altered#6453 - Improve the high spec flag by limiting it to a few column families #6354
- Log blob count when importing a block via Engine API #6466
- Introduce
--Xbonsai-limit-trie-logs-enabledexperimental feature which by default will only retain the latest 512 trie logs, saving about 3GB per week in database growth #5390 - Introduce
besu storage x-trie-log pruneexperimental offline subcommand which will prune all redundant trie logs except the latest 512 #6303 - Improve flat trace generation performance #6472
- SNAP and CHECKPOINT sync - early access flag removed so now simply SNAP and CHECKPOINT #6405
- X_SNAP and X_CHECKPOINT are marked for deprecation and will be removed in 24.4.0
- Github Actions based build.
- Introduce caching mechanism to optimize Keccak hash calculations for account storage slots during block processing #6452
- Added configuration options for
pragueTimeto genesis file for Prague fork development #6473 - Moving trielog storage to RocksDB's blobdb to improve write amplications #6289
- Support for
shanghaiTimefork and Shanghai EVM smart contracts in QBFT/IBFT chains #6353 - Change ExecutionHaltReason for contract creation collision case to return ILLEGAL_STATE_CHANGE #6518
- Experimental feature
--Xbonsai-code-using-code-hash-enabledfor storing Bonsai code storage by code hash #6505 - More accurate column size
storage rocksdb usagesubcommand #6540 - Adds
storage rocksdb x-statssubcommand #6540 - New
eth_blobBaseFeeJSON-RPC method #6581 - Add blob transaction support to
eth_call#6661 - Add blobs to
eth_feeHistory#6679 - Upgrade reference tests to version 13.1 #6574
- Extend
BesuConfigurationservice #6584 - Add
ethereum_min_gas_priceandethereum_min_priority_feemetrics to track runtime values ofmin-gas-priceandmin-priority-fee#6587 - Option to perform version incompatibility checks when starting Besu. In this first release of the feature, if
--version-compatibility-protectionis set to true it checks that the version of Besu being started is the same or higher than the previous version. 6307 - Moved account frame warming from GasCalculator into the Call operations #6557
- Fix the way an advertised host configured with
--p2p-hostis treated when communicating with the originator of a PING packet #6225 - Fix
poa-block-txs-selection-max-timeoption that was inadvertently reset to its default after being configured #6444 - Fix for tx incorrectly discarded when there is a timeout during block creation #6563
- Fix traces so that call gas costing in traces matches other clients traces #6525
https://github.com/hyperledger/besu/releases/tag/24.3.0 https://github.com/hyperledger/besu/releases/download/24.3.0/besu-24.3.0.tar.gz / sha256 8037ce51bb5bb396d29717a812ea7ff577b0d6aa341d67d1e5b77cbc55b15f84 https://github.com/hyperledger/besu/releases/download/24.3.0/besu-24.3.0.zip / sha256 41ea2ca734a3b377f43ee178166b5b809827084789378dbbe4e5b52bbd8e0674
- Fix ETC Spiral upgrade breach of consensus #6524
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/24.1.2/besu-24.1.2.zip / sha256 9033f300edd81c770d3aff27a29f59dd4b6142a113936886a8f170718e412971 https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/24.1.2/besu-24.1.2.tar.gz / sha256 082db8cf4fb67527aa0dd757e5d254b3b497f5027c23287f9c0a74a6a743bf08
- New
EXECUTION_HALTEDerror returned if there is an error executing or simulating a transaction, with the reason for execution being halted. Replaces the genericINTERNAL_ERRORreturn code in certain cases which some applications may be checking for #6343 - The Besu Docker images with
openjdk-latesttags since 23.10.3 were incorrectly using UID 1001 instead of 1000 for the container'sbesuuser. The user now uses 1000 again. Containers created from or migrated to images using UID 1001 will need to chown their persistent database files to UID 1000 (thanks @h4l) #6360 - The deprecated
--privacy-onchain-groups-enabledoption has now been removed. Use the--privacy-flexible-groups-enabledoption instead. #6411 - The time that can be spent selecting transactions during block creation is not capped at 5 seconds for PoS and PoW networks, and for PoA networks, at 75% of the block period specified in the genesis. This is to prevent possible DoS attacks in case a single transaction is taking too long to execute, and to have a stable block production rate. This could be a breaking change if an existing network needs to accept transactions that take more time to execute than the newly introduced limit. If it is mandatory for these networks to keep processing these long processing transaction, then the default value of
block-txs-selection-max-timeorpoa-block-txs-selection-max-timeneeds to be tuned accordingly. #6423
- Optimize RocksDB WAL files, allows for faster restart and a more linear disk space utilization #6328
- Disable transaction handling when the node is not in sync, to avoid unnecessary transaction validation work #6302
- Introduce TransactionEvaluationContext to pass data between transaction selectors and plugin, during block creation #6381
- Upgrade dependencies #6377
- Upgrade
com.fasterxml.jacksondependencies #6378 - Upgrade Guava dependency #6396
- Upgrade Mockito #6397
- Upgrade
tech.pegasys.discovery:discovery#6414 - Options to tune the max allowed time that can be spent selecting transactions during block creation are now stable #6423
- Support for "pending" in
qbft_getValidatorsByBlockNumber#6436
- INTERNAL_ERROR from
eth_estimateGasJSON/RPC calls #6344 - Fix Besu Docker images with
openjdk-latesttags since 23.10.3 using UID 1001 instead of 1000 for thebesuuser #6360 - Fluent EVM API definition for Tangerine Whistle had incorrect code size validation configured #6382
- Correct mining beneficiary for Clique networks in TraceServiceImpl #6390
- Fix to gas limit delta calculations used in block production. Besu should now increment or decrement the block gas limit towards its target correctly (thanks @arbora) #6425
- Ensure Backward Sync waits for initial sync before starting a session #6455
- Silence the noisy DNS query errors #6458
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/24.1.1/besu-24.1.1.zip / sha256 e23c5b790180756964a70dcdd575ee2ed2c2efa79af00bce956d23bd2f7dc67c https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/24.1.1/besu-24.1.1.tar.gz / sha256 4b0ddd5a25be2df5d2324bff935785eb63e4e3a5f421614ea690bacb5b9cb344
Note, due to a CI race with the release job, the initial published version of 24.1.1 were overwritten by artifacts generated from the same sources, but differ in their embedded timestamps. The initial SHAs are noted here but are deprecated:
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/24.1.1/besu-24.1.1.zip / sha256 b6b64f939e0bb4937ce90fc647e0a7073ce3e359c10352b502059955070a60c6
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/24.1.1/besu-24.1.1.tar.gz / sha256 cfcae04c30769bf338b0740ac65870f9346d3469931bb46cdba3b2f65d311e7a
- Forest pruning (
pruning-enabledoption) is deprecated and will be removed soon. To save disk space consider switching to Bonsai data storage format #6230
- Add error messages on authentication failures with username and password #6212
- New
Sequencedtransaction pool. The pool is an evolution of thelegacypool and is likely to be more suitable to enterprise or permissioned chains than thelayeredtransaction pool. Select to use this pool with--tx-pool=sequenced. Supports the same options as thelegacypool #6274 - Set Ethereum Classic mainnet activation block for Spiral network upgrade #6267
- Add custom genesis file name to config overview if specified #6297
- Update Gradle plugins and replace unmaintained License Gradle Plugin with the actively maintained Gradle License Report #6275
- Optimize RocksDB WAL files, allows for faster restart and a more linear disk space utilization #6328
- Add a cache on senders by transaction hash #6375
- Hotfix for selfdestruct preimages on bonsai [#6359]((hyperledger#6359)
- Fix trielog shipping issue during self destruct [#6340]((hyperledger#6340)
- mitigation for trielog failure [#6315]((hyperledger#6315)
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/24.1.0/besu-24.1.0.zip / sha256 d36c8aeef70f0a516d4c26d3bc696c3e2a671e515c9e6e9475a31fe759e39f64 https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/24.1.0/besu-24.1.0.tar.gz / sha256 602b04c0729a7b17361d1f0b39f4ce6a2ebe47932165add666560fe594d9ca99