After a long train of maintenance releases, we are happy to announce this feature release of Geth!
This release is ready for the Merge transition on the Ropsten testnet, and will activate the Merge on Ropsten when the testnet reaches a total difficulty of 43531756765713534. Please ensure you have a beacon chain node configured for the transition.
The tracing subsystem has been another focus area of this release cycle. We have replaced the JavaScript interpreter used by the tracing engine with Goja, which offers slightly better performance and implements many ES6 language features. There are minor differences in JS tracing semantics: The built-in functions memory.slice, memory.getUint, stack.peek will now throw an exception and interrupt tracing when accessing out-of-bounds data. They previously returned an empty value instead.
This release contains further breaking changes to tracing APIs. Be sure to check the tracing changelog section. Please also report any incompatibilities you encounter.
Changes related to the Merge
Ropsten: terminal total difficulty is configured for the Merge. (#24876)
In RPC APIs where a block number can be given, you can now use "finalized" to refer to the latest finalized block. (#24282)
Geth can now serve CL requests to build a new block with very low latency because new blocks are constructed in the background. (#24866)
For CL-induced reorgs to a block with unavailable state, Geth now recomputes the state by re-processing ancestor blocks. (#24613)
The "engine" API implementation complies with the latest specification version. (#24802, #24855, #24915)
Several annoyances related to sync after the Merge have been fixed. (#24691, #24670, #24610)
Geth changes
Geth's default gas limit target is now 30M. (#24680)
Geth now prints a warning when launching on the deprecated Rinkeby testnet. (#24884)
The free disk space monitor is more aggressive and the critical level at which it will initiate a shutdown is now set to 256 MB by default. (#24781)
Geth now prints a small guide when started in --dev mode. (#24759)
Geth no longer reports 'Snapshot extension registration failed' as an error. (#24475)
The --eth.requiredblocks flag was fixed to work correctly. (#24817)
Using geth --dev with a datadir previously initialized by geth init should now work correctly. (#24693)
geth init will now complain when creating a Clique-based chain without any configured signers. (#24470)
The new geth db check-state-content command checks integrity of trie nodes in the database. (#24840)
geth snapshot verify-state now checks for 'dangling' storage entries. (#24643, #24677)
evm t8n can now run post-merge state transitions. (#24546)
The hex input data of evm run is now verified to have even length. (#24721)
Using Clef for clique block signing should be fixed. (#24941)
The example code that shows how to use Clef from Python works again. (#24440)
Core changes
When generating a state snapshot from the state trie, Geth now ensures that 'dangling' storage entries from previous snapshots are removed from the database. This fixes an issue that could lead to incorrect EVM execution results after snap sync in certain cases. (#24811)
The transaction pool now correctly drops the oldest transactions when truncating the queue to stay below the configured global limit. (#24908)
The reference tests have been upgraded to version 10.4. (#24899)
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 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)
Bumps github.com/ethereum/go-ethereum from 1.10.16 to 1.10.18.
Release notes
Sourced from github.com/ethereum/go-ethereum's releases.
... (truncated)
Commits
de23cf9
params: go-ethereum v1.10.18 stableb807f78
go.mod: upgrade to docker v1.6.2 (#24956)8798cd3
AUTHORS: remove one more duplicate entry (#24950)9244d5c
all: update license headers and AUTHORS from git history (#24947)6cc4cc6
Merge pull request #24945 from karalabe/cht-1.10.18e31ff1f
params: update CHTs for Geth 1.10.1864d6c78
Merge pull request #24867 from holiman/no_preop_memexpandc9e324c
go.mod: upgrade to btcsuite/btcd/btcec v2.2.0 (#24939)3ff479b
signer/core: always pad clique header extra data with space for sealer's sign...94c8de0
Merge pull request #24936 from holiman/no_compilersDependabot 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 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)