Geth v1.16.4 (Bioelectric Infusers) is here!
This release prepares the network for the future by enabling the Osaka (Fusaka) hard fork on several testnets. It also introduces two Blob-Parameter Only (BPO) forks designed to gradually increase blob capacity.
Osaka & BPO Testnet Fork Schedule
This version activates the Osaka fork and two subsequent BPO forks on the following testnets at the specified times:
The BPO forks will increase the network's data blob capacity as follows:
- BPO1: Max blobs/block increases to 15 (target 10).
- BPO2: Max blobs/block increases to 21 (target 14).
Key Highlights & Changes
Other Notable Improvements
<!-- Bioelectric Infusers (v1.16.4) --> This release enables the Osaka (Fusaka) fork on testnets. We also enable two blob-parameter only (BPO) forks for the testnets. - Holesky - Osaka at time `1759308480` (2025-10-01 08:48:00 UTC) - BPO1 at time `1759800000` (2025-10-07 01:20:00 UTC) - BPO2 at time `1760389824` (2025-10-13 21:10:24 UTC) - Sepolia - Osaka at time `1760427360` (2025-10-14 07:36:00 UTC) - BPO1 at time `1761017184` (2025-10-21 03:26:24 UTC) - BPO2 at time `1761607008` (2025-10-27 23:16:48 UTC) - Hoodi - Osaka at time `1761677592` (2025-10-28 18:53:12 UTC) - BPO1 at time `1762365720` (2025-11-05 18:02:00 UTC) - BPO2 at time `1762955544` (2025-11-12 13:52:24 UTC) With BPO1 and BPO2, the blob capacity of these networks will increase as follows: - BPO1: max blobs/block: `15`, target: `10` - BPO2: max blobs/block: `21`, target: `14` As of this release, the default block gas limit is set to **60M gas**. This is the recommended limit that we, as client authors, feel comfortable with. ### CLI commands - `geth snapshot` and related commands no longer fail due to not finding the trie journal file. (#32531) - A regression in `geth snapshot dump` and `geth export-preimages` is resolved. (#32650) - We have added an experimental zkVM 'guest program', `keeper`, to the source tree. (#32543, #32638, #32736) ### RPC - `eth_call` and related operations were fixed to not apply the EIP-7825 per-transaction gas limit when executing under Osaka fork rules. (#32641) - For `eth_getLogs` and other log filtering operations, it is now possible to configure the number of addresses allowed in the filter using the `--rpc.getlogmaxaddrs` flag. (#32327) - Starting Geth with the `--state.size-tracking` option enables collection of precise state size numbers, which can be read using the `debug_stateSize` endpoint. (#32362) - The new `debug_executionWitness` and `debug_executionWitnessByHash` methods create a block witness for stateless execution. (#32216) ### Tracing & ABIGEN - There is a new `CodeChangeV2` hook, with a `CodeChangeReason` parameter. (#32525, #32535) - In certain corner-cases related to SELFDESTRUCT, `OnBalanceChange` was not invoked. (#32526) - `BoundContract` in `accounts/abi/bind/v2` now exposes an `Address` method. (#32559) ### Core - The EVM MODEXP precompiled account has seen some optimizations to improve performance for worst-case inputs. We are especially grateful for @GottfriedHerold's work on improving the underlying math/big library. (#32527, #32553, #32568, #32576) - The blobpool will now perform a migration to the v1 blob proof format around the time of the fork. (#31966, #32577, #32534, #32656, #32716) - `engine_getBlobs` has been updated for improved spec compliance and to deal with the conversion of the blob tx proofs. (#32536, #32538, #32578) - The path-based state database has seen some fixes to prevent database corruption, which could sometimes occur when Geth is terminated abnormally, e.g. by a short stop timeout in Docker. (#32557, #32447) - All `engine` API operations, and `eth_config`, now support BPO-style forks. (#32589, #32615, #32636, #32579) - This release includes some work towards supporting historical state proofs in the path-based archive node implementation. (#32418, #32523, #32649) - Pebble stall counter are now correctly reported for each opened database. (#32563) ### Networking - The node discovery iterator was updated to improved geth startup time and reactivity when the node table becomes empty. (#32517, #32518) - A hang in the 'eth' protocol test suite was resolved. (#32551) ### Build - The KZG proof libraries have been updated to the latest release to fix a vulnerability. Fortunately, the vulnerability would only have become usable after the Osaka fork, so there is no risk for users of current versions. (#32640, #32639) - go-ethereum now requires Go 1.24 or later. (#32584, #32598) - This release is built with Go 1.25.1 (#32593) - execution-spec-tests has been bumped to v5.1.0 (#32592, #32742)