This is a maintenance release preparing for the upcoming Fusaka hard fork, featuring a state history rewrite, performance enhancements, and crucial security fixes.
Highlights of this release:
Fusaka & Osaka Preparations
This update includes essential fixes for the Osaka devnets and the Fusaka upgrade. It ensures correct blob parameter handling at the fork boundary and properly converts legacy blob sidecars to the new "cell proof" format required for the Osaka fork, paving the way for a smooth transition.
Performance and Efficiency
This release brings significant performance improvements aimed at reducing resource usage and speeding up operations.
- Reduced Memory Allocations: An optimization in how transactions are compared is expected to reduce a node's total memory allocations by approximately 10% and speeds up the comparison process by ~60%.
- Faster State Loading: Chain processing performance is improved with the introduction of parallel prefetching for trie nodes, accelerating state loading.
- Faster DB Inspection: The `db inspect` command has been parallelized, drastically cutting its runtime from over 30 minutes to around 10 minutes.
- Improved ETA Calculation: The accuracy of ETA calculations for long-running processes like state sync and indexing has been significantly improved.
RPC API & Security Hardening
Several enhancements have been made to the RPC server to improve security and functionality.
- DoS Protection: Geth now includes a configurable WebSocket read limit to prevent Out-Of-Memory (OOM) attacks and a query depth limit for the GraphQL endpoint to mitigate resource-exhaustion DoS attacks.
- New `eth_config` Method: Implements EIP-7910, adding the `eth_config` RPC method to provide a standardized way for clients to query chain configuration details.
- Gas Estimator Fix: The `eth_estimateGas` logic is now more robust, correctly handling cases where the initial gas estimate is too high by continuing its search instead of erroring out.
- prestateTracer Optimization: The tracer now includes `codeHash` in its response, allowing for client-side caching and reducing payload sizes.
Other Notable Changes
- A consensus-critical bug in the `modexp` precompile has been fixed.
- The transaction relay peer selection logic has been stabilized to provide more consistent network behavior.
- Foundational work for the Verkle transition continues with the introduction of the `TransitionState` object.
- Build support has been added for Go 1.25.
## What's Changed This is a maintenance release to prepare for the Fusaka release next week. It contains a state history rewrite, fixes for the Osaka devnets, performance improvements, and a few bug fixes. ### Fusaka * Fix: use blob parameters from current header [#32424](https://github.com/ethereum/go-ethereum/pull/32424) * Convert legacy sidecar in Osaka [#32347](https://github.com/ethereum/go-ethereum/pull/32347) ### Core * Stabilize tx relay peer selection [#31714](https://github.com/ethereum/go-ethereum/pull/31714) * Reduced number of allocation when comparing transactions [#31912](https://github.com/ethereum/go-ethereum/pull/31912) * Rework tracer and track origin value of dirty nodes [#32306](https://github.com/ethereum/go-ethereum/pull/32306) * Avoids loading the same blob tx multiple times [#32190](https://github.com/ethereum/go-ethereum/pull/32190) * Fix modexp input check [#32363](https://github.com/ethereum/go-ethereum/pull/32363) * `GetBlockReceipts` also handles pending blocks [#32461](https://github.com/ethereum/go-ethereum/pull/32461) * Tree node prefetching for increased loader performance [#32134](https://github.com/ethereum/go-ethereum/pull/32134) * Parallelized `db inspect` [#32506](https://github.com/ethereum/go-ethereum/pull/32506) ### RPC * Apply precompile overrides in `DoEstimateGas` [#31795](https://github.com/ethereum/go-ethereum/pull/31795) * Fix uncle reward accounting in supply_tracer [#31882](https://github.com/ethereum/go-ethereum/pull/31882) * Checks ErrGasLimitTooHigh in conditions in gas estimator [#32348](https://github.com/ethereum/go-ethereum/pull/32348) * Implement EIP-7910 - eth_config JSON-RPC Method [#32239](https://github.com/ethereum/go-ethereum/pull/32239) * Add SetWebsocketReadLimit in RPC Server [#32279](https://github.com/ethereum/go-ethereum/pull/32279) * graphql: add query depth limit to prevent DoS attacks [#32344](https://github.com/ethereum/go-ethereum/pull/32344) * Adds codeHash to prestateTracer's account structure [#32391](https://github.com/ethereum/go-ethereum/pull/32391) * Remove deprecated method `debug_seedHash` [#32495](https://github.com/ethereum/go-ethereum/pull/32495) ### Others * Introduce the TransitionState object [#31634](https://github.com/ethereum/go-ethereum/pull/31634) and [#32366](https://github.com/ethereum/go-ethereum/pull/32366) * Fix ledger version check for EIP-155 support [#32417](https://github.com/ethereum/go-ethereum/pull/32417) * Fix: don't return an error when a nil peer is found in GetHeader [#32369](https://github.com/ethereum/go-ethereum/pull/32369) * Add support for Go 1.25 [#32425](https://github.com/ethereum/go-ethereum/pull/32425) and [#32412](https://github.com/ethereum/go-ethereum/pull/32412) * Add trie depth-tracking metrics [#32388](https://github.com/ethereum/go-ethereum/pull/32388) and [#32507](https://github.com/ethereum/go-ethereum/pull/32507) * Implement EIP-7864 - binary trees [32365](https://github.com/ethereum/go-ethereum/pull/32365) * Improved ETA calculation [#32521](https://github.com/ethereum/go-ethereum/pull/32521) For a full rundown of the changes please consult the Geth 1.16.3 [release milestone](https://github.com/ethereum/go-ethereum/milestone/192?closed=1). --- As with all our previous releases, you can find the: * Pre-built binaries for all platforms on our [downloads page](https://geth.ethereum.org/downloads/). * Docker images published under [`ethereum/client-go`](https://cloud.docker.com/u/ethereum/repository/docker/ethereum/client-go). * Ubuntu packages in our [Launchpad PPA repository](https://launchpad.net/~ethereum/+archive/ubuntu/ethereum). * OSX packages in our [Homebrew Tap repository](https://github.com/ethereum/homebrew-ethereum).