You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
26.4.0
Repository Migration
The Besu repository has moved from hyperledger/besu to besu-eth/besu. GitHub automatically redirects all existing links from the old location.
Breaking Changes
Clique consensus has been removed. Besu can no longer start or mine on pure Clique networks. Syncing networks that started as Clique and have since transitioned to PoS via terminalTotalDifficulty (e.g. Linea Mainnet) are still supported. #9852
Deprecated --min-block-occupancy-ratio for removal and make it noop. That option, that is ignored on PoS networks, is related to the deprecated PoW, and allowed to broadcast a mined block as soon as it reached a satisfying fill threshold. The option is still recognized, but it has no effect and will be completely removed in a future release. #10036
Plugin API
Removed TransactionSelectionResult.BLOCK_OCCUPANCY_ABOVE_THRESHOLD, in general it could be replaced with BLOCK_FULL
Experimental Bonsai Archive column families have changed to improve performance during bonsai to archive migration. If you are using the Bonsai archive you will need to do a full resync #10058
debug_traceTransaction and debug_traceBlockByNumber: the error field in StructLog entries is now serialized as a plain string (e.g. "INVALID_JUMP_DESTINATION") instead of an array of strings, aligning with the execution-apis opcode tracer spec. #10117
debug_traceTransaction now returns a JSON-RPC error response (-32000: Transaction not found) instead of a success response with null result when the transaction hash is unknown #10150
debug_traceBlockByNumber now returns a JSON-RPC error response (-32000: genesis is not traceable) instead of a success response with null result when tracing the genesis block #10133
Removed deprecated Holesky network. --network holesky is no longer a valid option. #10161
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.
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)
--min-block-occupancy-ratio is deprecated and will be removed in a future release
Plugin API
PluginTransactionSelectorFactory.create(final SelectorsStateManager selectorsStateManager) is deprecated for removal
--Xmax-tracked-seen-txs-per-peer renamed to --Xmax-tracked-seen-txs (old name kept as deprecated alias will be removed in a future release)
Besu will require Java JDK 25 to build and run in a future release.
Bug fixes
Fix eth/69 snap sync receipt root mismatch by correctly identifying Frontier transaction type in SyncTransactionReceiptEncoder #9900
Fix outstanding request counter leak in RequestManager that could cause peers to appear at capacity #9900
BFT forks that change block period on time-based forks don't take effect 9681
Fix QBFT RLPException when decoding proposals from pre-26.1.0 nodes that do not include the blockAccessList field #9977
Fix eth_simulateV1 discrepancy [9960] (#9960) eth_simulateV1 now accepts calls where both input and data
are provided with different values, using input as per the execution-apis spec instead of returning an error.
Fix eth_simulateV1 returning wrong error code when transaction gas exceeds block gas limit: now correctly returns -38015 (BLOCK_GAS_LIMIT_EXCEEDED) instead of -38014 or succeeding #10073
Wait for peers before starting chain download. Prevents an OutOfMemory (OOM) error when the node has zero peers #9979
Upgrade besu-native libraries version to 1.5.0. This fixes the issue of besu-native/secp256r1 exporting OpenSSL symbols in JVM space. besu-native #308
Additions and Improvements
Add transactionReceipts subscription type to eth_subscribe that pushes all transaction receipts when a new block is added, with optional transactionHashes filter to receive receipts for specific transactions only #10190
Add enableMemory parameter to debug_traceTransaction and debug_traceBlockByNumber. Defaults to false; memory is only included in trace output when explicitly enabled. The existing disableMemory parameter continues to work for backwards compatibility #10169
--net-restrict now supports IPv6 CIDR notation (e.g. fd00::/64) in addition to IPv4, enabling subnet-based peer filtering in IPv6 and dual-stack deployments #10028
Defer Snappy decompression of inbound P2P messages from the Netty I/O thread to the worker thread, reducing memory held in the transaction worker queue to compressed size #10048
Dispatch snap server request processing (GET_ACCOUNT_RANGE, GET_STORAGE_RANGE, GET_BYTECODES, GET_TRIE_NODES, GET_BLOCK_ACCESS_LISTS) off the Netty event loop to prevent heavy trie/DB work from blocking ETH protocol message handling #10083
Add -Pcases case name filtering to JMH benchmark suite #9982
Discovery V5
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
Add DiscV5 discovery metrics (discv5_live_nodes_current, discv5_total_nodes_current) to track node counts in the routing table #9692
Make DiscV5 discovery parameters externally configurable: --Xv5-discovery-interval-seconds (default: 1), --Xv5-discovery-timeout-seconds (default: 30), and --Xv5-minimum-peer-ratio (default: 0.8) allow tuning of the peer discovery cadence, per-round timeout, and peer saturation threshold without code changes #10127