Skip to content

Releases: besu-eth/besu

26.2.0

05 Mar 03:39
e5e9ae2

Choose a tag to compare

26.2.0

This is a recommended update for all users.

Breaking Changes

  • ETC Classic support in Besu is removed. This includes all ETC related hardforks including Mordor and Spiral. #9671
  • Forest db subcommands x-backup-state and x-restore-state are removed #9821
  • Omit totalDifficulty from post-merge blockResults #9836
  • Chain pruning CLI options have been redesigned with new behavior: #9637
    • --Xchain-pruning-enabled now accepts three strategy values instead of boolean:
      • ALL - prunes both blocks and BALs (replaces the old --Xchain-pruning-enabled=true)
      • BAL - prunes only BALs, keeps all blocks forever (new mode, now the default)
      • NONE - disables all pruning (replaces the old --Xchain-pruning-enabled=false)
    • --Xchain-pruning-blocks-retained behavior changes:
      • In ALL mode: controls block retention (previously the only mode)
      • In BAL mode: has no effect as blocks are never pruned
      • Default value changed from 7200 to 113056 blocks (Weak Subjectivity Period: 3533 epochs × 32 slots)
    • New flag --Xchain-pruning-bals-retained sets the number of BALs to retain:
      • Defaults to the value of --Xchain-pruning-blocks-retained when not specified
      • Must be >= 113056 (configurable via --Xchain-pruning-retained-minimum)
      • In ALL mode: should typically be less than or equal to --Xchain-pruning-blocks-retained
      • In BAL mode: controls BAL retention independently
    • --Xchain-pruning-frequency now controls both block and BAL pruning operations (previously only controlled block pruning)
    • Renamed --Xchain-pruning-blocks-retained-limit to --Xchain-pruning-retained-minimum (applies to both blocks and BALs)
      • New default value: 113056 blocks (3533 epochs × 32 slots, based on Weak Subjectivity Period)
      • Previous default: 7200 blocks
  • Fast Sync is no longer supported, snap sync can be used instead #9814
  • CHECKPOINT sync is deprecated. Selecting CHECKPOINT sync now performs a SNAP sync: #9814
  • eth_simulateV1 returns BLOCK_NOT_FOUND instead of null success response when called with a future block #9837
  • eth_simulateV1: when validation is enabled, map UPFRONT_COST_EXCEEDS_BALANCE (-38014) error code to -32602 #9837

Upcoming Breaking Changes

  • RPC changes to enhance compatibility with other ELs
    • Block number parameter in RPCs will only support hex values. Support for non-hex (decimal) block number parameters is deprecated.
    • This affects several RPCs, including admin_logsRemoveCache, debug_getRawHeader, eth_call, eth_simulateV1, trace_call and more.
  • 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
    • 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.

Additions and Improvements

  • Support substring and glob matching for --test-name in block-test evmtool subcommand #9790
  • Improve performance of snap sync chain download #9510 and #9621
  • Add ability to pass a custom tracer to block simulation #9708
  • Add support for 4byteTracer in debug_trace* methods to collect function selectors from internal calls via PR #9642. Thanks to @JukLee0ira.
  • Update assertj to v3.27.7 #9710
  • Update vertx to 4.5.24 #9645
  • Add byte-level metrics for P2P message exchange #9666
  • Add IPv6 dual-stack support for DiscV5 peer discovery (enabled via --Xv5-discovery-enabled): new --p2p-host-ipv6, --p2p-interface-ipv6, and --p2p-port-ipv6 CLI options enable a second UDP discovery socket; --p2p-ipv6-outbound-enabled controls whether IPv6 is preferred for outbound connections when a peer advertises both address families #9763; RLPx now also binds a second TCP socket on the IPv6 interface so IPv6-only peers can establish connections #9873

Performance

  • EVM optimisations - Improves 70% of EEST benchmarks #9775
  • EVM optimisations - Improve SAR, SHR and SHL opcodes performance #9796

Bug fixes

  • Fix epoch reset not clearing DROP votes in Clique/IBFT/QBFT consensus #9870
  • Fix DiscV5 ENR udp/udp6 fields: when --p2p-port=0 is used, the OS-assigned UDP port is now correctly propagated to the ENR after the socket is bound; in dual-stack mode both UDP sockets resolve before the ENR seq is incremented #9888
  • Fix DiscV5 ENR tcp/tcp6 fields: previously these reflected the UDP discovery bind port instead of the actual RLPx listening port; ENR initialisation is now deferred until the RLPx TCP port is known #9873
  • Fix QBFT Shanghai support by reintroducing NotApplicableWithdrawals withdrawals validator #9830
  • Fix callTracer handling of failed CREATE operations, including correct input field extraction and proper error reporting for both soft failures and revert reasons
  • Upgrade netty to 4.2.10-Final - Fixes setsockopt() failed: Protocol not available #9783
  • Allow nonce to be max value when isAllowFutureNonce is true #9759

90b78a6739c37c6edffe362587231c51ce1b816b1f13c7aad94547e1a3a86e10 besu-26.2.0.zip
0b9535001e0081a5bd7c861a1c6444914ae7f0869355588e260d97ae5a59a914 besu-26.2.0.tar.gz

26.1.0

03 Feb 05:04
31eb48e

Choose a tag to compare

26.1.0

This is a recommended update for all users.

Breaking Changes

  • Remove experimental CLI flag --Xenable-extra-debug-tracers. Call tracer (callTracer) is now always available for debug_trace* methods.
  • RPC changes to enhance compatibility with other ELs
    • RPCs using filter parameter including eth_getLogs and trace_filter return an error if fromBlock is greater than toBlock, or if toBlock extends beyond chain head (previously returned an empty list) #9604
  • Plugin API changes to BlockHeader, Log, LogWithMetadata, TransactionProcessingResult and TransactionReceipt to use specific types for LogsBloomFilter, LogTopic and Log #9556

Upcoming Breaking Changes

  • RPC changes to enhance compatibility with other ELs
    • Block number parameter in RPCs will only support hex values. Support for non-hex (decimal) block number parameters is deprecated.
    • This affects several RPCs, including admin_logsRemoveCache, debug_getRawHeader, eth_call, eth_simulateV1, trace_call and more.
  • 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
  • --history-expiry-prune is deprecated and will be removed in a future release

Additions and Improvements

  • Update to Netty 4.2.9.Final #9587
  • Update to log4j 2.25.3 #9600
  • Add engine_getBlobsV3 method #9582
  • Verify plugins on start #9601
  • Add EIP-7778 to Amsterdam #9664
  • Treat EndOfRLPException as invalid packet in peer discovery, meaning you will no longer see these exceptions, unless you enable DEBUG logs #9597

Performance

  • Optimise ADD Opcode: ADD 86% faster, using new UInt256 implementation #9477
  • Optimise EIP-196 AltBn128: EcAdd 33-128% faster, EcMul 8% faster #9570
  • Improve getBlobsV2 by disabling HTTP response compression for engine API, with up to 10× throughput improvement observed for large numbers of blobs. #9667
  • Replace BytesTrieSet with HashSet, improves CREATE, CREATE2, SELFDESTRUCT and jumpdest analysis by up to 48% #9641
  • Parallelize state root computation for Bonsai #9576

Bug fixes

  • Fix promotion to prioritized layer for gas price fee markets #9635
  • Fix callTracer to properly capture nested calls and populate revertReason field when transactions revert #9651
  • Enhance payload selection with tx count and creation time tiebreakers #9657
  • Fix mining beneficiary for BFT networks when set to zero address #9679

356bae18a4c08a2135aa006e62a550b52428e1d613c08aa97c40ec8b908ae6cf besu-26.1.0.zip
de6356bf2db9e7a68dc3de391864dc373a0440f51fbf6d78d63d1e205091248e besu-26.1.0.tar.gz

New Contributors

Full Changelog: 25.12.0...26.1.0

25.12.0

12 Dec 07:27
05b6c1a

Choose a tag to compare

25.12.0

Breaking Changes

  • Remove these deprecated CLI options #9385
    • Remove--Xbonsai-parallel-tx-processing-enabled deprecated since 25.7.0. Use --bonsai-parallel-tx-processing-enabled instead.
    • Remove --Xsnapsync-server-enabled deprecated since 25.7.0. Use --snapsync-server-enabled instead.
    • Remove --Xsnapsync-synchronizer-pre-merge-headers-only-enabled deprecated since 25.7.0. Use --snapsync-synchronizer-pre-checkpoint-headers-only-enabled instead.
    • Remove --Xhistory-expiry-prune deprecated since 25.7.0. Use --history-expiry-prune instead.
  • 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

Upcoming Breaking Changes

  • 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

Additions and Improvements

  • Update to vertx 4.5.22 #9375
  • Add opcodes optional parameter to RPC methods: debug_standardTraceBlockToFile, debug_standardTraceBadBlockToFile, debug_traceBlockByNumber, debug_traceBlockByHash, debug_traceTransaction, debug_traceBlock, debug_traceCall for tracing specified opcodes #9335
  • Use Eclipse Temurin OpenJDK JRE in Besu docker image #9392
  • Add Linea named networks for linea_mainnet and linea_sepolia #9436, #9518
  • Add eth_subscribe and eth_unsubscribe support to IPC service #9504
  • Add experimental callTracer tracer option to debug_trace* methods. Enabled using --Xenable-extra-debug-tracers=true option. Issue #8326 implemented via PR #8960 and #9072.

Performance

  • 5-6x faster toFastHex calculation for engine_getBlobsV2 #9426
  • Optimise engine_getPayload* methods and engine_getBlobsV2 #9445
  • Optimise performances of AND, OR, XOR and NOT opcodes #9489

Bug fixes

  • Fix non-deterministic sub-protocol registration during IBFT2 to QBFT consensus migration #9516
  • Fix loss of colored output in terminal when using --color-enabled=true option #8908
  • Fix an issue where Besu does not support 0x80 as transaction type when decoding eth/69 receipts #9520

fa02fc7d9f7965036caea0b86efdcfdddb9e982416c8fb026b580815a1ee2de7 besu-25.12.0.zip
11a880ad19cbfa30edb71a0a990310c704d6f6625601e6125507092b07db51a5 besu-25.12.0.tar.gz

New Contributors

Full Changelog: 25.11.0...25.12.0

25.11.0

05 Nov 02:35

Choose a tag to compare

25.11.0 - Fusaka Mainnet Release

Important

This is the Fusaka Mainnet-ready release. This is a mandatory update for Mainnet users.

  • Adds Osaka, BPO1, and BPO2 fork times for Mainnet
  • Increases the Mainnet gas limit to 60M.

All Mainnet nodes must be updated before the activation of the Fusaka fork:

Network Fork Name Time (UTC) Epoch Start Slot Unix Timestamp
Mainnet Fusaka 2025-12-03 21:49:11 411392 13,164,544 1764798551
Mainnet BPO 1 2025-12-09 14:21:11 412672 13,205,504 1765290071
Mainnet BPO 2 2026-01-07 01:01:11 419072 13,410,304 1767747671

Upcoming Breaking Changes

  • Deprecated CLI options
    • --Xbonsai-parallel-tx-processing-enabled is deprecated since 25.7.0. Use --bonsai-parallel-tx-processing-enabled instead.
    • --Xsnapsync-server-enabled is deprecated since 25.7.0. Use --snapsync-server-enabled instead.
    • --Xsnapsync-synchronizer-pre-merge-headers-only-enabled is deprecated since 25.7.0. Use --snapsync-synchronizer-pre-checkpoint-headers-only-enabled instead.
    • --Xhistory-expiry-prune is deprecated since 25.7.0. Use --history-expiry-prune instead.
  • 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

Additions and Improvements

  • Add Osaka, BPO1 and BPO2 fork times for mainnet #9380
  • Increase mainnet gas limit to 60M #9339
  • Add blockTimestamp to receipt logs for eth_getBlockReceipts and eth_getTransactionReceipt results #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
  • Update to tuweni 2.7.2 #9338
  • Support blob fee market when zeroBaseFee enabled for forks with blobs #9344

New Contributors

Full Changelog: 25.10.0...25.11.0

a91b07434e7c4a57bb336888f5262b6e92518bf5fd8323624f74b0b5637c28d5 besu-25.11.0.zip
d38533bb4c02dd1363ddf48552ba2acaabf9ec7dafde208393b43adbfeb70946 besu-25.11.0.tar.gz

25.10.0

16 Oct 08:30
7c3bc92

Choose a tag to compare

25.10.0 - Fusaka Testnet Release

Important

This is an optional update for Mainnet users. This is a recommended update for Holesky, Sepolia and Hoodi users for the upcoming Fusaka hardfork. There will be another release before the Mainnet Fusaka hardfork.

Fusaka Hardfork details: https://eips.ethereum.org/EIPS/eip-7607#activation

  • Holešky scheduled to fork on 2025-10-01 08:48:00
  • Sepolia scheduled to fork on 2025-10-14 07:36:00
  • Hoodi scheduled to fork on 2025-10-28 18:53:12

Upcoming Breaking Changes

  • Deprecated CLI options
    • --Xbonsai-parallel-tx-processing-enabled is deprecated since 25.7.0. Use --bonsai-parallel-tx-processing-enabled instead.
    • --Xsnapsync-server-enabled is deprecated since 25.7.0. Use --snapsync-server-enabled instead.
    • --Xsnapsync-synchronizer-pre-merge-headers-only-enabled is deprecated since 25.7.0. Use --snapsync-synchronizer-pre-checkpoint-headers-only-enabled instead.
    • --Xhistory-expiry-prune is deprecated since 25.7.0. Use --history-expiry-prune instead.
  • 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

Breaking Changes

Additions and Improvements

  • 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-headers flag to cache the last n block headers persisted to the blockchain #9223
  • Manage unexpected exceptions during block creation #9208
  • Add --cache-last-block-headers-preload-enabled flag to enable preloading the block headers cache during startup time #9248
  • Upgrade to execution-spec-tests v5.2.0 #9226, #9242
  • Add blockTimestamp to eth_getLogs result #9278
  • Add --ethstats-report-interval CLI option to control ethstats reporting frequency instead of using hardcoded 5-second interval #9271
  • Performance improvements to EQ opcode #9229
  • Update jc-kzg dependency #9261
  • Add isCancelled method to TransactionEvaluationContext. 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

Bug fixes

  • Fix eth_subscribe RPC failing returning a block response #9212
  • Fix ethstats integration failing to provide block updates to ethstats server #9220

New Contributors

Full Changelog: 25.9.0...25.10.0

a67ba604f278b784cb427a1ad514c97c680cb83cd09594143e34428bafc7ff62 besu-25.10.0.zip
bc9d0b2d2206c0565b57e23069e20751836595bd3fa0e0b9fc263388ff6c0bb6 besu-25.10.0.tar.gz

25.10.0-RC2

03 Oct 06:13
5505822

Choose a tag to compare

25.10.0-RC2 Pre-release
Pre-release

25.10.0-RC2

Important

This RC is a recommended update for Holesky and Sepolia users for the Fusaka hardfork.
This RC is still pending burn in for mainnet.

This RC includes an update for a dependency used in PeerDAS.

There is likely to be another release before Hoodi's Fusaka fork.

Upcoming Breaking Changes

  • Deprecated CLI options
    • --Xbonsai-parallel-tx-processing-enabled is deprecated since 25.7.0. Use --bonsai-parallel-tx-processing-enabled instead.
    • --Xsnapsync-server-enabled is deprecated since 25.7.0. Use --snapsync-server-enabled instead.
    • --Xsnapsync-synchronizer-pre-merge-headers-only-enabled is deprecated since 25.7.0. Use --snapsync-synchronizer-pre-checkpoint-headers-only-enabled instead.
    • --Xhistory-expiry-prune is deprecated since 25.7.0. Use --history-expiry-prune instead.
  • 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

Additions and Improvements

  • Performance improvements to EQ opcode #9229
  • Update jc-kzg dependency #9261

Full Changelog: 25.9.0...25.10.0-RC2

725ff15187f8b37caa860d383f4f78b36a99e904ec835f7390087dae9449a17a besu-25.10.0-RC2.zip
8ceffc213596ca5cef3a821020b00026f0f82316e2ec519cc9152407c3c6418a besu-25.10.0-RC2.tar.gz

25.10.0-RC1

01 Oct 00:47
8e11bbb

Choose a tag to compare

25.10.0-RC1 Pre-release
Pre-release

25.10.0-RC1

Important

This RC is an optional update for Holesky and Sepolia users. 25.9.0 remains the official Fusaka Testnet release.
You only need to upgrade to this release if you're experiencing the eth_subscribe or ethstats known issue from 25.9.0.
This RC is still pending burn in for mainnet.

Fusaka Hardfork details: https://eips.ethereum.org/EIPS/eip-7607#activation

  • Holešky scheduled to fork on 2025-10-01 08:48:00
  • Sepolia scheduled to fork on 2025-10-14 07:36:00
  • Hoodi scheduled to fork on 2025-10-28 18:53:12

Breaking Changes

Upcoming Breaking Changes

  • Deprecated CLI options
    • --Xbonsai-parallel-tx-processing-enabled is deprecated since 25.7.0. Use --bonsai-parallel-tx-processing-enabled instead.
    • --Xsnapsync-server-enabled is deprecated since 25.7.0. Use --snapsync-server-enabled instead.
    • --Xsnapsync-synchronizer-pre-merge-headers-only-enabled is deprecated since 25.7.0. Use --snapsync-synchronizer-pre-checkpoint-headers-only-enabled instead.
    • --Xhistory-expiry-prune is deprecated since 25.7.0. Use --history-expiry-prune instead.
  • 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

Additions and Improvements

  • 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-headers flag 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.2.0 #9226, #9242

Bug fixes

  • Fix eth_subscribe RPC failing to return a block response #9212
  • Fix ethstats integration failing to provide block updates to ethstats server #9220

Full Changelog: 25.9.0...25.10.0-RC1

f0390f431612771485a68e4e9e2e177f35243aacc2eec91d4cc00e4f25cf5df1 besu-25.10.0-RC1.zip
9e62ffe9722ea1e20913d1428db0e4039c070298876857528b78e23e8ef1d7b6 besu-25.10.0-RC1.tar.gz

25.9.0

24 Sep 06:59
e8860d2

Choose a tag to compare

25.9.0 - Fusaka Testnet Release

Important

This is an optional update for Mainnet users. This is a required update for Holesky, Sepolia and Hoodi users for the upcoming Fusaka hardfork. There is likely to be another release before Hoodi and maybe before Sepolia.

Fusaka Hardfork details: https://eips.ethereum.org/EIPS/eip-7607#activation

  • Holešky scheduled to fork on 2025-10-01 08:48:00
  • Sepolia scheduled to fork on 2025-10-14 07:36:00
  • Hoodi scheduled to fork on 2025-10-28 18:53:12

Known issues

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.
  • fixes will be included in the next Besu release.

Breaking Changes

  • Remove deprecated option --bonsai-maximum-back-layers-to-load (deprecated since 23.4.0). Use --bonsai-historical-block-limit instead

Upcoming Breaking Changes

  • Deprecated CLI options
    • --Xbonsai-parallel-tx-processing-enabled is deprecated since 25.7.0. Use --bonsai-parallel-tx-processing-enabled instead.
    • --Xsnapsync-server-enabled is deprecated since 25.7.0. Use --snapsync-server-enabled instead.
    • --Xsnapsync-synchronizer-pre-merge-headers-only-enabled is deprecated since 25.7.0. Use --snapsync-synchronizer-pre-checkpoint-headers-only-enabled instead.
    • --Xhistory-expiry-prune is deprecated since 25.7.0. Use --history-expiry-prune instead.
  • 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

Additions and Improvements

  • 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 take, to propose transactions, during block creation #9184
  • Add Osaka, BPO1 and BPO2 fork times for holesky, hoodi and sepolia #9196

Performance

  • Add jmh benchmarks for some compute-related opcodes #9069
  • Improve EcRecover precompile performance #9053
  • Improve CallDataCopy worst case scenario #9152
  • Improve EEST mod_vul_guido_3_even use case #9158
  • Improve FCU performance in case of long non finality issues #9193

New Contributors

Full Changelog: 25.8.0...25.9.0

e8f93cd8f9ca4f56346c2cc04b93437f25dbf455b387f72c0e3a0fdd4bc930f1 besu-25.9.0.zip
8f881667ae5e62970270d8184e6555657b12b3f9fa1c77114f7f8497118f6bc6 besu-25.9.0.tar.gz

25.8.0

29 Aug 02:34

Choose a tag to compare

25.8.0

This is a required update for all users.

Highlights

Performance updates

  • Sync is faster
  • Sync uses less memory and CPU
  • Block creation is faster

Security updates

  • Dependency updates including fixing CVEs

Breaking Changes

  • Change in behavior for eth_estimateGas to 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.getValue method (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

Upcoming Breaking Changes

  • Deprecated CLI options
    • --Xbonsai-parallel-tx-processing-enabled is deprecated since 25.7.0. Use --bonsai-parallel-tx-processing-enabled instead.
    • --Xsnapsync-server-enabled is deprecated since 25.7.0. Use --snapsync-server-enabled instead.
    • --Xsnapsync-synchronizer-pre-merge-headers-only-enabled is deprecated since 25.7.0. Use --snapsync-synchronizer-pre-checkpoint-headers-only-enabled instead.
    • --Xhistory-expiry-prune is deprecated since 25.7.0. Use --history-expiry-prune instead.
  • 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

Additions and Improvements

  • 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 WorldStateService to the plugin API #9024
  • Wait for peers before starting Backward Sync #9003
  • LUKSO Mainnet Pectra Hardfork #9070

Dependencies

Performance

  • 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-bust to evmtool benchmark subcommand #8985
  • Add gas usage metric to eth_call #9019
  • Improve P256Verify precompile performance #9035

Fusaka devnets

Bug fixes

  • Fix bug with eth_estimateGas on QBFT - use zero address when doing simulation against pending block #9031
  • Fix bug with bonsai when parallel transaction processing is enabled #9113

e6e1bf8756768a1c6c3b193c29cc76c816cf8b4186b9fa4209c84d0ed3d9afd7 besu-25.8.0.zip
93715c6cf21e1455bed1e16a5a7444aa69604d23ef337f90ef7a508a5deeba4a besu-25.8.0.tar.gz

25.7.0

03 Jul 07:39
4e2efab

Choose a tag to compare

25.7.0

🚀 Release Highlights

  • Gas limit increased to 45M by default 🚀
  • Changes in Maven coordinates of Besu artifacts
  • History expiry enabled by default for new SNAP nodes
  • Parallel transaction processing enabled by default
  • Breaking Changes: Cleanup of deprecated code—please review carefully!
  • --snapsync-server-enabled has been promoted (but not yet default)
  • Experimental Bonsai Archive support is now available but remains experimental pending mainnet performance validation.

Breaking Changes

  • 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
  • BesuContext is removed, since deprecated in favor of ServiceManager since 24.12.0
  • Remove the deprecated --Xbonsai-trie-logs-pruning-window-size, use --bonsai-trie-logs-pruning-window-size instead. #8823
  • Remove the deprecated --Xbonsai-limit-trie-logs-enabled, use --bonsai-limit-trie-logs-enabled instead. #8704
  • Remove the deprecated --Xbonsai-trie-log-pruning-enabled, use --bonsai-limit-trie-logs-enabled instead. #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, and cost #8817
  • Sunsetting features - for more context on the reasoning behind the deprecation of these features, including alternative options, read this blog post
    • Stratum mining has been removed (part of PoW) #8802
    • PoW RPCs removed: eth_getWork, eth_submitWork, eth_getHashrate, eth_submitHashrate, eth_hashrate
    • Privacy RPC API groups removed: EEA and PRIV #8803
  • 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-enabled can be set to false to force SNAP sync to download pre-checkpoint (pre-merge) blocks
    • --history-expiry-prune can 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

Upcoming Breaking Changes

  • --Xbonsai-parallel-tx-processing-enabled is deprecated, use --bonsai-parallel-tx-processing-enabled instead.
  • --Xsnapsync-server-enabled is deprecated, use --snapsync-server-enabled instead #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-enabled is deprecated and will be removed in a future release. Use --snapsync-synchronizer-pre-checkpoint-headers-only-enabled instead.
  • --Xhistory-expiry-prune is deprecated and will be removed in a future release. Use --history-expiry-prune instead.

Additions and Improvements

  • Introduce the TransactionValidatorService to 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-enabled New 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-enabled can be set to false to force SNAP sync to download pre-checkpoint (pre-merge) blocks
    • --history-expiry-prune can 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

Performance

  • 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

Fusaka

  • 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

History Expiry

This release contains Mainnet-ready pre-merge History Expiry which is documented here: https://besu.hyperledger.org/public-networks/how-to/pre-merge-history-expiry
By default, a fresh sync with sync-mode=SNAP will only save the pre-merge block headers, not the block bodies.
There are also options available for pruning existing nodes, expect to save 300-500 GiB depending on the method you use.
We advise everyone to migrate from sync-mode=CHECKPOINT to sync-mode=SNAP and will be deprecating CHECKPOINT sync in the future.

e6a805b69d9a90278a811682a2f891d72803c235f0566d9e204dc3ae3b3af401 besu-25.7.0.zip
032515d065495aea824a25ef501b5543096931ad8048b4a12296a410b1cb8c12 besu-25.7.0.tar.gz