Releases: hyperledger/besu
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
24.12.0
24.12.0
This is an optional update.
This release includes some breaking changes. If you are monitoring Besu with Grafana, you will need to update to the latest Dashboard from https://grafana.com/grafana/dashboards/16455-besu-full/. Also please carefully read the following notes before you update your node.
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
Breaking Changes
- Removed Retesteth rpc service and commands #7833
- TLS for P2P (early access feature) has been removed #7942
- In the plugin API,
BesuContext
has been renamed toServiceManager
to 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_total
is losing the_total
suffix -
The
_created
timestamps 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
-
Upcoming Breaking Changes
- Plugin API will be deprecating the BesuContext interface to be replaced with the ServiceManager interface.
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
--host-whitelist
has been deprecated in favor of--host-allowlist
since 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
Additions and Improvements
- 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
pending
block tag when callingeth_estimateGas
andeth_createAccessList
#7951
Bug fixes
- 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_call
andeth_estimateGas
#7965 - Correctly parse nonce as hex in
eth_call
account overrides #7999
edd686efaf4a6b0bcd4457dbd5f195554094209f505cfe311c270cad6060004f besu-24.12.0.zip
74d20b2a4b3da659f608d65c09ab95d2187dc2c54372d9f7330bf5190d5e7124 besu-24.12.0.tar.gz
24.10.0
24.10.0
This is a recommended update for mainnet users.
This release includes some breaking changes. Please carefully read the following notes before you update your node.
Key Highlights
- For engine_getBlobsV1 - Keep track of blobs that are part of multiple transactions
- Fix RocksDBException during snap sync
- Add
--ephemery
network support for Ephemery Testnet - thanks @gconnect!
For Private Networks
- Early access support for empty block period in QBFT with
xemptyblockperiodseconds
- thanks @amsmota!
Breaking Changes
- 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-error
option. #7662
Upcoming Breaking Changes
- k8s (KUBERNETES) Nat method is now deprecated and will be removed in a future release
--host-whitelist
has been deprecated in favor of--host-allowlist
since 2020 and will be removed in a future release
Additions and Improvements
- Remove privacy test classes support #7569
- Add Blob Transaction Metrics #7622
- Early access support for
xemptyblockperiodseconds
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
BlockchainService
7702 - Add support for
chainId
inCallParameters
#7720 - Add
--ephemery
network support for Ephemery Testnet #7563 thanks to @gconnect - Add configuration of Consolidation Request Contract Address via genesis configuration #7647
Bug fixes
- Fix mounted data path directory permissions for besu user #7575
- Fix for
debug_traceCall
to 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-score
option 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
- For engine_getBlobsV1 - Keep track of blobs that are part of multiple transactions #7723
2c3833aae5c7461d6bbb54dc5f25ad105bcc591b6385284b5afda0907909c601 besu-24.10.0.zip
0648e108614861b04537a4017d63bddf5bae88c738bccd5942f76c6d544dcac2 besu-24.10.0.tar.gz