Breaking Changes
eth_getProofnow follows the execution-apis rules, regarding leading zeros and error codes. #11668engine_getPayloadno 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-mschanges from 800 to 0 and the option now accepts 0; set it to a positive value to restore the previous wait. #11774eth_simulateV1now 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_createAccessListanddebug_traceCallnow reject an invalid state override with the error declared for it instead ofInternal error(-32603). An account override that sets bothstateandstateDiffreturnsInvalid call params(-32602) and is no longer logged atERROR, andmovePrecompileToAddresson an address that is not a precompile returns-32000, aseth_simulateV1does. #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_estimateGasandcallTracernow decodePanic(uint256)revert data into a reason, such asarithmetic 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
IllegalStateExceptionand a gauge kept reporting its first supplier.debug_metricsno longer fails on OpenTelemetry once a supplied counter is registered. #11773 trace_rawTransactionnow applies the--rpc-max-trace-stepscap, astrace_callandtrace_callManyalready 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-blocksset, 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.getMaybeUpdatedMemoryandgetMaybeUpdatedStorageare 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_newPayloadreplies 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=SNAP2downloads 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
- @seungheyon made their first contribution in #11602