github hyperledger/besu 26.2.0

7 hours ago

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

Don't miss a new besu release

NewReleases is sending notifications on new releases.