github besu-eth/besu 26.11.0

2 hours ago

Breaking Changes

  • eth_getProof now follows the execution-apis rules, regarding leading zeros and error codes. #11668
  • engine_getPayload no longer waits for the in-progress block build when only the empty block has been built, as execution-apis#958 requires. The default of --Xpos-block-finalization-timeout-ms changes from 800 to 0 and the option now accepts 0; set it to a positive value to restore the previous wait. #11774
  • eth_simulateV1 now rejects unknown account overrides #11695

Bug fixes

  • Block propagation now retries a block that peers do not serve with a delay that grows from 250 ms to 30 s and stops after 10 retries, releasing the block number for a later announcement. Previously it rescheduled the retrieval immediately and without a limit for as long as the number stayed in the propagation range. Block propagation stops once a finalized forkchoice is received, so this only affects networks that do not send one (Clique/PoA) and tests, not mainnet. #11674
  • eth_call, eth_estimateGas, eth_createAccessList and debug_traceCall now reject an invalid state override with the error declared for it instead of Internal error (-32603). An account override that sets both state and stateDiff returns Invalid call params (-32602) and is no longer logged at ERROR, and movePrecompileToAddress on an address that is not a precompile returns -32000, as eth_simulateV1 does. #11590
  • eth_simulateV1 call errors now match the execution-apis schema: reverts return execution reverted[: ], out of gas returns out of gas, and a failing precompile returns -32015 instead of 3. #11635
  • eth_call, eth_estimateGas and callTracer now decode Panic(uint256) revert data into a reason, such as arithmetic underflow or overflow, as geth does. #11635
  • Discovery no longer buffers unbounded memory for inbound DiscV5 packets: over-sized datagrams are dropped before they are copied for dispatch, and the dispatch queue is bounded. #11672
  • On OpenTelemetry, a supplied metric created again, as by the world state download after a resync, now replaces the old one, as on Prometheus. Previously a labelled supplied gauge or counter threw IllegalStateException and a gauge kept reporting its first supplier. debug_metrics no longer fails on OpenTelemetry once a supplied counter is registered. #11773
  • trace_rawTransaction now applies the --rpc-max-trace-steps cap, as trace_call and trace_callMany already do. It traced every step of the submitted transaction regardless of the setting. #11438
  • Strict transaction replay protection (--strict-tx-replay-protection-enabled) no longer rejects transactions from priority senders received from peers; it applies only to transactions submitted via JSON-RPC, as documented. #11466
  • With --cache-last-blocks set, RPC methods return the total difficulty of recently imported blocks instead of their own difficulty, which is 0 after the merge. #11790

Additions and Improvements

  • With --Xevm-v2, MessageFrame.getMaybeUpdatedMemory and getMaybeUpdatedStorage are recorded only while a tracer that traces operations runs. #11690
  • Update besu-native to 2.1.0 and compute the secp256k1 ECDH key agreements of RLPx handshakes and DiscV5 natively, which removes about 2 MB of allocation per agreement. #11648
  • Upgrade Vert.x from 5.1.6 to 5.2.2, which fixes the Vert.x advisories published in October 2026, including HTTP/1.x request smuggling through canonicalized headers, unbounded allocation for compressed WebSocket frames, and an incomplete HTTP client SSL context cache key. #11770
  • Support Amsterdam hardfork at genesis on Ephemery, aligning with Ephemery iteration 165 and removing dynamic in-cycle BPO offsets. #11728
  • engine_newPayload replies before it stores a valid block and its trie log. #11682
  • Block import preloads and commits only the state a block changes, and builds trie keys without streams. #11758
  • QBFT validators import a committed block without executing it again when they created it or validated it as a proposal, removing one block execution from the critical path of every block. A proposer no longer executes its own proposal again to validate it. #11469
  • --sync-mode=SNAP2 downloads the chain and the state together, the state following the chain head through block access lists. #11803

9e14f6d9bbfd3f1aaf58c47cfb209d596931b40f4bc2790219328b36ffbcd227 besu-26.11.0.tar.gz
a3c947c33afc7eb7e1c1688c7122334d6258bfdca0fec64fedbe0d007b5978d1 besu-26.11.0.zip

New Contributors

Don't miss a new besu release

NewReleases is sending notifications on new releases.