Releases: ethereum/go-ethereum
Rayingri (v1.14.8)
This is a maintenance release with bug fixes only.
Command changes
- Blobpool related flags in Geth now actually work. (#30203)
- The
evm run
command no longer overwrites the sender account in genesis.json. (#30259) evm run
now allows configuringbaseFeePerGas
in genesis.json. (#30281)
Go API
core/types.Transaction.ChainID
had a bug where it modified the signature for very large ChainID (>= 2^64). (#30157)ethclient.Client.NetworkID
now supports values returned in hex format by the server. (#30263)ethclient/simulated.Backend.AdjustTime
was fixed to apply the correct time divison. (#30138)accounts/abi/bind.TransactOpts
now supports setting an access list for created transactions. (#30195)- The package
p2p/simulations
has been removed. (#30250)
Core
- A snap-sync database corruption related to sync restarts is fixed in this release. (#30258)
eth_call
storage overrides now work as originally intended: if a storage replacement object is specified in the call, previous storage values of the account are cleared. (#30185)- The txpool did not use the transaction's inline sender cache in some cases. (#30208)
- The performance of EVM stack swaps was improved a bit. (#30249)
Networking
- The downloader now takes withdrawals into account when sizing its queue. (#30276)
- The new discovery node revalidation could hot-spin in certain rare scenarios. (#30239)
- Configuring an external IP using
--nat=extip:...
could lead to invalid discovery packets being generated. (#30234)
Build
- github.com/btcsuite/btcd/btcec has been upgraded to resolve a build error caused by upstream API changes. (#30181)
- Previous releases will not build with Go 1.23, but this one will. (#30253)
- This release is built with Go 1.22.6. (#30273)
For a full rundown of the changes please consult the Geth 1.14.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.
Trident (v1.14.7)
This is a hot-fix release for a bug (#30139) which affects only the previous release. Users of v1.14.6 are kindly requested to update.
For a full rundown of the changes please consult the Geth 1.14.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.
Talaria (v1.14.6)
Geth v1.14.6 is a maintenance release, but it does ship with the experimental witness building validation code used in @karalabe's "cross validation" proposal. Note that the engine API part is not included in this release.
Shipped features:
- Add stateless witness builder and (self-)cross validator (#29719, #29807, #29970, #30024)
- Set a 2KB hard limit for p2p handshake messages (#30029)
- Improved display of database statistics (#29948)
Shipped bugfixes:
- Fix issue in which the beacon root contract balance would not be saved in developer mode, causing an error on restart (#29963)
- Fix shutdown crash when geth runs in blsync mode (#29946)
- Fix data races in snapshot access (#30001, #30011)
- Fix out of bounds access in json unmarshalling (#30014)
- Add missing lock in peer discovery (#29960)
For a full rundown of the changes please consult the Geth 1.14.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.
Bothros (v1.14.5)
Geth v1.14.5 is a hotfix release that addresses a regression introduced in v1.14.4, which prevented the node from discovering other peers in certain networking setups (#29944). It is otherwise identical to v1.14.4.
Geth v1.14.4 in a usual maintenance release, but it does ship a 5-7% block import speed improvement. Furthermore, v1.14.4 also finally includes an Ether supply live tracer, that you can enable via --vmtrace supply
. Also please note, the default value for miner tip enforcement was dropped from 1 gwei to 0.001 gwei (block producers can change this via --miner.gasprice
).
Shipped features:
- Reduce the default required minimum miner tip from 1 gwei to 0.001 gwei to cater better for network conditions (#29895).
- Load trie nodes concurrently with trie updates, speeding up block import by 5-7% (#29519, #29768, #29919).
- Introduce an Ether supply tracker as a live chain tracer (#29347).
- Implement Verkle stateless gas accounting (EIP-4762) (#29338).
- Optimise trie dirty tracking to reduce disk loads a bit (#29731).
- Ensure the beacon chain roots system contract is deployed in dev mode (#29655).
- Add an additional snap sync check for data validity before inserting into the database (#29485).
- Improve the discovery protocol's node revalidation (#29572, #29864, #29836).
- Continue working towards pathdb support in archive mode (#29530, #29924).
Shipped bugfixes:
- Fix a gas estimation regression that caused longer runtimes (#29738).
- Fix a potential crash in JSON logging for EVM blocktests (#29795).
- Fix utility commands to support post-merge opcodes (#29799).
- Fix a txpool synchronicity issue in simulated chains (#29876).
- Fix a iteration order when using a trie node iterator (#27838).
- Fix a TCP/UDP discovery port test in cmd/devp2p (#29879).
- Fix IPv6 endpoint determination (#29801, #29827).
For a full rundown of the changes please consult the Geth 1.14.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.
Triodia (v1.14.4)
Geth v1.14.4 in a usual maintenance release, but it does ship a 5-7% block import speed improvement. Furthermore, v1.14.4 also finally includes an Ether supply live tracer, that you can enable via --vmtrace supply
. Also please note, the default value for miner tip enforcement was dropped from 1 gwei to 0.001 gwei (block producers can change this via --miner.gasprice
).
Shipped features:
- Reduce the default required minimum miner tip from 1 gwei to 0.001 gwei to cater better for network conditions (#29895).
- Load trie nodes concurrently with trie updates, speeding up block import by 5-7% (#29519, #29768, #29919).
- Introduce an Ether supply tracker as a live chain tracer (#29347).
- Implement Verkle stateless gas accounting (EIP-4762) (#29338).
- Optimise trie dirty tracking to reduce disk loads a bit (#29731).
- Ensure the beacon chain roots system contract is deployed in dev mode (#29655).
- Add an additional snap sync check for data validity before inserting into the database (#29485).
- Improve the discovery protocol's node revalidation (#29572, #29864, #29836).
- Continue working towards pathdb support in archive mode (#29530, #29924).
Shipped bugfixes:
- Fix a gas estimation regression that caused longer runtimes (#29738).
- Fix a potential crash in JSON logging for EVM blocktests (#29795).
- Fix utility commands to support post-merge opcodes (#29799).
- Fix a txpool synchronicity issue in simulated chains (#29876).
- Fix a iteration order when using a trie node iterator (#27838).
- Fix a TCP/UDP discovery port test in cmd/devp2p (#29879).
- Fix IPv6 endpoint determination (#29801, #29827).
For a full rundown of the changes please consult the Geth 1.14.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.
Fuel Depot (v1.14.3)
We're issuing this (v1.14.3) release to finally publish v1.14 on the Ubuntu PPA. It is otherwise identical to v1.14.2.
This is a maintenance release containing bug-fixes. In case you are wondering where v1.14.1 (and v1.14.2) went, let's just say, the continuous integration gods have not been good to us.
List of changes in detail:
Geth
- When using
geth --dev
with a custom genesis block, the genesis file must now set difficulty and terminal total difficulty to zero. (#29579) - For fork scheduling errors in
geth init
, fork timestamps will now be printed correctly. (#29514) - Certain aspects of state handling are now parallelized resulting in a 5-10% speedup for block processing. (#29681)
RPC
eth_feeHistory
was changed to apply a limit on the number of requested percentiles (#29644)eth_createAccessList
now honors request cancellation and terminates background work (#29686)eth_estimateGas
takes tx blobs into account for low-balance scenarios (#29703)
Tracing
- The live tracing interface has new hooks around EVM system calls (#29355)
- flatCallTracer was fixed to return the correct error result when interrupted (#29623)
Build
- This release is built with Go 1.22.3 (#29725)
- We no longer provide deb packages for Ubunty 14.04 Trusty Tahr (#29651, #29649, #29648, #29647)
- CI builders have been updated to Ubuntu 24.04 Noble Numbat (#29723)
For a full rundown of the changes please consult the Geth 1.14.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.
Ker (v1.14.2)
This is a maintenance release containing bug-fixes. In case you are wondering where v1.14.1 went, let's just say, the continuous integration gods have not been good to us.
List of changes in detail:
Geth
- When using
geth --dev
with a custom genesis block, the genesis file must now set difficulty and terminal total difficulty to zero. (#29579) - For fork scheduling errors in
geth init
, fork timestamps will now be printed correctly. (#29514) - Certain aspects of state handling are now parallelized resulting in a 5-10% speedup for block processing. (#29681)
RPC
eth_feeHistory
was changed to apply a limit on the number of requested percentiles (#29644)eth_createAccessList
now honors request cancellation and terminates background work (#29686)eth_estimateGas
takes tx blobs into account for low-balance scenarios (#29703)
Tracing
- The live tracing interface has new hooks around EVM system calls (#29355)
- flatCallTracer was fixed to return the correct error result when interrupted (#29623)
Build
- This release is built with Go 1.22.3 (#29725)
- We no longer provide deb packages for Ubunty 14.04 Trusty Tahr (#29651, #29649, #29648, #29647)
- CI builders have been updated to Ubuntu 24.04 Noble Numbat (#29723)
For a full rundown of the changes please consult the Geth 1.14.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.
Asteria (v1.14.0)
Geth v1.14.0 (Asteria) is a major release with some juicy new features as well as some breaking changes. Please read through the release notes before updating to it. Whilst it should not adversely impact most users, there're always those rare occurrences.
Highlights
-
Geth v1.14.0 switches over the default state trie representation from
hash
mode topath
mode (i.e.--state.scheme
flipped formhash
topath
) (#29108). This change does not affect Geth instances with pre-existing databases, in the case of which Geth continues to use whatever the existing database's format is. If no previous database exists however, for full nodes, Geth will now default topathdb
. The main advantage is built-in, online historical state pruning; no more runaway state growth.- If you want to force the old behaviour, you can run Geth with
--state.scheme=hash
for now. That said, we will be droppinghash
mode sooner rather than later, so we advise everyone running full nodes to gradually switch, if they haven't yet. - Archive mode support is not yet finalised for
path
mode, so archive nodes will still run inhash
mode. Naturally, hash mode will not be dropped until a fullpath
archive lands and people have enough time to switch to it.
- If you want to force the old behaviour, you can run Geth with
-
Geth v1.14.0 introduces a brand new live-tracing feature, where one or more transaction tracers might be injected into the block processing pipeline, ensuring that tracing and execution happen in lockstep (#29189). Since Go does not have a cross platform, OS native plugin infrastructure, adding live tracers needs to be done at the Geth source code level, and Geth itself subsequently rebuilt. That said, the advantage is that such tracers have full execution flexibility to do whatever they like and however they like. Please see the live-tracer changelog and docs for details.
- Live tracing runs in lockstep with block execution, one waiting for the other. You should never run a live tracer on a validating node, or any other where latency is important. The recommended practice is to have tracers collect and export the bare minimum data needed and do any post-processing in external systems where latency is not relevant.
- The live tracer work required a number of breaking internal API changes. If you had your own native tracers implemented before this change, the changelog contains the necessary steps needed to update your old code for the new APIs.
-
Geth v1.14.0 replaces the completely random transaction propagation paths (in the Ethereum P2P network) with pseudo-random ones, that ensure transactions from the same account follow the same path in the network (as long as no peer churn happens). The purpose is to allow a burst of transactions from the same account to ripple through the network on the same connections, minimising reordering. Whilst this doesn't provide any guarantees, nor does it replace the potential need for more complex routing logic, it should make nonce gaps significantly less likely, reducing the probability of dropped transactions during bursts (#29034).
- This change only applies to networking, so other clients are not required to follow suit. That said, the network would behave more consistently overall if all clients implemented some similar logic (the exact routing algorithm is irrelevant, as long as it's stable in the accounts).
-
Geth v1.14.0 drops support for running pre-merge networks (#29169). This does not mean that Geth will not be able to process or validate pre-merge blocks, rather that starting v1.14.0, Geth must have a consensus client drive it's chain selection. Geth drops the forward-sync mode of operation, where it imports blocks based on PoW (ethash) or PoA (clique) difficulties.
- Non-merged networks will need to stick to Geth v1.13.x until they transition to post-merge. As Ethereum has transitioned towards a post-merge world, we cannot maintain a significant chunk of code that's been dead for 2 years now on mainnet.
- Post-merge networks must be marked so with the
terminalTotalDifficultyPassed: true
field in theirgenesis.json
. This requirement will be dropped (along with even caring at all about this field) in a few releases, but for now this field produces a clear error message for the user of what's wrong with their pre-merge network.
-
Geth v1.14.0 stops automatically constructing the pending block (#28623). Performance wise there is a significant cost to creating a potential pending block, yet most node operators do not care about it. Not even validators need the pending block. This work also drops support for mining/signing a block "off-demand" (i.e. not via the engine API, rather by Geth itself), meaning Clique signing is also removed going forward.
- With Clique mining removed, Geth v1.14.0 cannot be a Clique signer any more. This however goes hand-in-hand with the removal or pre-merge chain selection and synchronisation support described earlier.
- The pending block can still be constructed on demand for now. Whenever an RPC method is called that is based on the pending block, Geth will generate it on the fly and cache it for 1 second for subsequent calls. The first such call will have a few hundred ms execution delay.
-
Geth v1.14.0 removes support for filtering pending logs. This is following the previous change of creating the pending block only on demand. We see next to no value in monitoring the logs of a random subset of transactions that might (but probably mostly will not) end up in the next block. Power users who wish to monitor the transaction pool for MEV (or similar) purposes, should hook into Geth directly and extract the exact data they need, rather than rely on insufficient API endpoints.
-
Geth v1.14.0 ships a beacon chain light client (#28822, #29308, #29335, #29532, #29567). It uses the REST API of beacon nodes and requires the
beacon / light_client namespace
, currently supported by Lodestar and Nimbus (specs).- The beacon light client provides access to consensus layer data, not execution layer data. This currently means that it can follow the beacon chain as a light client and extract the latest head and finalised execution layer block. That can be used to drive a full execution node without running an own beacon node. There is no support yet for a full execution light client.
- Validation and staking is not possible with a beacon light client. Since the sync committee signatures on each beacon head are canonised in the next block, the beacon light client can only follow the chain with one slot delay.
- The beacon light client exists both as a standalone executable and integrated into Geth. The
blsync
executable can drive any execution layer node through the standard engine API or can just do a "test run" printing block numbers and hashes to the console. The integrated mode can do the same inside Geth. If you specify at least one suitable consensus layer REST API endpoint with the--beacon.api
flag, then Geth will run without a beacon node connected through the engine API.
-
Geth v1.14.0 switched to using Go v1.22 by default (#28946), which means we've dropped support for Go v1.20. Geth also started using of new features from Go v1.21 in our codebase, so building with Go v1.20 will probably error from now on. Just a heads up.
Features
- Add the
geth db inspect-history
command to inspect pathdb state history (#29267). - Enable the Cancun hard-fork when running Geth in dev mode (#28829).
- Use beacon chain finality as the marker to move old blocks into ancients (#28683).
- Drop large-contract (500MB+) deletion DoS protection from pathdb post Cancun (#28940).
- Switch Geth's USB library from
libusb
tohid
for simpler hardware wallet support (#28945, #29175, #29176). - Update the
prestateTrancer
to take into account 4844 blobs and their fees (#29168). - Extend the
ethclient
andgethclient
packages with support for 4844 blob fields (#29198). - Detailed block execution metrics are now always reported, deprecating
--metrics.expensive
(#29191). - Avoid a lot of memory allocations while shuffling 4844 blobs within Geth (#29050).
- Switch to using Go's native
log/slog
package instead ofgolang/exp
(#29302). - When computing state roots, apply state updates before deletes to avoid some trie lookups. ([#29201](https://github.com/ethereum/go-ethereum/pull/...
Ontamalca (v1.13.15)
Geth v1.13.15 is a maintenance-release that contains some fixes mainly to avoid snapsync-related data-corruption.
We recommend all users to upgrade to v1.13.15 as soon as possible.
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.
Altaaya (v1.13.14)
Geth v1.13.14 is a small maintenance release with a handful of polishes to the blob pool:
- Disallow blob transactions below the protocol minimum of 1 wei to enter the pool (#29081).
- Reduce the blob pool's max capacity to 2.5GB for the rollout. (#29090).
- Fix gas estimation for blob transactions (#29085).
This release is NOT critical for the Cancun fork, but recommended to make Geth lighter in anticipation to unknown blob load.
Other fixes:
- Support overriding the basefee during tracing (#29051).
- Fix call tracers missing top level logs in top-only mode (#29068).
- Support unlimited gas for
eth_createAccessList
if--gascap=0
(#28846).
For a full rundown of the changes please consult the Geth 1.13.14 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.