Releases: hyperledger/besu
25.5.0
25.5.0
Breaking Changes
- Changes to gas estimation algorithm for
eth_estimateGas
andeth_createAccessList
#8478 - if you require the previous behavior, specify--estimate-gas-tolerance-ratio=0.0
Upcoming Breaking Changes
MetricSystem::createLabelledGauge
is deprecated and will be removed in a future release, replace it withMetricSystem::createLabelledSuppliedGauge
--Xsnapsync-synchronizer-flat-db-healing-enabled
is deprecated, use--Xbonsai-full-flat-db-enabled
instead.--Xbonsai-limit-trie-logs-enabled
is deprecated, use--bonsai-limit-trie-logs-enabled
instead.--Xbonsai-trie-log-pruning-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.--Xsnapsync-bft-enabled
is 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
- 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.
Additions and Improvements
- Sepolia checkpoint block has been updated to the merge block #8584
- Add experimental
--profile=PERFORMANCE
for high spec nodes: increases rocksdb cache and enables parallel transaction processing #8560 - Add
--profile=PERFORMANCE_RPC
for high spec RPC nodes: increases rocksdb cache and caches last 2048 blocks #8560 - Refine gas estimation algorithm for
eth_estimateGas
andeth_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
Dependencies
- update jc-kzg-4844 dependency from 2.0.0 to 2.1.1
Bug fixes
- Fix block import tracing, refactor BlockProcessor interface #8549
- Shorten and standardise log labels in AbstractEngineNewPayload and AbstractEngineForkchoiceUpdated #8568
4a834cdfb6a3b1be50a50122b1b1391c979c305bbe0831b29223c24900c6603f besu-25.5.0.zip
5afdb8004e5badcd142198e50f98bcdb629a22d21bbad2330316cd242d43d750 besu-25.5.0.tar.gz
25.4.1
Important
This is the Pectra Mainnet-ready release.
This is a mandatory update, you must update your Mainnet node before the activation of Pectra scheduled for epoch 364032 on 07 May 2025 at 10:05:11 AM UTC.
Please note the upcoming breaking changes.
Known issues
- The configuration overview printed in the log contains the long version instead of the usual short version, this has not impact on any functionality.
- The long version is also written into
VERSION_METADATA.json
in place of the short version, this has no impact for Mainnet and other named networks, only affects users private networks, that use custom genesis, that have not setversion-compatibility-protection=false
, and such users should skip this release and wait for the next one with the fix.
Breaking Changes
--compatibility-eth64-forkid-enabled
has been removed. #8541
Upcoming Breaking Changes
MetricSystem::createLabelledGauge
is deprecated and will be removed in a future release, replace it withMetricSystem::createLabelledSuppliedGauge
--Xsnapsync-synchronizer-flat-db-healing-enabled
is deprecated, use--Xbonsai-full-flat-db-enabled
instead.--Xbonsai-limit-trie-logs-enabled
is deprecated, use--bonsai-limit-trie-logs-enabled
instead.--Xbonsai-trie-log-pruning-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.--Xsnapsync-bft-enabled
is deprecated and will be removed in a future release. SNAP sync is supported for BFT networks.--tx-pool-disable-locals
has 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 lea 8000 st 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.
Additions and Improvements
- Add support for
eth_simulateV1
. #8406 - New metric
besu_peers_peer_count_by_client
to 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
Bug fixes
- Fix for storage proof key - if the key is zero use
0x0
not0x
#8499 - Fix ephemery genesis since genesisHash changed #8539
New Contributors
- @OlivierBBB made their first contribution in #8468
- @benaadams made their first contribution in #8536
Full Changelog: 25.4.0...25.4.1
b185ecd441c6aba213ad598db2482b6daaaae18eb35d9e8a9866d6db279da2eb besu-25.4.1.zip
1223c9d00c9bac7388cefa769a7387ebc67e97dd498970fbc8b8942cbc0d7efd besu-25.4.1.tar.gz
25.4.0
Important
This is NOT a Pectra Mainnet-ready release. The next release likely will be.
This is an optional update. Please note the upcoming breaking changes.
This release is mostly stability improvements ahead of the hard fork.
Upcoming Breaking Changes
MetricSystem::createLabelledGauge
is deprecated and will be removed in a future release, replace it withMetricSystem::createLabelledSuppliedGauge
--Xsnapsync-synchronizer-flat-db-healing-enabled
is deprecated, use--Xbonsai-full-flat-db-enabled
instead.--Xbonsai-limit-trie-logs-enabled
is deprecated, use--bonsai-limit-trie-logs-enabled
instead.--Xbonsai-trie-log-pruning-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.--Xsnapsync-bft-enabled
is deprecated and will be removed in a future release. SNAP sync is supported for BFT networks.--tx-pool-disable-locals
has 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-enabled
has been deprecated and will be removed in the next release. #8492
Additions and Improvements
- 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 - Explicitly add
depositContractAddress
tomainnet.json
#8410
Performance
- Consensys/tuweni 2.7.0 reduces boxing/unboxing overhead on some EVM opcodes, like PushX and Caller #8330, #8461
- Precompile Caching, enable with
--cache-precompiles
#8095
Dependencies
- Replace tuweni libs with https://github.com/Consensys/tuweni #8330, #8461
Bug fixes
- 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
5d11ef3b55cca8b060051ab910e0a89a76eae4f6a2d3d2bfb718ee742307fcaf besu-25.4.0.zip
6abbc7472c9c2137e9e82b4d8fb569f25f9f85d4a330eea6b0dbb6f8a67340af besu-25.4.0.tar.gz
New Contributors
- @relu91 made their first contribution in #8365
- @jjohannes made their first contribution in #8443
- @mirgee made their first contribution in #8353
Full Changelog: 25.3.0...25.4.0
25.3.0
This is a strongly recommended update for all users, including Mainnet.
It contains bug fixes, dependency and security updates.
Highlights include:
- Add Hoodi as new named testnet using
--network=hoodi
#8428 - Increase mainnet and Sepolia gas limit to 36M #8249
- Parallel EVM: Improve conflict detection by considering slots to reduce false positives #7923
- Add era1 format to blocks import subcommand #7935
- Add IBFT1 to QBFT migration capability #8262
Changelog
Breaking Changes
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 RLP
RPC 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
Upcoming Breaking Changes
MetricSystem::createLabelledGauge
is deprecated and will be removed in a future release, replace it withMetricSystem::createLabelledSuppliedGauge
--Xsnapsync-synchronizer-flat-db-healing-enabled
is deprecated, use--Xbonsai-full-flat-db-enabled
instead.--Xbonsai-limit-trie-logs-enabled
is deprecated, use--bonsai-limit-trie-logs-enabled
instead.--Xbonsai-trie-log-pruning-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.--Xsnapsync-bft-enabled
is deprecated and will be removed in a future release. SNAP sync is supported for BFT networks.--tx-pool-disable-locals
has 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.
Additions and Improvements
Prague
- Increase mainnet and Sepolia gas limit to 36M #8249
- Update Holesky and Sepolia deposit contract addresses #8346
Plugins
- Allow plugins to propose transactions during block creation #8268
- Add support for transaction permissioning rules in Plugin API #8365
Parallelization
- Improve conflict detection by considering slots to reduce false positives #7923
Dependencies
- 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
Other improvements
- Add TLS/mTLS options and configure the GraphQL HTTP service#7910
- Update
eth_getLogs
to return aBlock not found
error when the requested block is not found. #8290 - Change
Invalid block, unable to parse RLP
RPC 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
Bug fixes
- Add missing RPC method
debug_accountRange
toRpcMethod.java
so 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
SHA 256
125563b6b892859a55f31429578d43b990977a4a96a9e78ef051b267a0c50c07 besu-25.3.0.zip
3935093edeb54773a3cd10c32b03e4ac12a1af307f8377a6d2e24d7cbcf70af2 besu-25.3.0.tar.gz
25.2.2
25.2.2
This is a hotfix release for Pectra Sepolia testnets
You need to update IF (and ONLY IF) you are running Besu on Sepolia
Identical to 25.2.1 with one change:
- Pectra - Sepolia: Fix for deposit contract log decoding #8383
27bf8ae3d81bdd86590c9da86b3754c3df0a5e12a3c7eeb20628fc4fa1d1ebad besu-25.2.2.zip
760e7bdceea2f363bd9ee89b96999a7c4eb72852db5382cc97506203c6a53a5b besu-25.2.2.tar.gz
25.2.1
25.2.1
This is a hotfix release for Pectra testnets (Holesky and Sepolia).
You need to update IF (and ONLY IF) you are running Besu on Holesky or Sepolia
Identical to 25.2.0 with one change:
- Pectra - update Holesky and Sepolia deposit contract addresses #8346
45c04bbe2173f4ba3c4c5315f92958be6573a296b713f56509d5471ae97925f1 besu-25.2.1.zip
7ece6c885b02c4aef68efd03193e32cd74adc4a81db2cb07cd234d548d4dd0a2 besu-25.2.1.tar.gz
25.2.0
This is an optional update for Mainnet users. This is a required update for Holesky and Sepolia users for the upcoming Pectra hardfork.
Pectra scheduled for:
- Holesky: Mon, Feb 24 at 21:55:12 UTC
- Sepolia: Wed, Mar 5 at 07:29:36 UTC
Please note the breaking changes in this release and the upcoming breaking changes.
Breaking Changes
rpc-gas-cap
default value has changed from 0 (unlimited) to 50M. If you requirerpc-gas-cap
greater than 50M, you'll need to set that explicitly. #8251
Upcoming Breaking Changes
MetricSystem::createLabelledGauge
is 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-enabled
is deprecated, use--Xbonsai-full-flat-db-enabled
instead.--Xbonsai-limit-trie-logs-enabled
is deprecated, use--bonsai-limit-trie-logs-enabled
instead.--Xbonsai-trie-log-pruning-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.- 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.
Additions and Improvements
- Add a tx selector to skip txs from the same sender after the first not selected #8216
rpc-gas-cap
default value has changed from 0 (unlimited) to 50M #8251
Prague
- Add timestamps to enable Prague hardfork on Sepolia and Holesky test networks #8163
- Update system call addresses to match devnet-6 values #8209
Plugins
- Extend simulate transaction on pending block plugin API #8174
Bug fixes
- Fix the simulation of txs with a future nonce #8215
- Bump to besu-native 1.1.2 for ubuntu 20.04 native support#8264
Full changelog:
25.1.0...25.2.0
294a6aad21b12dde882ee02415d790a6fb1519109fec523993e5e58f16dba558 besu-25.2.0.zip
5bd58be7ba6131c7c7ff46e2578d1b6e8f57243e4c9e5cd8d31ef7bbcfc35e3a besu-25.2.0.tar.gz
25.1.0
This is an optional update.
🚨 Important Notice for Linux 20.04 Users
Issue
- Native library support for Linux 20.04 is missing in this version.
- This results in performance degradation as the system falls back to Java implementations instead.
Resolution
- Upgrade to Besu 25.2.0 to restore native support and avoid slowdowns.
This release resolves the RocksDB freezing issue seen by some users in the 24.12.x series.
More details here #8037
It is safe to upgrade directly from 24.10.0 to 25.1.0, but please note the breaking changes in the 24.12.x releases as well.
Please note the breaking changes in this release and upcoming breaking changes.
Breaking Changes
--host-whitelist
has been deprecated since 2020 and this option is removed. Use the equivalent--host-allowlist
instead.- Changed 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
Upcoming Breaking Changes
MetricSystem::createLabelledGauge
is 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-enabled
is deprecated, use--Xbonsai-full-flat-db-enabled
instead.--Xbonsai-limit-trie-logs-enabled
is deprecated, use--bonsai-limit-trie-logs-enabled
instead.--Xbonsai-trie-log-pruning-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.- 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
Additions and Improvements
- 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 #8076
- Add support for EIP-7702 transaction in the txpool #8018 #7984
- Add support for
movePrecompileToAddress
inStateOverrides
(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
- Add fallback for tx parallelization #8084
Bug fixes
- Fix serialization of state overrides when
movePrecompileToAddress
is present #8204 - Revise the approach for setting level_compaction_dynamic_level_bytes RocksDB configuration option #8037
- Fix possible incomplete txpool restore from dump file #7991
- Fixed: marking block as invalid because of temporary world state root mismatch #7844 #8084
b57ffc059bc8531a1323551e1639b999fd813bb88327c0e6da2a1c04092958c0 besu-25.1.0.zip
d8129b4e0ce17bc35c023993695fce73b0269a23608f5c3faa227dae7f6f5a02 besu-25.1.0.tar.gz
24.12.2
24.12.2
This is a hotfix release based on 24.12.1. You only need to upgrade if you're already using the account state overrides parameter for eth_call
- this functionality was introduced in 24.12.0.
The only difference compared with 24.12.1 is a hotfix for the serialization of account state overrides for eth_call
when movePrecompileToAddress
is present.
Operational Change / Risk in 24.12.x Series Releases
- We've noticed when upgrading besu to 24.12.0 that some nodes can freeze up to 2 hours when opening RocksDB database. It is related to a change in one default configuration on RocksDB (besu database layer), as we moved from version 8.3.2 in 24.10.0 to version 9.7.3 in 24.12.0. This change triggers some compaction work depending on the size of the database to apply the new configuration (recommended). All the upgraded nodes don't face the freeze, as the compaction can still happen in the background, but some users reported up to 2 hours freeze. You can find the details in this issue : facebook/rocksdb#13208
Bug fixes
- Fix serialization of state overrides when
movePrecompileToAddress
is present #8204 - only relevant foreth_call
account state overrides. This functionality was introduced in 24.12.0.
ea6b429fc0bfa1e6d0469c1aa0c48268ea00a1043c7874dfdbdc9714cf8baf28 besu-24.12.2.zip
13b48efbe0a14c8f1c957ce45acc1832876412ab9ccbe3cbd0d6631ace34ed11 besu-24.12.2.tar.gz
24.12.1
24.12.1 Hotfix
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.
in 24.12.x series releases Besu has switched to a platform bill-of-materials style publishing. If your project uses besu deployment artifacts, note that you will need to alter your dependencies to use platform dependencies instead.
Operational Change / Risk in 24.12.x Series Releases
- We've noticed when upgrading besu to 24.12.0 that some nodes can freeze up to 2 hours when opening RocksDB database. It is related to a change in one default configuration on RocksDB (besu database layer), as we moved from version 8.3.2 in 24.10.0 to version 9.7.3 in 24.12.0. This change triggers some compaction work depending on the size of the database to apply the new configuration (recommended). All the upgraded nodes don't face the freeze, as the compaction can still happen in the background, but some users reported up to 2 hours freeze. You can find the details in this issue : facebook/rocksdb#13208
Bug fixes
- Fix BOM pom publication to Artifactory #8201
87bbd9d175048ce9b42d2470354ce33ca8637a1bcb5e9cb13bd8e0f975a1eaa2 besu-24.12.1.zip
b7816b4207c240df50c7cb6416e7a1a5053c50400df803767e76b058758d78fa besu-24.12.1.tar.gz