Go implementation of the Ethereum protocol
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.
Geth v1.14.0 switches over the default state trie representation from hash
mode to path
mode (i.e. --state.scheme
flipped form hash
to path
) (#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 to pathdb
. The main advantage is built-in, online historical state pruning; no more runaway state growth.
--state.scheme=hash
for now. That said, we will be dropping hash
mode sooner rather than later, so we advise everyone running full nodes to gradually switch, if they haven't yet.path
mode, so archive nodes will still run in hash
mode. Naturally, hash mode will not be dropped until a full path
archive lands and people have enough time to switch to it.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.
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).
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.
terminalTotalDifficultyPassed: true
field in their genesis.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.
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).
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.
geth db inspect-history
command to inspect pathdb state history (#29267).libusb
to hid
for simpler hardware wallet support (#28945, #29175, #29176).prestateTrancer
to take into account 4844 blobs and their fees (#29168).ethclient
and gethclient
packages with support for 4844 blob fields (#29198).--metrics.expensive
(#29191).log/slog
package instead of golang/exp
(#29302).kilic
to gnark
(#29441).pebble
is overloaded (#29478).eth_blobBaseFee
RPC method, extend eth_feeHistory
with blobs (#29140).geth dump
and geth snapshot dump
(#29100).devp2p
command to not ignore specified bootnodes (#29091).prestateTracer
to return the correct nonce for contract creations (#29099).devp2p
command (#29257).hashdb
mode (#29341).GetClientVersion
(#29351).We'd also like to shout out to a very high number of authors sending many nitpick PRs. Whilst we are not entirely sure about the intent behind these PRs (commit farming and all), we are nonetheless happy that the Geth codebase gets better.
For a full rundown of the changes please consult the Geth 1.14.0 release milestone.
As with all our previous releases, you can find the:
ethereum/client-go
.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:
ethereum/client-go
.Geth v1.13.14 is a small maintenance release with a handful of polishes to the blob pool:
This release is NOT critical for the Cancun fork, but recommended to make Geth lighter in anticipation to unknown blob load.
Other fixes:
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:
ethereum/client-go
.This is a minor release with fixes for several issues related to the upcoming Cancun mainnet fork. As such, it is recommended for all mainnet users.
Changes in this release:
eth_fillTransaction
has seen some bug fixes related to blob transactions as well. (#28929, #29037)getClientVersionV1
on the Engine API endpoint. (#28915, #28994)Go API changes:
ethereum.CallMsg
now contains EIP-4844 related fields (#28989)core.GenesisAlloc
is now available from package core/types
. We hope this change will reduce external dependencies on package core
. (#29003)For a full rundown of the changes please consult the Geth 1.13.13 release milestone.
As with all our previous releases, you can find the:
ethereum/client-go
.This release embeds the mainnet fork number for Cancun, scheduled to go live on 13th March, 2024 (unix 1710338135
). The specification can be read here, and it contains the following changes:
To go along Cancun, we're providing refreshed Grafana dashboards:
Other than that, the following assorted fixes and features are included in this release:
era
format. The era
format is meant to provide a cross-client archive format
for block data (#26621, #28959)For a full rundown of the changes please consult the Geth 1.13.12 release milestone.
As with all our previous releases, you can find the:
ethereum/client-go
.This release fixes a few bugs and enables the Cancun upgrade for the Sepolia and Holesky networks; Sepolia will upgrade on Jan 31, and Holesky on Feb 7, and naturally this is a required upgrade if you intend to follow either chain.
eth_syncing
is slightly changed, so that it now
does reports true
until transaction indexing is finished. (#28703)rlpdump
: add -pos
flag for displaying byte positions (#28785)For a full rundown of the changes please consult the Geth 1.13.11 release milestone.
As with all our previous releases, you can find the:
ethereum/client-go
.This release is equivalent to v1.13.9, just contains a version bump. The reason is that a bad commit was tagged on 1.13.9 originally and whilst it was untagged and fixed, some caches (Go's package manager (go mod
)) managed to store the temporary bad version. As there is no way for us to flush the bad version out, it's cleaner to tag a next version instead. Apologies about the mess.
This release fixes a few issues and enables the Cancun upgrade for the Goerli network at block timestamp 1705473120 (#28719) which is 6:32:am 17. Jan. 2024 UTC.
:warning: If you are running Goerli, this is a required update!
Apart from the Goerli configuration update, we have a few other changes.
accounts/abi/backends
was rewritten. The improved version is available from the new package ethclient/simulated
. A backwards-compatibility wrapper remains in the old location. (#28202)"error"
. (#28774, #28780)log
for consumers of the geth library (#28747)geth removedb
can now be run non-interactively (#28725)currentExcessBlobGas
to the state tests for better coverage of state tests (#28735)For a full rundown of the changes please consult the Geth 1.13.9 release milestone.
As with all our previous releases, you can find the:
ethereum/client-go
.This release fixes a few issues and enables the Cancun upgrade for the Goerli network at block timestamp 1705473120 (#28719) which is 6:32:am 17. Jan. 2024 UTC.
:warning: If you are running Goerli, this is a required update!
Apart from the Goerli configuration update, we have a few other changes.
accounts/abi/backends
was rewritten. The improved version is available from the new package ethclient/simulated
. A backwards-compatibility wrapper remains in the old location. (#28202)"error"
. (#28774, #28780)log
for consumers of the geth library (#28747)geth removedb
can now be run non-interactively (#28725)currentExcessBlobGas
to the state tests for better coverage of state tests (#28735)For a full rundown of the changes please consult the Geth 1.13.9 release milestone.
As with all our previous releases, you can find the:
ethereum/client-go
.This is a hotfix release for a regression which affects v1.13.6 and v1.13.7: if the node is shut down during sync, the node will refuse to start, with the error message Fatal: Failed to register the Ethereum service: waiting for sync
(#28718, #28724).
Please also see the release notes for v1.13.6 and v1.13.7
For a full rundown of the changes please consult the Geth 1.13.8 release milestone.
As with all our previous releases, you can find the:
ethereum/client-go
.We're issuing this release to fix an issue with our build pipeline. There are also some other changes:
eth_sendTransaction
RPC method now behaves more correctly for low-fee transactions. (#27834)For a full rundown of the changes please consult the Geth 1.13.7 release milestone.
As with all our previous releases, you can find the:
ethereum/client-go
.