Update module github.com/ethereum/go-ethereum to v1.14.11
This MR contains the following updates:
Package | Type | Update | Change |
---|---|---|---|
github.com/ethereum/go-ethereum | require | minor |
v1.10.26 -> v1.14.11
|
⚠ ️ WarningSome dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
ethereum/go-ethereum (github.com/ethereum/go-ethereum)
v1.14.11
: 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.
v1.14.10
: 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.
v1.14.9
: 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 (https://github.com/ethereum/go-ethereum/pull/30289)
Pectra
- Implement EIP-6110: Supply validator deposits on chain (https://github.com/ethereum/go-ethereum/pull/29431)
- Implement EIP-2935: Serve historical block hashes from state (https://github.com/ethereum/go-ethereum/pull/29465)
Core
- Refactorings in the internal journaling (https://github.com/ethereum/go-ethereum/pull/28880)
- Fix a flaw in which the system halts if snapshot generation is stopped while it's not running (https://github.com/ethereum/go-ethereum/pull/30040)
- Fix potential out-of-bound issue in mempool (https://github.com/ethereum/go-ethereum/pull/30430)
- Add state reader abstraction (https://github.com/ethereum/go-ethereum/pull/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 (https://github.com/ethereum/go-ethereum/pull/30125)
Networking
- Add support for quic entry in ENR (https://github.com/ethereum/go-ethereum/pull/30283)
- fix Write method in metered connection (https://github.com/ethereum/go-ethereum/pull/30355)
- Enable discv5 by default (https://github.com/ethereum/go-ethereum/pull/30327)
- Proper handling for count=0 requests (https://github.com/ethereum/go-ethereum/pull/30305)
- Fix permissions for cloudflare deploy (https://github.com/ethereum/go-ethereum/pull/30326)
- Dial nodes from discv5 (https://github.com/ethereum/go-ethereum/pull/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 (https://github.com/ethereum/go-ethereum/pull/27720) - Add timeout to
Client.Unsubscribe
(https://github.com/ethereum/go-ethereum/pull/30318) - Add coinbase addr to js tracing context (https://github.com/ethereum/go-ethereum/pull/30231)
Misc
- Handle ABIs with
contract
type parameters (https://github.com/ethereum/go-ethereum/pull/30315) - Support fixed-size arrays in eip-712 txs (https://github.com/ethereum/go-ethereum/pull/30175)
- Fix txpool deadlock in
--dev
mode (https://github.com/ethereum/go-ethereum/pull/30264) - Use post-interop verkle costs (https://github.com/ethereum/go-ethereum/pull/30409, https://github.com/ethereum/go-ethereum/pull/30357)
- Verkle witness builder (https://github.com/ethereum/go-ethereum/pull/30129)
Build
- Work towards reproducible builds (https://github.com/ethereum/go-ethereum/pull/30344, https://github.com/ethereum/go-ethereum/pull/30342, #30346, #30325, #30321, #30320, #29723)
Full Changelog: https://github.com/ethereum/go-ethereum/compare/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.
v1.14.8
: 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.
v1.14.7
: 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.
v1.14.6
: 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.
v1.14.5
: 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.
v1.14.4
: 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.
v1.14.3
: 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.
v1.14.2
: 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.
v1.14.0
: 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).
- Track not only total peer count, but also how many are inbound or outbound (#29424).
- Add support for signing blob transactions (#28976, #29470).
- Surface max initcode exceeded errors from the VM to outer callers (#29354).
- Update the EVM to reject contract creation on top of non-empty storage (#28912).
- Switch over the BLS implementation from
kilic
tognark
(#29441). - Start emitting performance degradation warnings if
pebble
is overloaded (#29478). - Add
eth_blobBaseFee
RPC method, extendeth_feeHistory
with blobs (#29140).
Bugfixes
- Shave an allocation off of pathdb trie writes caused by a bad initial buffer size (#29106).
- Fix a crash in dev mode using pathdb when rewinding more than 128 blocks (#29107).
- Fix some non-conformance issues in the engine API's error returns (#29115).
- Fix a too early db close in
geth dump
andgeth snapshot dump
(#29100). - Fix the
devp2p
command to not ignore specified bootnodes (#29091). - Fix the
prestateTracer
to return the correct nonce for contract creations (#29099). - Fix blob fee formatting on RPC output from decimal to hexadecimal (#29166).
- Fix the blob pool tx acceptance error if it is already known vs underprices (#29210).
- Fix a few Windows file path joining issues in various go-ethereum utilities (#29227, #29479, #29489).
- Fix a data race when tracing a block via the JavaScript tracers (#29238).
- Fix a number of chain rewinding corner-cases after crashes (#29196, #29245).
- Fix an ENR RLP decoding issue in the
devp2p
command (#29257). - Fix withdrawal collection for simulated chains and dev mode (#29344).
- Fix a snap sync corner-case in
hashdb
mode (#29341). - Fix an engine API field name mismatch for
GetClientVersion
(#29351). - Fix a maximum unix socket path length check on macos (#29385).
- Fix an issue in the blob-pool that prevented Geth to start after a crash (#29451).
- Fix an issue that caused the JSON loggers to discard some log level (#29471).
- Fix the (now post-merge) genesis block difficulty in dev mode (#29469).
- Fix the precompile addresses of BLS ops (not live code yet) (#29445).
- Fix a data race that sometimes returned reorged receipts (#29343).
- Fix a snap-sync restart quirk that sometimes resulted in redownloading some data (#29378).
- Fix a snap-sync restart quirk that sometimes resulted in corrupting some data (#29313).
- Fix ancient header reader to hard cap at 2MB (network soft limit) (#29534).
- Fix the topic filtering to enforce some sanity nesting limits (#29535).
We'd also like to shout out to a very high number of authors sending many nitpick MRs. Whilst we are not entirely sure about the intent behind these MRs (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:
- 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.
v1.13.15
: 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.
v1.13.14
: 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.
v1.13.13
: Alsages (v1.13.13)
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:
- Block-building performance with blob transactions has been improved a lot. (#29026, #29008, #29005)
- A corner case in the EVM related to out-of-order fork scheduling has been fixed. (#29023)
-
eth_fillTransaction
has seen some bug fixes related to blob transactions as well. (#28929, #29037) - A rare panic in the ethstats client related to chain reorgs is resolved. (#29020)
- The blobpool database will now recover from disk corruption faults instead of crashing geth on startup. (#29001)
- Geth now implements
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 packagecore/types
. We hope this change will reduce external dependencies on packagecore
. (#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:
- 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.
v1.13.12
: Edolus (v1.13.12)
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:
- EIP-1153: Transient storage opcodes
- EIP-4788: Beacon block root in the EVM
- EIP-4844: Shard Blob Transactions
- EIP-5656: MCOPY - Memory copying instruction
- EIP-6780: SELFDESTRUCT only in same transaction
- EIP-7516: BLOBBASEFEE opcode
To go along Cancun, we're providing refreshed Grafana dashboards:
Other than that, the following assorted fixes and features are included in this release:
- Initial implementation of the
era
format. Theera
format is meant to provide a cross-client archive format for block data (#26621, #28959) - Make rpc request limits configurable (#28948)
- Fix memory-leak with blob transactions (#28917)
- Stricter adherence to engine api spec (#28882)
- Fix enforcement of minimum miner tip (#28933)
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:
- 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.
v1.13.11
: Tremanre (v1.13.11)
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.
- Enable Cancun on Sepolia and Holesky, plus Cancun-related changes (#28834, #28246, #28230, #28827)
- Support EIP-4844 transactions in API-methods (#28786)
- Change how transaction indexing operates. As of 1.13.11, the behaviour of
eth_syncing
is slightly changed, so that it now does reportstrue
until transaction indexing is finished. (#28703) -
rlpdump
: add-pos
flag for displaying byte positions (#28785) - Fixes logging configuration (#28801)
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:
- 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.
v1.13.10
: Sharjila B (v1.13.10)
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 1705473
(#28719) which is 6:32:am 17. Jan. 2024 UTC.
Apart from the Goerli configuration update, we have a few other changes.
- The 'simulated backend' in package
accounts/abi/backends
was rewritten. The improved version is available from the new packageethclient/simulated
. A backwards-compatibility wrapper remains in the old location. (#28202) - Fix ABI-encoding of negative big.Int in topics (#28764)
- In JSON logging output, the "error" level is now correctly emitted as
"error"
. (#28774, #28780) - Fixed an issue with configuration of stdlib package
log
for consumers of the geth library (#28747) -
geth removedb
can now be run non-interactively (#28725) - We're building a package for ubuntu 23.10: mantic minotaur now (#28728)
Testing
- Add
currentExcessBlobGas
to the state tests for better coverage of state tests (#28735) - Fixed an issue in t8n regarding blob gas usage (#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:
- 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.
v1.13.9
: Sharjila (v1.13.9)
This release fixes a few issues and enables the Cancun upgrade for the Goerli network at block timestamp 1705473
(#28719) which is 6:32:am 17. Jan. 2024 UTC.
Apart from the Goerli configuration update, we have a few other changes.
- The 'simulated backend' in package
accounts/abi/backends
was rewritten. The improved version is available from the new packageethclient/simulated
. A backwards-compatibility wrapper remains in the old location. (#28202) - Fix ABI-encoding of negative big.Int in topics (#28764)
- In JSON logging output, the "error" level is now correctly emitted as
"error"
. (#28774, #28780) - Fixed an issue with configuration of stdlib package
log
for consumers of the geth library (#28747) -
geth removedb
can now be run non-interactively (#28725) - We're building a package for ubuntu 23.10: mantic minotaur now (#28728)
Testing
- Add
currentExcessBlobGas
to the state tests for better coverage of state tests (#28735) - Fixed an issue in t8n regarding blob gas usage (#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:
- 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.
v1.13.8
: Patavig (v1.13.8)
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:
- 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.
v1.13.7
: Fargeluse (v1.13.7)
We're issuing this release to fix an issue with our build pipeline. There are also some other changes:
- The
eth_sendTransaction
RPC method now behaves more correctly for low-fee transactions. (#27834) - We have upgraded the golang.org/x/crypto module dependency. The Go team has issued a new version to fix a vulnerability in the ssh package. While we do not use this package, we have upgraded the dependency in order to stop dependabot warnings. (#28702)
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:
- 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.
v1.13.6
: Porolan (v1.13.6)
Geth v1.13.6 is a scheduled maintenance release, but it also contains some changes which might affect node operators, concerning logging.
Gas estimation changes
The gas estimator was heavily reworked (#28600, #28618). The new version runs quite a bit faster (normally completing in 7-8 attempts rather than 18-20). However, the results have an error ratio of 1.5%
, and the estimation outcome won't always be deterministic.
Logging changes
In the absence of an 'official' Go logging framework, go-ethereum has, for a very long time, used a custom in-house logger. However, just such an 'official' Go logging framework has now arrived, with the slog
package.
As of v1.13.6
, geth now uses slog
, which will affect Geth users in different ways.
Main changes are as follows:
- Verbosity level constants are changed to match slog constant values. Internal translation is done to make this opaque to the user and backwards compatible with existing
--verbosity
and--vmodule
options. -
--log.backtraceat
and--log.debug
are removed. - Removes interface
log.Format
and the methodlog.FormatFunc
, - Unexports
TerminalHandler.TerminalFormat
formatting methods (renamed toTerminalHandler.format
) - Removes the notion of
log.Lazy
values
The external-facing API is largely the same as the existing Geth logger. Method signatures remain unchanged. A small semantic difference is that a Handler
can only be set once per Logger
and not changed dynamically. This just means that a new logger must be instantiated every time the handler of the root logger is changed.
For users of the github.com/ethereum/go-ethereum/log
package: If you were using this package for your own project, you will need to change the initialization. If you previously did
log.Root().SetHandler(log.LvlFilterHandler(log.LvlInfo, log.StreamHandler(os.Stderr, log.TerminalFormat(true))))
You now instead need to do
log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelInfo, true)))
The lazy handler was useful in the old log package, since it could defer the evaluation of costly attributes until later in the log pipeline. Thus, if the logging was done at 'Trace', we could skip evaluation if logging only was set to 'Info'. With the move to slog, this way of deferring evaluation is no longer needed, since slog introduced 'Enabled'. Thus the caller can do the evaluate-or-not decision at the callsite, which is much more straight-forward than dealing with lazy reflect-based evaluation.
See more about reasoning here: https://github.com/ethereum/go-ethereum/issues/28558#issuecomment-1820606613
More detailed information can be found in the MRs #28187, #28621, #28622 )
Other changes
- Fixes a database corruption issue that could occur during state healing (#28595)
- Fixes an issue where node liveness was not always verified correctly in discv5 (#28686)
- Fix so state-dump can be performed after test execution (#28650, #28504)
- Fix a
ns/µs
mismatch in metrics for rpc-methods (#28649) - Fix a bug with wrong priority for
HTTPHost
,WSHost
flags (#28669) - Fix type inconsistencies in tracer framework (#28488)
- Add contextual information to errors returned by abi unpack (#28529)
- Make
evm t8n
support custom tracers (#28557)
For a full rundown of the changes please consult the Geth 1.13.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.
v1.13.5
: Carbonaceous (v1.13.5)
Geth v1.13.5 is a scheduled maintenance release fixing a potential data corruption in path scheme which could occur due to a power failure (i.e. entire OS / machine crash).
- Extend
ethclient
and thesimulated
backend to alloweth_call
against specific block hashes (#28084). - Downgrade annoying stale transaction propagation logs from warning to debug (#28364).
- Switch to the new KZG trusted setup parameters (#28383).
- Return an error on GraphQL if querying invalid block ranges (#28393, #28412).
- Start publishing Apple Silicon pre-built binaries (#28474, #28475).
And bugfixes:
- Fix a number of corner-cases in path scheme state management (#28198, #28426, #28483).
- Fix an issue when allocating excessively large Pebble caches (#28444).
- Fix a potential snap sync issue with the path based storage (#28327).
- Fix ethclient to properly forwarding explicit 1559 gas caps (#28462).
- Fix gas estimation for 0 priced txs accessing the basefee (#28470).
- Fix an issue where resubscribing to events would hang (#28359).
- Fix ethstats transaction count report regressiob (#28398).
- Fix negative number encoding in ethclient/rpc (#28358).
- Fix GraphQL content type in the response (#28417).
For a full rundown of the changes please consult the Geth 1.13.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.
v1.13.4
: Archanes (v1.13.4)
Geth v1.13.4 is a non-urgent hotfix release. The previous version of Geth (v1.13.3) introduced a warning log for bad transaction announcements, and on mainnet it generated too much logging noise due to a protocol violation in Erigon. To prevent overwhelming logging systems, Geth v1.13.4 lower the log to a more reasonable level until the bug in Erigon is fixed #28356.
Apart from the above reason, the release contains:
- Fix a snap sync corner-case that could cause a hang by a maliciously constructed contract storage (#28306).
- Update various dependencies to unstick versions of Go libs (#28329, #28333, #28334, #28332, #28336).
- Enable Pebble database support on 32bit platforms and on OpenBSD too (#28335).
- Fix returning the correct code hash for eth_getProof with empty storage (#28357).
- Simplify trie range prover for some upcoming snap sync optimisations (#28311).
- Fix a timeout mechanism in the transaction fetcher (#28220).
For a full rundown of the changes please consult the Geth 1.13.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.
v1.13.3
: Armeni (v1.13.3)
Geth v1.13.3 is a scheduled maintenance release with various small additions and an important Pebble database fix.
- Update Pebble to fix an occasional IO and CPU runaway, adding some debugging capabilities too (#28224, #28070).
- Support full syncing to a specific hash without a beacon client via a
--synctarget
(#28209). - Allow configuring websocket message limits via the Go RPC client (#27801).
- Drop support for
eth/66
(Cancun will requireeth/68
anyway) (#28239). - Lower
snap
missingeth
protocol warning to debug level (#28249). - Enforce transaction metadata announcements in
eth/68
(#28261).
Features related to the Cancun hardfork:
- Implement the
BLOBFEE
opcode for the upcoming Cancun hard fork (#28098). - Enable blob transaction propagation and mining in Cancun networks (#28243).
- Start throttling transaction retrievals to prepare for blobs in Cancun (#28304).
For a full rundown of the changes please consult the Geth 1.13.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.
v1.13.2
: Phaistos (v1.13.2)
Geth v1.13.2 is a bugfix release for the 1.13 family as well as contains the Holesky testnet relaunch.
Note, if you have previously ran Geth with the old Holesky testnet configs, the new version will probably fail to start with a genesis hash mismatch error. You will need to manually delete your holesky/chaindata
folder and restart. Geth did not implement special code for cleaning up the failed launch of the testnet.
- Fix various pathdb corruption corner-cases during snap sync node restart (#28171, #28163).
- Reconfigure the Holesky testnet with an updated genesis (#28191, #28192, #28193).
- Remove the rollback mechanism from snap sync, unneeded post-merge (#28147).
- Make the
block
parameter ineth_call
optional, defaulting tolatest
(#28165). - Forget transactions previously marked underpriced after 5 minutes (#28097).
- Fix JSON marshalling issue from
ethclient
retrieving block receipts (#28087). - Fix
--bootnodes
flag if the list is also configured in the toml file (#28095).
For a full rundown of the changes please consult the Geth 1.13.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.
v1.13.1
: Zakros (v1.13.1)
Geth v1.13.1 is a hotfix release for v1.13.0.
It fixes the following issues:
- Fix the active fork detection on the engine API, causing the signer to create invalid blocks (#28135).
- Fix a db corruption in
path
scheme caused by a weirdly restarted snap sync (#28124, #28126). - Fix
geth db inspect
command running against oldhash
scheme databases (#28108). - Fix an effective gas price calculation regression on the RPC APIs (#28130).
Apart from the fixes, v1.13.1 introduces support for configuring Geth via environmental variables (#28103, #28119)!
For a full rundown of the changes please consult the Geth 1.13.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.
v1.13.0
: Therum (v1.13.0)
Geth v1.13.0 is a major milestone in the lifetime of Geth, bits and bobs being in development for around 6 years now. Since a release note cannot do it justice, please see our Geth v1.13.0 release blog post.
Still, just to quickly recap, Geth v1.13.0 finally ships a new database model which supports proper, full pruning of historical states; meaning you will never need to take your node offline again to resync or to manually prune. The new database model is optional for now (you need to enable it via --state.scheme=path
) and does require resyncing the state, since we need to store it completely different (you can keep your ancients, no need to resync the chain too).
The path database will become the default eventually, but for safety reasons, we're keeping it opt-in for the moment. The old database model is not going away soon, though long term - unless there's something fundamentally wrong with the path db - it will. As for archive node users, we're working on a new model there too, but it does need a bit more work on top, so that's for another release.
The all important disclaimer: Geth's new path-based storage is considered stable and production ready, but was obviously not battle tested yet outside of the team. Everyone is welcome to use it, but if you have significant risks if your node crashes or goes out of consensus, you might want to wait a bit to see if anyone with a lower risk profile hits any issues.
Apart from the pruning work, the release contains:
- Built in support for the Holešky (Holešovice) testnet (#28007).
- Index transactions even if no blocks are received (#27847).
- Expose Geth version metadata into the metrics (#24877).
- Optimise
eth_estimateGas
to do fewer runs (#27710). - Add
eth_getBlockReceipts
RPC API call (#27702). - Support unpacking Solidity panic events (#27868).
- Reject GraphQL block queries where both number and hash is specified (#27876).
- Increase batch limits for RPC calls on the authenticated endpoint (#27924).
- Optimise logging library to avoid expensive call stack lookups (#28069).
And bugfixes:
- Fix forkid computation for genesis-merged non-zero timestamp networks (#27895, #28034).
- Fix a potential data race in the websocket ping/pong mechanism (#27733).
- Fix js tracers to return the gas price in base 16, not base 10 (#27903).
- Fix finalized block number in dev (
--dev
) mode (#27886).
For a full rundown of the changes please consult the Geth 1.13.0 release milestone, though do note that the state scheme changes and pruner have been gradually merged over the past year so are not explicitly tagged in this 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.
v1.12.2
: Mawinor (v1.12.2)
Hot on the heels of v1.12.1 comes our next release, fixing some regressions reported by the community.
Here are the changes:
- A crash related to leveldb metrics is resolved (#27904)
- Metrics names used by the blobpool have been changed to be compatible with Prometheus (#27901)
- The c-kzg-4844 and blst libraries have been updated, hopefully fixing some build issues (#27890, #27907, #27910)
- We have also adapted go-ethereum to the latest changes in the 'slices' package provided by the golang.org/x/exp module. The Go authors decided to push an incompatible update, but didn't create a new release of that module, causing build issues when consumers mix-and-match dependency versions. (#27909)
For a full rundown of the changes please consult the Geth 1.12.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.
v1.12.1
: Antibaar (v1.12.1)
Geth v1.12.1 is a maintenance release, albeit a rather large one, since we haven't put out a version since May. This release is a recommended upgrade for all users and contains security-related fixes.
Here's the list of changes:
Cancun fork
Development for the upcoming Cancun hard fork has been a focus in this release cycle. Do note however, that Geth v1.12.1 is not yet ready for Cancun.
- For EIP-4844 'Shard Blob Transactions', this release contains basic type definitions and state transition logic (#27356, #27382, #27392, #27393, #27470, #27721, #27736, #27743, #27767, #27789, #27791, #27793, #27796, #27797, #27825, #27874)
- We have also implemented an entirely new mempool -- the blobpool -- for EIP-4844 transactions. The new pool is backed by an on-disk database and has an overall simpler design than the txpool we use for regular transactions. The blobpool is not yet used by p2p networking and is still being tested in the Cancun devnets. (#26940, #27429, #27463, #27481, #27790, #27822)
- EIP-6780: 'SELFDESTRUCT only in same transaction' (#27189)
- EIP-5656: 'MCOPY instruction' (#26181)
- EIP-1153: 'Transient storage opcodes' was already implemented and is enabled for Cancun (#27663, #27613)
Geth command changes
- The Rinkeby testnet is no longer supported in Geth (#27406)
-
geth --dev
now simulates a PoS-based chain (#27327) -
evm blocktest
can now output structured logs (#27396) - Geth will now configure GOMAXPROCS based on CPU quota settings. This should improve efficiency when running in Docker containers with a CPU core limit applied. (#27506, #27814)
- An IPv6 listening address for can now be configured for HTTP/WS (#27628) (#27635)
RPC/GraphQL API changes
- JSON transactions now have a
yParity
fields, as mandated by the RPC API spec (#27744, #27882) - Legacy transactions now have a
chainID
field in RPC responses, like all other transaction types (#27452) - Block headers returned by RPC no longer report a non-standard
size
field (#27347) -
eth_estimateGas
now supports state overrides likeeth_call
(#27845) -
eth_estimateGas
now handles internal chain reorgs more correctly (#27505) -
eth_getProof
is slight more efficient, and will now return a response in the canonical encoding even for off-spec input parameters (#27309, #27310) -
eth_getTransactionReceipt
now returnsnull
when the transaction is not available. It used return an error in that case. (#27712) -
debug_storageRangeAt
now takes a block hash or number as parameter (#27328) - The new
debug_getTrieFlushInterval
method reports the internal state saving interval (#27303) - A crash in the prestate tracer is resolved (#27691)
- Structured EVM logs returned by tracing now contain the
returnData
(#27704) - GraphQL now supports withdrawals (EIP-4895) (#27072)
Go library changes
- The RPC server now enforces limits on batch requests and responses. This is a potentially breaking change. If you use batch requests with geth, and also use the go-ethereum RPC client library, we strongly recommend updating your go-ethereum library dependency as well. The new client version handles invalid batch responses way better than before. (#26681)
- The RPC client has multiple new ways to test whether the transport supports real time subscriptions (#25942)
- fsync is now enabled for pebble database writes (#27615, #27522)
- Function calls timed by metrics will now run even if metrics are disabled (#27724, #27723)
-
Node.Attach
no longer returns an error. This is a breaking Go API change. (#27450) - The keystore has improved verification of keys loaded from disk (#27432)
- Per-level metrics are now available for LevelDB (#27643)
Core
- All block creation activity is now paused while the node is syncing (#27218)
- Two minor bugs in the transaction pool are resolved in this release (#27404, #27479)
- Geth no longer uses a 'clean cache file' to persist internal caches across restarts. While persistent cache added a small performance boost right after startup, it could cause obscure issues in certain restart scenarios. (#27525)
- A large portion of the new Path-Based State Storage scheme has been implemented. While it isn't active yet, we are planning to make this new storage method available in the next release. (#25963, #27323, #27349, #27428, #27687, #27753, #27815)
- As part of testing the new storage scheme, some inconsistencies in selfdestruct handling were discovered by fuzz tests and had to be fixed (#27376, #27339)
- We have also made significant progress on the integration of Verkle Trees, which required changes to internal state-handling APIs (#27000, #27209, #27464, #27476, #27544, #27853)
Networking
- A serious memory leak related to database writes in snap sync is fixed in this release (#27842)
- Large transactions (> 4kB) are no longer broadcasted to peers. This resolves a potential network congestion issue (#27618)
- The p2p networking layer has learned to announce alternate ports returned by UPnP/NAT-PMP (#26359)
- The p2p server now properly tracks all peer goroutines (#27887)
- Networking initialization now really disables all discovery when
--nodiscover
is used (#27518) - Obsolete parts of the LES protocol implementation, which is currently non-functional, have been removed (#27737)
- Discovery bootstrap nodes will now be filtered by the netrestrict setting, like all other nodes (#27701)
- We now provide additional metrics around p2p dialing, making it possible to measure the efficieny of peer discovery (#27621)
- The downloader no longer accumulates goroutines/memory while processing reorgs (#27397)
- A very rare crash related to peer connection tracking is resolved (#27665)
- It is now possible to configure certain discovery internals for experimentation (#27387)
Build
- This release is built with Go 1.20.7 (#27835, #27708)
- On UNIX-like OSes, package rpc no longer uses cgo (#27447)
- Building go-ethereum no longer fails when .DS_Store files exist in unexpected locations (#27521)
- On macOS, a build warning related to libusb is resolved (#27698)
- An obscure build issue related to the NDEBUG C macro is resolved (#27550)
For a full rundown of the changes please consult the Geth 1.12.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.
v1.12.0
: Krogam DMZ (v1.12.0)
Geth v1.12.0 is a potentially breaking change, hence it was deemed to deserve version bump, to 1.12
.
The v1.12 release family drops support for proof-of-work, and thus can not be used any more on PoW-based private chains, or as an upstream library for projects depending on ethash
PoW (#27178, #27147).
In our GraphQL API, a breaking change is that all numeric values are now encoded as hex strings (#26894). The internal GraphQL UI was updated to version 2.0. (#27294).
Regarding our move from leveldb
to pebble
, Geth now defaults to use Pebble as a backend if no existing database is found (#27136). If a previous LevelDB database exists Geth will keep using that, and if you must have LevelDB for some compatibility reasons, you can force it in Geth with the --db.engine=leveldb
flag.
We have made progress on "EIP-4844: Shard Blob Transactions" (#27257, #27256, #27155, #27049), beacon light sync (#27292), and path-based state storage (#27176, #26813) but neither is finished as of yet.
Other improvements:
Assorted bugfixes:
- Do not ignore
null
address while iterative dump (#27320) - Fix flatCallTracer crasher (#27304)
- Prevent pebble shutdown-panic (#27238)
- Make websocket use default "HTTP_PROXY" by default (#27264)
- Make
eth_estimateGas
uselatest
block by default (#24363) - Add
txHash
field on txTraceResult (#27183) - Fix crash on querying finalized block (#27162)
For a full rundown of the changes please consult the Geth 1.12.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.
v1.11.6
: Azimir (v1.11.6)
Geth v1.11.6 is a maintenance release, fixing some minor issues and adding some log management features.
Log management
Log rotation has landed in geth
, via (#26843). Log rotation can be activated using the flag --log.rotate
. Additional parameters that can be given are:
-
--log.maxsize
to set maximum size before files are rotated, -
--log.maxbackups
to set how many files are retailed, -
--log.maxage
to configure max age of rotated files, -
--log.compress
whether to compress rotated files
The location the logfile(s) can be configured as previously, using the --log.logfile
parameter.
A new log output format, logfmt
was added (#27001, #26970). It can be enabled using --log.format
, which currently supports the options json
, logfmt
or terminal
. (Thus, the --log.json
option is now deprecated).
And finally, the flag --vmodule
was renamed to --log.vmodule
(#27071).
Assorted
- New sepolia bootnodes managed by EF devops are added (#27099)
- Converting the codebase to use
atomic
types (#27068, #27031, #27030, #27013,#27014, #27011, #26992, #26993, #26951, #26935, #27121) - Bugfixes to make tracers more correct avoid crashes (#27029, #26848)
- Fix race-conditions in
graphql
(#26965) - New CPU counter-typed metrics (#26796)
For a full rundown of the changes please consult the Geth 1.11.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.
v1.11.5
: Erszbat (v1.11.5)
Geth v1.11.5 enables the Shanghai upgrade on Wednesday, April 12, 2023 10:27:35 PM UTC
The Shanghai upgrade contains the following EIPs:
- EIP-3651: Warm COINBASE
- EIP-3855: PUSH0 instruction
- EIP-3860: Limit and meter initcode
- EIP-4895: Beacon chain push withdrawals as operations
- EIP-6049: Deprecate SELFDESTRUCT
Notable changes:
Minor changes and bugfixes
- Preparatory changes for path-based storage (#26763)
- Changes needed use overlay protocols in discv5 (#26699)
- Add support for encoding uint256.Int in RLP (#26898)
- Fixed a bug where local transaction would be rejected with
-32000, future transaction tries to replace pending
when send out of order (#26930) - Reject keywords
safe
orpending
over RPC pre merge (#26862 - Fix file permissions on
admin_exportChain
(#26912)
For a full rundown of the changes please consult the Geth 1.11.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.
v1.11.4
: Vana (v1.11.4)
This is a security release of Geth, improving resilience of the transaction pool against certain kinds of DoS attacks. These attacks have recently been observed in testnets.
Notable changes:
- TxPool validation rules have been tightened to defend against certain DoS attacks. The new checks are based on research by @dwn1998, @wangyibo0308, @ZhouYuxuan97, @tristartom, @fs3l. Thank you for your report and cooperation! (#26648)
- EIP-712 signing in Clef now recognizes all primitive types of Solidity. (#26770)
- EF bootstrap nodes on MS Azure have been removed because they will be decommissioned soon. (#26828)
- The
core.Message
type has been changed from interface to struct andtypes.Message
(in core/types) has been removed. This is a breaking API change in core/types. We believe the removal should not cause additional disruption for downstream projects becausetypes.Messages
had no meaningful use outside of package core. (#25977) -
core.BlockGen
has a newTimestamp
method. (#26844)
For a full rundown of the changes please consult the Geth 1.11.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.
v1.11.3
: Spekilas (v1.11.3)
This is a minor release, fixing a couple of issues and enabling the Shanghai upgrade on Goerli at block timestamp 1678832
(#26795).
Minimum Go version
In accordance with our policy to only support the newest two versions of Go, we have changed the minimum required compiler version to Go 1.19 (#26803).
Pebble
In v1.11.0 we released Pebble support (guarded by the --db.engine=pebble
flag). Thanks to everyone testing it! We found and fixed a few issues:
- You can now set more than 4 GB in
--cache
when using Pebble. (#26776) - Range compaction now works correctly for Pebble. (#26771)
- Pebble support is disabled on OpenBSD to resolve a compilation error. (#26801)
RPC changes
- Add support for Parity-style flat traces with the new built-in
flatCallTracer
. (#26377) - The
callTracer
now reports anull
address for failed contract creation operations. (#26779) -
head
anddifficulty
have been removed inadmin_peerInfo
responses. (#26804)
Other fixes
-
types.Receipt
now contains theEffectiveGasPrice
of the transaction, so you can get the true gas price using theTransactionReceipt
method of ethclient. (#26713) - ethclient no longer panics when requesting missing blocks. This fixes a regression introduced in v1.11.2. (#26817)
- ethclient now returns block withdrawals, if present. (#26778)
- During building of new blocks, failed transactions no longer count towards used block gas, improving block space utilization. (#26799)
- Faster crawling time for the DNS crawler (#26685)
- Use the last announced finalized block instead of LES CHT for the ancient limit (#26685)
- CPU usage metrics (
geth.system/cpu/*
) are more accurate (#26793)
For a full rundown of the changes please consult the Geth 1.11.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.
v1.11.2
: Kite's Nest (v1.11.2)
Geth 1.11.2 (Kite's Nest) is a patch-release, fixing a couple of issues with the 1.11 release family.
- Fix a few small engine API discordances with the spec post-Shanghai (#26696, #26722).
- Fix unmarshalling JSON
null
values as a proper result instead ofnil
(#26723). - Fix
dumpgenesis
which failed due to a bad database key write (#26747). - Fix pending tx filter to return hashes, not full txs by default (#26757).
- Fix
eth_feeHistory
to accept decimal blocks again (#26758). - Fix Ubuntu PPA builds after the Go 1.20 fallout.
Feature wise there's one change in this release: the downloader's chain sync messages are aggregated into periodic (8s) outputs instead of a log line for every batch of data imported (#26676).
For a full rundown of the changes please consult the Geth 1.11.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.
v1.11.1
: Saradril (v1.11.1)
This is a patch-release, fixing a couple of issues with the major release yesterday:
- Make our MacOS-builds work again (26653),
- Fix some flaws related to withdrawals (Shanghai), which were detected on
zhejiang
testnet (#26704 [#26707],(https://github.com/ethereum/go-ethereum/pull/26707)). - Fix an issue where geth refused to start following a partial datadir wipe 26703
This version is ready for the Shanghai upgrade on Sepolia.
If have not already upgraded to v1.11.0
, then you should also read the release notes for that version.
If you have already upgraded to v1.11.0
, there is no urgency in upgrading to v1.11.1
, unless you are directly affected by the issues; e.g. want to use of Sepolia.
For a full rundown of the changes please consult the Geth 1.11.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.
v1.11.0
: Annos Basin (v1.11.0)
This is a major release, containing over 300 MRs. Our original intention was to release 1.11 with path-based storage, but eventually we decided it was time to make the release without waiting for PBSS to be merged, so we can get back to a steady release schedule.
We hope to soon follow up the 1.11 release with 1.12, including PBSS.
Shanghai Upgrade Support
Most of the code for the Shanghai fork is merged into 1.11, but activation of the fork is not configured. The Shanghai protocol upgrade will contain the ability to make withdrawals from the consensus-layer (beacon chain). Withdrawals are specified in EIP-4895: Beacon chain push withdrawals as operations.
Other features included are EIP-3855: PUSH0 instruction, EIP-3860: Limit and meter initcode and EIP-3651: Warm COINBASE.
A New Database Backend
Pebble
was added as a database backend to replace good old LevelDB
.
LevelDB has served us very well over the years, alas, it is a one-person project where the maintainer has signaled that the project is not a priority. We have been forced to consider three options:
- Stick with goleveldb as long as we can, don't worry about it,
- Fork goleveldb (or some other database), and maintain it ourselves.
- Pick a different database, actively maintained by a dedicated team.
Since option one is not really a long-term solution, the choice was between two and three. Maintaining a database is a huge effort, and is not a burden we want to carry. Hence, we have been aiming for option 3, and eventually settled on Pebble.
Pebble is actively maintained by a dedicated team, and is used by other projects. We hope that this is a good long-term bet. It has performed well in our benchmark tests, we are very interested in getting feedback from actual production systems. In order to use pebble
,
- You need to be on a 64-bit system,
- You also need to resync from scratch (with or without ancients) -- there is no migration functionality,
- And you need to specify
--db.engine=pebble
initially. For subsequent runs, geth should discoverpebble
automatically.
Removed Features
We have removed support for the ropsten
and kiln
test networks. We have also removed libraries for mobile development and the puppeth
tool.
The personal
RPC namespace is now deprecated. In order to interact with personal
APIs, you need to specifically allow it via the --rpc.enabledeprecatedpersonal
command-line flag.
Support for certain legacy files configuration files was dropped. geth
now will ignore these datadir files:
static-nodes.json
trusted-nodes.json
If any these are found, an error will be printed to the log. Setups using such files should use to the TOML configuration-file instead.
Backwards-Incompatible Changes
When using geth for mining or as a clique sealer, the --miner.etherbase
flag now has to be be set explicitly. Previously, Geth would use the 'first' local account as etherbase automatically, but this possibility has been removed in Geth 1.11.
This change does not affect proof-of-stake networks because the fee recipient address is provided by the consenus-layer and not configured in Geth anymore.
Geth's JSON-RPC server has become more strict; the JSON-RPC
spec requires the version field to be exactly "jsonrpc": "2.0"
. This is now verified by the server -- a change which is not backwards-compatible with non-conforming client implementations.
If you are building from source, go-ethereum now requires Go version 1.18
or later (#26160).
The callTracer
includes intentional breaking changes. Please refer to the Tracing section of the release notes.
New Features
#26149 added an option to direct log output to a file. This feature has been requested a lot. It's sometimes useful to have this available when running geth in an environment that doesn't easily allow redirecting the output.
We have added a method debug_setTrieFlushInterval
to make it possible to set the trie flush interval via RPC (#24785). Essentially, this makes it possible to configure the node to be more or less "archive:ish", and without restarting the node while reconfiguring it.
Geth can now set custom HTTP headers, in particular for two scenarios:
geth attach
-
geth
commands which can use--remotedb
, e.ggeth db inspect
The ability to use custom headers is typically useful for connecting to cloud-apis, e.g. providing an infura- or alchemy key, or for that matter access-keys for environments behind cloudflare.
Tracing
callTracer
fields gasUsed
and value
have changed in the following cases:
-
gasUsed
of the top call frame now accounts for intrinsic gas and refunds. (https://github.com/ethereum/go-ethereum/pull/26048) - In case of a DELEGATECALL frame, the value which was previously null is set to the parent call's value. This is done to match EVM semantics. (https://github.com/ethereum/go-ethereum/pull/26632)
For tracing, it is sometimes desirable to capture logs triggered by a trace, when using the callTracer
. For example: call USDT.transfer
will trigger a Transfer(from, to, value)
event. By specifying {"withLog": true}
, these events will be collected. Some bugs related to tracing and gasUsed
was fixed.
For prestateTracer
, the result will from now on omit empty fields instead of including a zero value (e.g. no more balance: '0x'
). The prestateTracer now takes an option diffMode: bool
. In this mode the tracer will output the pre state and post data for the modified parts of state.
#26241 should make it easier to sign EIP-712 typed data via the accounts.Wallet API, by using the mimetype for typed data.
It is now possible to get the result for multiple tracers in one go via the muxTracer
.
Filter System
Via the filter subscriptions to newPendingTransactions
, one can now subscribe to the full pending transactions, as opposed to just being notified about hashes.
The keywords safe
and finalized
can now also be used as block range specifiers when requesting logs.
All Changes
Larger changes
- Added
pebble
as a new database backend. (#26517, #26650) - Make use of golang generics (#26290 #26194, #26162, #26159)
- Prepare for upcoming Shanghai hardfork (#26645, #26624, #26554, #26548,#26232, #26591, #26565, #26563, #26555, #26549, #26484, #26474, #26475, #23847, #26458)
- Remove Ropsten support (#26644)
- Prepare for path-based-storage (#26637, #26603, #26324, #25532, #25896)
- Remove mobile packages (#26599)
- Deprecate
personal
namespace (#26390) - internal/debug: add --log.file option (#26149)
- eth/tracers: add multiplexing tracer (#26086)
- eth/tracers: add diffMode to prestateTracer (#25422)
Minor changes and features
- rpc: remove DecimalOrHex type (#26629)
- Make abi codec more strict (#26568)
- core/vm: improve EVM instance reusability (#26341)
- core: improve ambiguous block validation message (#26582)
- log: better sanitation (#26556, #26630)
- p2p/discover: add more packet information in logs (#26307)
- common/mclock: add Alarm (#26333)
- core/rawdb: implement resettable freezer (#26324)
- signer: enable typed data signing from signer rpc (#26241)
- rpc: support injecting HTTP headers through context (#26023)
- improve reading Go runtime metrics (#25886)
- Changes for Cancun hardfork
- Add
60s
timeout to graphql queries(#26116) - common/types: add
Address.Big
(#26132) - p2p/discover: improve discv5 NODES response packing (#26033)
- eth/tracers: add withLog to callTracer (#25991)
- eth/filters, ethclient/gethclient: add fullTx option to pending tx filter (#25186)
- node: drop support for static & trusted node list files (#25610)
- accounts/usbwallet: support Ledger Nano S Plus and FTS (#25933)
- cmd/abigen: change --exc to exclude by type name (#22620)
- rpc: improve error codes for internal server errors (#25678)
- rpc: check that "version" is "2.0" in request objects (#25570)
- node, rpc: add JWT auth support in client (#24911)
- eth/fetcher: throttle peers which deliver many invalid transactions (#25573)
- eth/tracers: fix gasUsed for native and JS tracers (#26048)
- core/vm: set tracer-observable value of a delegatecall to match parent value (#26632)
Changes related to testing
- core/vm: add bn256ScalarMul testcase for zero scalar value (#26607)
- cmd/evm: add blocktest subcommand to evm (#26526)
- core/state: remove notion of fake storage (#24916)
- Make it possible to set the trie flush interval via RPC (#24785)
- cmd/evm: output stateroot in statetest result (#26297)
- eth/catalyst: make tests less time-sensitive (#26201)
- rpc, internal/guide: speed up tests a bit (#26193)
- cmd/evm: slight change in how t8n handles coinbase pre eip-158 (#26139)
- eth/tracers: remove revertReasonTracer, add revert reason to callTracer (#25508)
Bugfixes
- Fix a flaw in snap-sync, where geth would stall state-sync until blocks were fully downloaded (#26453)
- Fix cornercase shutdown behaviour in freezer, and be more diligent about performing
fsync
on close (#26485, #26490). More fixes to the freezer were implemented in (#26245) and (#26251) - rpc: fix off-by-one in ipc endpoint length check (#26614)
- params: fix timestamp display in fork banner (#26553)
- console, internal/jsre: fix autocomplete issues (#26518)
- les/fetcher : fix requestTimer leak (#26514)
- metrics/influxdb: fix time ticker leaks (#26507)
- tests: fix DIFFICULTY error in state executor (#26465)
- core: reset txpool on sethead (#26392)
- core: fix state flushing for catalyst mode (#26319)
- graphql, node, rpc: improve HTTP write timeout handling (#25457)
- include transaction sender in pending-subscription (#26126)
- common/lru: fix race in lru (#26164)
- p2p/discover: fix handling of distance 256 in lookupDistances (#26087)
- Fix trace call for inner reverts (#25971)
- eth/tracers: fix gasUsed for native and JS tracers (#26048)
- eth/tracers: fix the issue prestate missing existing contract state (#25996)
- eth/filters: fix for eth_getLogs failing with finalized- and safe tag (#25922)
- eth/traces: add state limit (#25812)
- ethclient/gethclient: fix bugs in override object encoding (#25616)
- eth/downloader, les/downloader: fix subtle flaw in queue delivery (#25861)
- core: fix datarace in txpool, fixes #25870 and #25869 (#25872)
- eth/catalyst: add locking around newpayload (#25816)
- eth: fix a rare datarace on CHT challenge reply / shutdown
- node: fix HTTP server always force closing (#25755)
- eth/protocols/snap: throttle trie heal requests when peers DoS us (#25666)
- eth/protocols/snap: fix problems due to idle-but-busy peers
- trie: update comments + err check for preimages (#25672)
- trie: check childrens' existence concurrently for snap heal (#25694)
- eth, les: rework chain tracer (#25143)
For a full rundown of the changes please consult the Geth 1.11.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.
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.