Releases: ethereum/go-ethereum
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.
Operative Package (v1.15.0)
We are proud to announce the Geth 1.15.0 release.
This release contains some breaking changes to the database. Downgrading to v1.14.x requires re-syncing the chain.
Prague Fork
As of this release, Geth implements the Prague fork specifications up to devnet-6.
- EIP-2537 - BLS12-381 curve operations - has seen some updates. (#30978)
- EIP-7623 - Increase calldata cost - was implemented this cycle. (#30946)
- EIP-7685 - Execution layer requests - support was updated. (#30670, #30829, #31103, #31010, #31071, #30938, #31102)
- EIP-7702 - Set EOA account code - was implemented this cycle. Note Geth does not support EIP-7702 transactions in the txpool just yet. (#30078, #30935, #30936, #31054, #31032, #30933, #30982, #31089, #30926)
- EIP-7840 - Blob schedule in EL config - was implemented this cycle. (#31002, #31101, #31128)
Command changes
- The
evm
command has seen lots of updates, improving its command-line interface and internals. (#30633, #30849, #30806, #30927, #30780, #30854, #31055, #30805, #30804, ) - Geth metrics can now be enabled via the TOML config file. This used to require the
--metrics
flag. (#30814) - Similarly, you can now set the NAT traversal method (
--nat
flag) with the config file. (#31041) - The
geth --trace
flag is now called--go-execution-trace
to avoid confusion with EVM tracing. (#30846) - The
bootnode
utility has been removed. (#30813)
RPC & Tracing
- The live tracing Go API has been updated with new hooks and optional EVM revert tracking. See the tracing API changelog for more information. (#30441, #30786, #30830, #30784, #31007)
- RPC method
eth_estimateGas
now supports block overrides likeeth_call
. (#30695) - RPC method
eth_simulateV1
now advances the timestamp by 12 seconds per block. (#30981) - Package
accounts/abi
now supports unpacking Solidity error types. (#30738) - Package
accounts/abi/bind
has new functionsWaitMinedHash
,WaitDeployedHash
. (#30079) - Package
accounts/usbwallet
was updated to support new Ledger firmware and the Ledger Flex device. (#31004) - In package
ethclient/simulated
, a bug was fixed where transactions couldn't be sent afterRollback
of the simulated chain. (#31020) - The struct logger reports the EVM revert reason correctly again. (#31013)
Database
This release introduces a new database schema version. A downgrade to v1.14.x requires a resync.
- The 'total difficulty' of the chain is no longer stored in the database. (#30744)
- The ancient store employs a new strategy for avoiding fsync on each update. This change should improve block import latency on some systems. (#30392)
- Reverse state diffs use a new encoding for future compatibility with the Verkle Tree. (#30107, #31060)
- Internal handling of the SELFDESTRUCT operation has been simplified. This is possible since classic selfdestruct is no longer supported by the EVM after the Cancun fork. (#30752, #30802)
- Work towards a re-implementation of the state snapshot system is ongoing. (#30643, #30650, #30654)
- Work on the Verkle Tree integration is also progressing. (#31036, #30856, #30907, #31097)
Core Library & Networking
-
The fix for CVE-2025-24883 (recent v1.14.13 hotfix release) is also in v1.15.0 (#31100).
-
The transaction pool's notion of "locals" has been changed. This is a breaking change in some ways, and requires some explanation. Geth used to accept transactions at any fee level via RPC, storing them into the node's pool, and marking the sender as "local". When creating a new block (or the pending block), it would choose "local" transactions first. Finally, Geth tracks "local" transactions in a persistent journal file, and restores them on startup. The effect of all this is that once you had sent a transaction to Geth via RPC, it would keep prioritizing the sender account and its transactions (even ones received through p2p).
In Geth v1.15, we are changing this model to a different one. When receiving a transaction via RPC, it is stored into the pool like any other transaction, but it is also inserted into a separate "locals tracker" that keeps reinjecting the tx into the main pool periodically. When building a block, Geth no longer prefers the txpool locals, but you can configure a set of addresses that should get priority using the
--txpool.locals
CLI flag. (#30559, #31127) -
For static nodes (from configuration or RPC
admin_addPeer
), the node URL can contain a DNS name. Geth will now resolve these names when attempting to connect to the peer, instead of at configuration parsing time. This is useful for setting up testing networks in Docker or Kubernetes where the IP address of a node might not be known ahead of time. (#30822) -
Geth can now use the STUN protocol to figure out its own IP. There is a built-in list of public servers, or you can specify your own. Use
--nat=stun
to enable. (#31064) -
Some minor bugs in the p2p protocol implementation got fixed. (#30855, #30918)
Build
- This release is built with Go 1.23.6 (#31130)
- The 'toolchain' line has been removed from go.mod (#31057)
- go-ethereum library functionality should now build and run on wasip1 (#31090)
For a full rundown of the changes please consult the Geth 1.15.0 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.
Schwarzschild (v1.14.13)
This is a security release, fixing a vulnerability (CVE-2025-24883).
Please update your nodes ASAP.
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.
Gei Hinnom (v1.14.12)
This release covers quite a lot of time, and has many changes across the codebase. In particular; changes in tracing and account management, optimizations in database, trie and evm, and, as always bugfixes.
This release removes the personal
RPC namespace. It was already previously deprecated, and has not been accessible by default for nearly two years. We also removed the --unlock
command-line parameter, with a view towards removing key/account management from the geth
binary.
- Key management:
- Builds:
- Tracing:
- invoke OnCodeChange-hook on selfdestruct (#30686, #30497)
- improvements to
flatCallTracer
(#30539) - invoke tx-end hook in runtime helpers (#30711)
disableCode
anddisableStorage
options forprestateTracer
(#30648)- tracing of system calls (#30666)
- Change to how chainconfig is passed to tracers (breaking change) (#30540)
- add
GetTransientState
method to StateDB interface (#30531)
- Signing:
- Bugfixes:
- Database optimizations
- Run pebble in non-sync mode (#30573, #29792). This change makes quite a big difference on certain OS:es, particularly MacOSX/Darwin, where
it has been noted thatfsync
is notoriously slow. - Use to increasing level sizes (#30602), This change makes pebble use larger files, reducing the number of files from 160K to 10K.
- Run pebble in non-sync mode (#30573, #29792). This change makes quite a big difference on certain OS:es, particularly MacOSX/Darwin, where
- Assorted:
- Make jwtsecretflag expand tilde
- Work on verkle (#30672)
- Work on
EIP-7002
andEIP 7251
(#30571) - Implement
EIP-7685
andEIP-6110
(flat requests enconding) (#30425) - Validation of EOF containers (#30418)
- More helpful responses for rejected transactions (#30715)
- Work on cross-execution witness (#30698)
- EVM speed optimizations (#30662, #30629)
- Reduce peak memory usage during reorg (#30600)
- Speed up trie commit via concurrent workers (#30545)
- Fuzzing improvments (#30585)
- Implement new
engine_getBlobsV1
API method (#30537)
For a full rundown of the changes please consult the Geth 1.14.12 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.
Makhaira (v1.14.11)
This is a minor release, with the primary goal of publishing new stable
and latest
docker images. A problem in the CI pipeline prevented the publishing of docker images. We have now resolved the problem, and hope that the v1.14.11
-release will be published as usual on Docker hub.
We have now switched the way the docker images are built, and the -amd64
and -arm64
-tagged versions will no longer be maintained:
alltools-latest-amd64
,alltools-latest-arm64
->alltools-latest
latest-amd64
,latest-arm64
->latest
v1.14.10-amd64
,v1.14.10-arm64
->v1.14.10
NOTE: If you are a docker user on stable
/latest
, there's a high chance that you are not using any of the last two releases. If so, you are advised to look through the release-notes of those releases respectively: v1.14.10 and v1.14.9.
Other changes since v1.14.10 include
- Remove
totalDifficulty
field from RPC, in accordance with spec update, #30386 - Fix flaw in simulated backend #30465
- New method of building multi-platform docker images #30530
- Ability to disable
FINDNODE
liveness checks in tests #30512
For a full rundown of the changes please consult the Geth 1.14.11 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.
Kopis (v1.14.10)
Geth v1.14.10 is a hotfix release to fix a blob pool regression introduced in v1.14.9. Users running the previous bad version should update ASAP. That said, there is no immediate danger to these users, just to the health of blob transaction propagation and inclusion in the network.
Beside the hotfix, this release:
- Ships stateless witness production and verification into the engine API (#30069).
- Use 0 global gas cap as unlimited in simulated calls too (#30474, #30496).
For a full rundown of the changes please consult the Geth 1.14.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.
Aegis (v1.14.9)
This release has been nuked. It broke the blob pool, please do not use it.
This is a maintenance release, but also introduces support for the new multicall spec, which is a much anticipated feature providing a eth_simulateV1
call, that takes a list of blocks and executes them as if calling multiple eth_call
s sequentially. It accepts optional state and precompile overrides, as well as transfer log events. This release also ships with improved verkle support.
Command line
- Remove Goerli flag and config (#30289)
Pectra
- Implement EIP-6110: Supply validator deposits on chain (#29431)
- Implement EIP-2935: Serve historical block hashes from state (#29465)
Core
- Refactorings in the internal journaling (#28880)
- Fix a flaw in which the system halts if snapshot generation is stopped while it's not running (#30040)
- Fix potential out-of-bound issue in mempool (#30430)
- Add state reader abstraction (#29761)
Txpool
- Fetch transactions from a peer in the order they were announced in order to minimize nonce gap, causing blob txs to rejected. A special rule is applied to blob transactions: they are retrieved from the network upon reception of the announcement, as blob transactions are never broadcast over the p2p network (#30125)
Networking
- Add support for quic entry in ENR (#30283)
- fix Write method in metered connection (#30355)
- Enable discv5 by default (#30327)
- Proper handling for count=0 requests (#30305)
- Fix permissions for cloudflare deploy (#30326)
- Dial nodes from discv5 (#30302)
RPC / tracing
- support for
eth_simulateV1
, which allows for the simulation a chain of blocks or simply a processing a sequence of eth_calls in one go. It is the implementation of the latest multicall spec (#27720) - Add timeout to
Client.Unsubscribe
(#30318) - Add coinbase addr to js tracing context (#30231)
Misc
- Handle ABIs with
contract
type parameters (#30315) - Support fixed-size arrays in eip-712 txs (#30175)
- Fix txpool deadlock in
--dev
mode (#30264) - Use post-interop verkle costs (#30409, #30357)
- Verkle witness builder (#30129)
Build
Full Changelog: v1.14.8...v1.14.9
For a full rundown of the changes please consult the Geth 1.14.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.