Releases: ethereum/go-ethereum
Omni-Capacitors (v1.15.10)
This is a bug-fix release that corrects an issue with the new log indexer and configures the beacon chain light client for the Electra fork on mainnet (we forgot about this in v1.15.9).
This release is also suitable for following the Pectra fork on Mainnet.
All changes
- A deadlock condition in the log indexer is resolved. This only affected deployments of Geth in archive mode, and old databases still using LevelDB. (#31708)
- The beacon chain light client is now configured for the Pectra fork on mainnet. (#31706)
- The default block gas limit has been increased to 36M. (#31705)
- ethclient now allows passing an EIP-7702
authorizationList
to calls. (#31198) - A new RPC endpoint
debug_setMemoryLimit
has been added for tweaking Go garbage collector behavior. We do not recommended using this, it's just a facility for debugging Geth. (#31441)
For a full rundown of the changes please consult the Geth 1.15.10 release milestone
As with all our previous releases, you can find the:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Multicapacitor (v1.15.9)
This release enables the Prague execution-layer fork on mainnet.
Prague
As of this release, the Prague fork is scheduled to occur on mainnet at block timestamp 1746612311
(Wed May 07 10:05:11 2025 UTC). As a reminder, the fork contains the following EIPs:
- EIP-2537: Precompile for BLS12-381 curve operations
- EIP-2935: Save historical block hashes in state
- EIP-6110: Supply validator deposits on chain
- EIP-7002: Execution layer triggerable exits
- EIP-7251: Increase the
MAX_EFFECTIVE_BALANCE
- EIP-7549: Move committee index outside Attestation
- EIP-7623: Increase calldata cost
- EIP-7685: General purpose execution layer requests
- EIP-7691: Blob throughput increase
- EIP-7702: Set EOA account code
- EIP-7840: Add blob schedule to EL config files
All changes
- The Prague fork timestamp was added for mainnet. (#31535)
- Transaction-sending RPCs will now add txs to the 'locals' tracker only when they have any chance of inclusion. This is a bit of a revert from the behavior we added in v1.15.4, where APIs such as
eth_sendRawTransaction
would always return a txhash, even if the transaction wasn't includable on chain. (#31618) - If an EVM system call fails during block execution, the block is considered invalid. (#31639)
- An corner-case crash in
eth_feeHistory
related to blob fees is resolved. (#31663) - Several correctness bugs in the new log indexer have been fixed. (#31590, #31680, #31671, #31668, #31642)
- The history pruning implementation was further improved. (#31638, #31636, #31656)
- Geth will now print periodic logs when a non-activated fork is configured. (#31340)
- Geth will now occasionally drop peers at random after being fully synced. (#31476)
- CPU usage of tx propagation has been optimized. (#31657)
- Peer disconnect metrics are improved. (#31629, #31621)
For a full rundown of the changes please consult the Geth 1.15.9 release milestone
As with all our previous releases, you can find the:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Combatives Upgrade (v1.15.8)
This is a bug-fix release with some performance improvements.
Geth
geth import
now applies database and cache flags correctly. (#31577, #31534)- The new log indexer now exports metrics about its operation. (#31511)
- The beacon chain light client,
blsync
now has a feature to export checkpoint files. (#31469)
Core library
- Database writes have been made fully synchronous again. We disabled the use of
fsync
a while ago to improve performance on slow filesystems, but it has lead to reports of instability. The performance hit from enabling data sync is negligible. (#31519) - The transaction pool now takes pending blob transactions into account when limiting pending EIP-7702 authorizations for an account. (#31526)
- A logic race in EIP-7702 transaction validation is resolved. (#31373)
- The blob transaction pool performs less disk reads when sending transaction announcements. (#31433)
- The EVM now has a special fast-path for PUSH2, which is the most common instruction. (#31267)
- The Trezor hardware wallet implementation now supports 32-bit chain IDs. (#17439)
- Geth can now stop syncing history at the PoS merge point. This behavior is not enabled yet. (#31414)
RPC
- When trying to access pruned history, all RPC APIs now return error code 4444. (#31361)
P2P networking
- UPnP support has been improved and some bugs got fixed. (#30265, #31486, #31566)
- The discv5 'talk request' API has been changed to pass
*enode.Node
to handlers. This is a breaking change, but the only known user of this API is the shisui portal network client. (#31075) - A flaw in the recently added discv5 challenge resend logic was fixed. (#31543)
- The eth protocol now properly handles very large
skip
values when processingGetBlockHeaders
messages from peers. This is not a security fix, despite looking like one, it's more about correctness. (#31522)
Build
- This release is built with Go 1.24.2 (#31538)
- Note: due to issues with our build environment, we can no longer provide binary builds for macOS. These may be restored at a later date, hopefully soon. For now, you'll have to install from Homebrew.
- The previous release's git tag, v1.15.7, was published twice, leading to an issue with the Go module cache.
For a full rundown of the changes please consult the Geth 1.15.8 release milestone
As with all our previous releases, you can find the:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Juggernaut Shield (v1.15.7)
This is a bug fix release. We are putting is out specifically to address a critical issue that could break archive node databases.
- Fixed an issue for
--state.scheme=hash
where the log indexer would accidentally delete trie nodes. (#31525) - Fixed an issue with tx submission, where the local pool didn't track pending nonces correctly. (#31496)
- The log indexer will now disable itself when hitting missing receipts in the database. (#31500)
- Another txpool issue reorg issue in
ethclient/simulated.Backend
is fixed in this release. (#31228) - Memory allocation for trie operations has been reduced significantly. (#30932)
eth_createAccessList
now supports state overrides likeeth_call
. (#31497)eth_createAccessList
will now exclude 7702 authorities from the result. (#31336)- The abigen library now correctly forwards access lists to
eth_estimateGas
. (#31394)
For a full rundown of the changes please consult the Geth 1.15.7 release milestone
As with all our previous releases, you can find the:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Mental Focuser (v1.15.6)
π§ Note: we are investigating an issue with this release that affects archive nodes (--gcmode=archive).
If you are running Geth in this mode, please hold off upgrading. π§
This is a feature release, with two exciting upgrades:
-
Log filtering in Geth receives a huge performance upgrade with the introduction of our new 'filtermaps' index. Unlike the previous 'bloombits' index, query performance no longer suffers as the density of logs in a block increases. The new index design is also a step towards a future where filtering results can be proven by the server. See the PR and associated design documents for more information.
In practical terms, the new index is a bit larger than the old one. As before, you can choose the amount of historical blocks to be indexed using the
--history.logs
command-line flag. We have adjusted the default value of this flag to cover one year of history, and the resulting index has a size of ~10GB for Ethereum mainnnet. Indexing of the entire chain with--history.logs=0
will take up ~61GB.Once the index is built, searches will be fast, but note that querying outside of the indexed block range will fall back to a very slow unindexed search. We will continue optimizing log searches in future releases, and welcome your feedback and bug reports in this area. (#31065, #31079, #31080, #31081, #31419, #31429, #31450, #31463, #31455)
-
abigen v2 is finally here. abigen is a tool for creating Go bindings for Solidity contracts. In v1, the generated bindings presented an API for sending transactions, filtering logs, and performing read-only calls as Go methods on the contract object. In the new version, we have updated the interface of the generated code to focus purely on encoding and decoding ABI payloads. Generic helper functions are provided in a library package to enable the same interactions as before, but you can also use your own custom method of signing & sending transactions. Generated bindings are also significantly smaller. (#31379)
Other changes in this release:
RPC
- A regression in
eth_sendRawTransaction
- where transactions with too-low nonce would be accepted by the API - has been fixed. (#31473) eth_call
/estimateGas
RPC methods will now always return error code 3 for reverts. It previously only returned this code when the EVM produced revert data. (#31456)eth_simulateV1
now returns a correct logs bloom value in the simulated block (#31411)eth_simulateV1
supports block overrides for the beacon root and withdrawals (#31304)debug_traceCall
: themovePrecompileTo
override feature should now work correctly (#31348)debug_traceCall
and other related RPC methods now hex-encode the EVM return value. This is a breaking change. (#31216, #31445)ethclient
has a new methodEstimateGasAtBlock
(#27508)
Geth
- Support for the Hoodi testnet has been added. (#31406)
- The beacon chain light client has been updated to support the Electra fork. (#31243, #31470)
geth import
now properly handles Ctrl-C interrupts (#31360)geth --dev
mode will now pre-fund all precompile accounts supported by the Pectra upgrade (#31342)geth --dev
now respects the--miner.pending.feeRecipient
flag (#31316)
Core library
- The performance of transaction signature validation has improved significantly (#31242, #31258, #31434)
- The transaction pool has seen some correctness and performance improvements. (#31430, #31307, #31332)
- We have added a lot of preliminary changes for History Expiry (EIP-4444). There shouldn't be any user-facing consequences of these just yet, just reporting it here since this area was a big focus this cycle. (#31424, #31355, #31362, #31383, #31365, #31117, #31356, #31384, #31393)
For a full rundown of the changes please consult the Geth 1.15.6 release milestone
As with all our previous releases, you can find the:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Stronghold Package (v1.15.5)
Alright π₯² This is a hotfix release for an issue on the Sepolia testnet. Shortly after the Pectra fork activation, an issue in deposit contract logs parsing was discovered. Sepolia has a custom version of the deposit contract that also implements ERC-20, and thus unexpected log events may be created by transactions to it. This issue affects all Ethereum execution clients.
The Sepolia testnet may take a short while to recover while the update is adopted by nodes. An incident report will be published once the network has fully recovered. β€οΈβπ©Ή
Other changes in this release:
- In output of
debug_traceTransaction
, the "memory" and "storage" fields will be omitted if empty. (#31289) - This release is built with Go 1.24.1 (#31313)
For a full rundown of the changes please consult the Geth 1.15.5 release milestone
As with all our previous releases, you can find the:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Commando Package (v1.15.4)
This is a bug fix release.
Note: you need to upgrade to v1.15.3 or this release to be compatible with the Pectra fork on the Sepolia network (activates Wed, Mar 5 at 07:29:36 UTC).
- Fixed a v1.15.0 regression in
eth_feeHistory
that caused incorrectblobGasRatio
return values. (#31246, #31270) - A v1.15.0 regression in RPC transaction submission has been fixed: if a transaction did not pass txpool verification (e.g. low fees), an error was returned by RPC, but the transaction would be added to the local pool anyway. This is now fixed and no error will be returned by the API in this case. (#31202)
- Txpool logic was reworked to avoid an error log flood about EIP-7702 authorities. (#31249)
- Certain invalid blob transactions no longer cause disconnect issues in the p2p layer. (#31219)
- ethclient now provides a
BlobBaseFee
method to request the current blob basefee. (#31290) - The PPA package build was fixed after being broken in v1.15.3 by the upgrade to Go 1.24. (#31282, #31283)
For a full rundown of the changes please consult the Geth 1.15.4 release milestone
As with all our previous releases, you can find the:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Expert Package (v1.15.3)
Oh look, another hotfix release! We are issuing this Geth release to correct the predefined fork configuration of the Holesky and Sepolia testnets. The deposit contract address was missing in the configuration for these networks, causing a chain validation failure.
This issue was discovered on the Holesky network after it had already forked into Pectra (Prague). As a reminder, the Sepolia network will fork to Pectra at slot 7118848 (Wed, Mar 5 at 07:29:36 UTC). You need to upgrade to Geth v1.15.3 until then in order to use the testnet after the fork.
All changes in this release:
- Deposit contract addresses are now defined in testnet fork configuration. (#31247)
- The
eth_simulateV1
RPC method was improved to match regular block processing semantics. (#31176, #31122) - A peer-finding issue with discovery v5 is fixed in this release. (#31251)
- An invalid
--discovery.dns
flag value will now cause an error at Geth startup. (#31233) - Geth
--dev
mode can now handle custom genesis configs with forks older than the latest. (#31084) - The EVM assembler/disassembler (package
core/asm
) has been removed. (#31211) - Encoding of nested byte arrays in EIP-712 signature processing was fixed. (#31049)
- The cloudflare-go dependency has been updated to resolve a dependabot warning. (#31240)
- This release is built with Go 1.24.0 (#31159)
For a full rundown of the changes please consult the Geth 1.15.3 release milestone
As with all our previous releases, you can find the:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Survivor Loadout (v1.15.2)
This release fixes a few regressions. In particular, it restores block building on mainnet, which was broken in v1.15.1.
Note: a regression in the Prague fork implementation was discovered and fixed in a follow-up release. Please upgrade to at least v1.15.3 to follow the fork.
All changes in this release:
- Block building on mainnet works again. (#31191)
- Discv5 and DNS peer discovery has been restored. It was accidentally disabled in v1.14.9. (#31185)
- An edge-case for
geth dumpconfig
related to theP2P.NAT
setting in TOML is fixed. (#31192)
For a full rundown of the changes please consult the Geth 1.15.2 release milestone
As with all our previous releases, you can find the:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Engineering Kit (v1.15.1)
This release enables the Prague fork for the Holesky and Sepolia testnets. It is a required upgrade if you want to participate in these networks.
Note: a regression in the Prague fork implementation was discovered and fixed in a follow-up release. Please upgrade to at least v1.15.3 to follow the fork.
The fork is set to activate at
- Holesky slot: 3710976, timestamp: Mon, Feb 24 at 21:55:12 UTC
- Sepolia slot: 7118848, timestamp: Wed, Mar 5 at 07:29:36 UTC
Other user-facing changes in this release:
- Support for EIP-7702 transactions has been enabled in the transaction pool. (#31073)
- A v1.15.0 regression was identified in genesis handling for custom networks, related to the new
blobSchedule
setting. Geth v1.15.1 has been updated no longer crash in this case, and we will have an improved fix in v1.15.2 (#31171) - A v1.15.0 regression in the
evm
command related to state dumps has been fixed. (#31158) - A v1.15.0 regression with the ancient store in read-only mode has been fixed. (#31173)
- A crash in
debug_getRaw*
RPC methods has been fixed. (#31157) - The supranational/blst dependency has been upgraded to v0.3.14 in order to allow building Geth with Go 1.24. (#31165)
For a full rundown of the changes please consult the Geth 1.15.1 release milestone
As with all our previous releases, you can find the:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.