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-stateandx-restore-stateare removed #9821 - Omit totalDifficulty from post-merge blockResults #9836
- Chain pruning CLI options have been redesigned with new behavior: #9637
--Xchain-pruning-enablednow 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-retainedbehavior changes:- In
ALLmode: controls block retention (previously the only mode) - In
BALmode: has no effect as blocks are never pruned - Default value changed from
7200to113056blocks (Weak Subjectivity Period: 3533 epochs × 32 slots)
- In
- New flag
--Xchain-pruning-bals-retainedsets the number of BALs to retain:- Defaults to the value of
--Xchain-pruning-blocks-retainedwhen not specified - Must be >=
113056(configurable via--Xchain-pruning-retained-minimum) - In
ALLmode: should typically be less than or equal to--Xchain-pruning-blocks-retained - In
BALmode: controls BAL retention independently
- Defaults to the value of
--Xchain-pruning-frequencynow controls both block and BAL pruning operations (previously only controlled block pruning)- Renamed
--Xchain-pruning-blocks-retained-limitto--Xchain-pruning-retained-minimum(applies to both blocks and BALs)- New default value:
113056blocks (3533 epochs × 32 slots, based on Weak Subjectivity Period) - Previous default:
7200blocks
- New default value:
- 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_calland 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-nameinblock-testevmtool 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
4byteTracerindebug_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-ipv6CLI options enable a second UDP discovery socket;--p2p-ipv6-outbound-enabledcontrols 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/udp6fields: when--p2p-port=0is 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 ENRseqis incremented #9888 - Fix DiscV5 ENR
tcp/tcp6fields: 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
isAllowFutureNonceis true #9759
90b78a6739c37c6edffe362587231c51ce1b816b1f13c7aad94547e1a3a86e10 besu-26.2.0.zip
0b9535001e0081a5bd7c861a1c6444914ae7f0869355588e260d97ae5a59a914 besu-26.2.0.tar.gz