Skip to content

Comments

Bump github.com/ethereum/go-ethereum from 1.14.11 to 1.16.0#19

Closed
dependabot[bot] wants to merge 1 commit intoMainfrom
dependabot/go_modules/github.com/ethereum/go-ethereum-1.16.0
Closed

Bump github.com/ethereum/go-ethereum from 1.14.11 to 1.16.0#19
dependabot[bot] wants to merge 1 commit intoMainfrom
dependabot/go_modules/github.com/ethereum/go-ethereum-1.16.0

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Jun 27, 2025

Bumps github.com/ethereum/go-ethereum from 1.14.11 to 1.16.0.

Release notes

Sourced from github.com/ethereum/go-ethereum's releases.

Terran Rivets (v1.16.0)

We are proud to present the v1.16.0 release, introducing path-based archive node and several other improvements to the state database implementation. There is also the usual amount of bug fixes and small improvements.

Archive Node

This release includes a new, experimental implementation of the archive node (--gcmode=archive). As an archive node, Geth stores all historical states, and can thus retrieve account balances, nonces and storage values at old blocks.

In previous versions of Geth, running as an archive node was only possible using the legacy 'hash-based' state storage scheme (--state.scheme=hash). When syncing mainnet the resulting database would reach sizes larger than 20TB, and it all had to be stored on a high-speed SSD.

The new implementation provides the state archive in combination with 'path-based' storage (--state.scheme=path). Comparing to hash-based storage, there are three basic advantages:

  • Geth can be configured to store historical states on a dedicated disk, and it doesn't have to be an SSD (it will be ~3x faster to access when stored on SSD though).
  • For the full state history of mainnet, the state database will have a size of ~1.9TB (this is without the tx-by-hash index and log index).
  • The amount of historical state kept by the node is configurable as well. By default, Geth will keep historical state for the last 90k blocks, and older state is pruned from disk automatically as the chain advances. You can set the number of states to keep with the --history.state flag.

Notably, there is also one drawback with the new archive node: eth_getProof is not supported for historical blocks. With --state.scheme=path, Geth can only serve state proofs for the latest 128 blocks. We believe this is an acceptable tradeoff. If you need older proofs, you can still a hash-based archive node as before, but we'd also really like to hear about your use case. Please contact us via email at geth@ethereum.org so we can learn more, and possibly find a solution that can be implemented within Geth.

How it works

With 'path-based' state storage, Geth keeps exactly one full state in the database. Specifically, the persistent state is 128 blocks in the past. For newer blocks up to the head, forward diffs are kept in memory. In order to support rolling back to blocks older than head-128, Geth also keeps 'state history' in the form of reverse key-value diffs. When the chain is reset to an old block, these diffs are applied to the persistent state, going backwards one diff at a time until the target block is reached.

A reverse state diff contains the previous values of all modified accounts and storage locations for a specific block. There is a reverse diff for each historical block. This makes reverse diffs suitable for storage into the 'freezer', i.e. they do not need to live within Pebble/LevelDB.

The new archive mode is built on the realization that reverse state diffs contain all necessary data to serve historical state queries. For example, in order to get the historical balance of an account X at block B, we can search forward through diffs starting at block B until we find a block where account X is modified. This diff will contain the balance of the account, since it stores the all modified pre-values.

To accelerate the search for a suitable diff, Geth creates a database index storing the block numbers in which an account was modified. This index is small compared to the overall state history, but it is crucial for correct operation of the archive node. The state index is stored in PebbleDB and will be generated automatically while geth is syncing the chain. It takes ~30h to build the archive state index for mainnet, and historical state will only be available when the index is fully built. Geth will report a syncing status through eth_syncing while the indexing happens.

Other state implementation changes

In v1.16.0, the implementation of the 'state snapshot' has been rewritten for improved integration with path-based state storage. As you may recall, Geth stores the state in two different ways:

  • The 'snapshot' contains the flat keys and values of the state, in a layer-based struture.
  • The trie database contains state trie nodes, necessary for the state root computation.

When the implementation of the snapshot and its layer tree was introduced in Geth v1.10.0, it was built to be entirely separate from the trie database. We added path-based state storage in v1.13.0, and that system contains a layer tree as well, with slight differences in semantics and implementation.

As of this release, the layer trees of the state snapshot and trie database have been merged into a single implementation (#30661). In path-based mode, the trie database now holds a reference to the corresponding snapshot layer for each tree state. The new layer tree has also been enhanced with an additional index of layers in which an account was modified (#30971). Note this is similar in spirit to the historical state index. The new index will enable us to increase the number of in-memory state layers in the future.

Full list of changes in this release

Geth

  • The default block gas limit is now 45M. (#32087)
  • Geth can now use era1 files to access history when running with pruned history. (#31604)
  • There is a new geth download-era subcommand for fetching era1 files. (#31823, #31951, #32081)
  • When Geth is interrupted while it is syncing, pending block imports will now be canceled, leading to a quicker shutdown. (#32062)
  • Ready for fork activation messages are now printed based on the current clock time. (#31800)
  • Geth no longer allows setting a different network ID when running a network preset. (#31630)

... (truncated)

Commits
  • 57f8971 version: release go-ethereum v1.16.0 stable
  • 0c90e4b all: incorporate state history indexing status into eth_syncing response (#32...
  • 36bcc24 triedb/pathdb: fix journal resolution in pathdb (#32097)
  • a92f2b8 core, eth, triedb: serve historical states over RPC (#31161)
  • ce63bba eth, triedb/pathdb: permit write buffer allowance in PBSS archive mode (#32091)
  • 429e821 cmd/utils: fix formatting for beacon flag errors to fit Fatalf form (#32090)
  • cafa5e6 core, consensus/beacon: defer trie resolution (#31725)
  • 6dd38d2 cmd/geth, triedb: add pathdb state verification (#32086)
  • 9c5c0e3 core/rawdb, triedb/pathdb: implement history indexer (#31156)
  • ebff350 miner: default gaslimit 45M (#32087)
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Summary by Sourcery

Upgrade Go toolchain requirement and bump github.com/ethereum/go-ethereum along with various indirect module dependencies to their latest versions

Build:

  • Update Go requirement to 1.23.0 and set toolchain to go1.24.1 in go.mod

Chores:

  • Bump github.com/ethereum/go-ethereum to v1.16.0
  • Update numerous indirect dependencies (e.g., bitset, pebble, gnark-crypto, go-eth-kzg, go-verkle, cpuid, pion libraries, and others) to their latest releases
  • Regenerate go.sum to reflect updated module versions

Bumps [github.com/ethereum/go-ethereum](https://github.com/ethereum/go-ethereum) from 1.14.11 to 1.16.0.
- [Release notes](https://github.com/ethereum/go-ethereum/releases)
- [Commits](ethereum/go-ethereum@v1.14.11...v1.16.0)

---
updated-dependencies:
- dependency-name: github.com/ethereum/go-ethereum
  dependency-version: 1.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot added dependencies Pull requests that update a dependency file go Pull requests that update go code labels Jun 27, 2025
@sourcery-ai
Copy link

sourcery-ai bot commented Jun 27, 2025

Reviewer's Guide

This PR updates the Go language version and toolchain, bumps the geth dependency to v1.16.0, and aligns a range of indirect modules to versions compatible with the new go-ethereum release.

Class diagram for updated go-ethereum dependency (v1.16.0)

classDiagram
    class Geth {
        +ArchiveNode
        +StateDatabase
        +StateHistoryIndexer
        +Era1FileSupport
        +GasLimitDefault
    }
    class StateDatabase {
        +PathBasedStorage
        +HashBasedStorage
        +StateSnapshot
        +TrieDatabase
        +ReverseDiffs
        +StateIndex
    }
    class ArchiveNode {
        +PathBasedArchive
        +HashBasedArchive
        +HistoryStateConfigurable
        +ServeHistoricalStates()
    }
    class StateHistoryIndexer {
        +IndexAccountModifications
        +PebbleDBStorage
    }
    class Era1FileSupport {
        +DownloadEraCommand
        +Era1FileAccess
    }
    Geth --> StateDatabase
    Geth --> ArchiveNode
    Geth --> StateHistoryIndexer
    Geth --> Era1FileSupport
    StateDatabase --> StateHistoryIndexer
    ArchiveNode --> StateDatabase
    StateHistoryIndexer --> StateDatabase
    Era1FileSupport --> Geth
Loading

File-Level Changes

Change Details Files
Bump Go language version and specify Go toolchain
  • go directive updated from 1.21 to 1.23.0
  • added explicit toolchain directive for go1.24.1
go.mod
Upgrade geth dependency to v1.16.0
  • github.com/ethereum/go-ethereum version updated from v1.14.11 to v1.16.0
go.mod
Align indirect dependencies with new geth release
  • bump versions of core modules (bitset, pebble, gnark-crypto)
  • migrate c-kzg-4844 to v2 and update go-verkle
  • upgrade ancillary libraries (golang-jwt, x/time, etc.)
go.mod
Add new indirect dependencies required by updated modules
  • introduced fastssz, cpuid, pion modules (dtls, stun, transport)
  • updated filesystem and cryptography helpers
go.mod

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@dependabot @github
Copy link
Contributor Author

dependabot bot commented on behalf of github Jul 3, 2025

Superseded by #20.

@dependabot dependabot bot closed this Jul 3, 2025
@dependabot dependabot bot deleted the dependabot/go_modules/github.com/ethereum/go-ethereum-1.16.0 branch July 3, 2025 06:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file go Pull requests that update go code

Projects

Development

Successfully merging this pull request may close these issues.

0 participants