Skip to content

Releases: ethereum/go-ethereum

Nemata (v1.10.25)

15 Sep 16:08
69568c5
Compare
Choose a tag to compare

Geth v1.10.25 is a tiny update to flip the mainnet chain configuration to be post-merge. This disables legacy sync and will prevent Geth from even starting sync until a consensus client is attached and sends forkchoice updates. The update prevents bad PoW actors from trying to get the node to - temporarily, but annoyingly - download bad state data.

This release is optional and only affects initial sync. The release was made mostly for completeness' sake rather than out of necessity.

For a full rundown of the changes please consult the Geth 1.10.25 release milestone.


As with all our previous releases, you can find the:

Jarfor (v1.10.24)

14 Sep 09:21
972007a
Compare
Choose a tag to compare

Geth v1.10.24 is a small hotfix release for users of the GraphQL APIs. It fixes a single bug where filtering for logs from a single transaction via GraphQL returned logs from the entire block, not just the single transaction. Single transaction log filtering is unavailable via the RPC and does not impact the merge.

You only need to apply this change if you rely on both GraphQL and single transaction log filtering.

For a full rundown of the changes please consult the Geth 1.10.24 release milestone.


As with all our previous releases, you can find the:

Sentry Omega (v1.10.23)

24 Aug 09:13
d901d85
Compare
Choose a tag to compare

Geth v1.10.23 is a hotfix release for a pruning regression that was introduced in v1.10.22. For technical details on the bug, please check out the PR that fixes it.

If anyone updated to v1.10.22 in these past couple of days, there is a fairly high probability that some state data might have gone missing from your node. Doing a full check on the state is possible geth snapshot traverse-state, but will likely take a day and the fix is all the same anyway.

To ensure that your node has all the data, please rewind your local chain to a block before you updated (if unsure, just pick a block before the release time) with debug.setHead("0xblock-number-in-hex") via the Geth console (on IPC), or debug_setHead via JSON RPC (you might need to temporarilly expose the debug namespace to do that). The brute force alternative of course is to resync after an update, which you can do by deleting your chaindata folder (but please leave the ancient folder within to keep the blocks).

We apologize for this regression and the headaches fixing it will entail on your side. We've learnt the hard way that there's an untested class of bugs that appear across full sync restarts.

For a full rundown of the changes please consult the Geth 1.10.23 release milestone.


As with all our previous releases, you can find the:


Original Merge release notes

Geth v1.10.22 v1.10.23 enables the Merge for the Ethereum mainnet at a Terminal Total Difficulty of 58_750_000_000_000_000_000_000.

This TTD is expected to be reached on the 15. September 2022.

Merge EIPs

  • EIP-3676: Upgrade consensus to Proof-of-Stake
  • EIP-4339: Supplant DIFFICULTY opcode with PREVRANDAO

Additional notes about the merge changes

  • This release configures the Terminal Total Difficulty for mainnet. (#25528)
  • Many engine API issues found by hive have been fixed for this release. (#25552, #25423, #25414, #25416, #25428)
  • The Goerli testnet is now internally configured as 'successfully merged'. (#25519, #24538)

JSON-RPC API

  • The log filtering system now uses a LRU cache for block logs, speeding up repeated queries for the same block range. The cache size can be configured using the --cache.blocklogs command-line flag. (#25459)
  • eth_createAccessList is now much faster when no gas limit is provided. (#25467)
  • eth_feeHistory now also works with the finalized block specifier. (#25442)
  • The built-in callTracer now supports an option onlyTopCall. Enabling this option makes the tracer skip internal calls. We added this option to enable use of the callTracer to get the return data of reverted transactions. (#25430)

Go-library changes

  • Storage of trie node hash preimages is now disabled by default. You can enable it again using the --cache.preimages flag. (#25287, #25538, #25533)
  • The ethash mining implemenation now removes temporary DAG files, which could be left of disk when geth was interrupted while generating a DAG. (#25381)
  • ethclient now supports the eth_feeHistory method. (#25403)
  • The eth wire protocol test suite now supports protocol version eth/67. (#25306)
  • RLP-decoding of trie nodes is ~33% faster due to reduced allocations in the decoder. (#25357)
  • The RPC server supports a new option ReadHeaderTimeout. (#25338)
  • Registering of clef ruleset UIs should now work correctly. (#25455)

Build

  • Geth binaries in docker are now statically-linked. (#25492)
  • This release is built using Go 1.18.5. (#25461)

For a full rundown of the original merge release changes please consult the Geth 1.10.22 release milestone.

Promavess (v1.10.22)

22 Aug 08:38
Compare
Choose a tag to compare

WARNING: This release seems to contain a regression that can corrupt the local state. Please hold on with updating while we investigate the issue!


Geth v1.10.22 enables the Merge for the Ethereum mainnet at a Terminal Total Difficulty of 58_750_000_000_000_000_000_000.

This TTD is expected to be reached on the 15. September 2022.

Merge EIPs

  • EIP-3676: Upgrade consensus to Proof-of-Stake
  • EIP-4339: Supplant DIFFICULTY opcode with PREVRANDAO

Additional notes about the merge changes

  • This release configures the Terminal Total Difficulty for mainnet. (#25528)
  • Many engine API issues found by hive have been fixed for this release. (#25552, #25423, #25414, #25416, #25428)
  • The Goerli testnet is now internally configured as 'successfully merged'. (#25519, #24538)

JSON-RPC API

  • The log filtering system now uses a LRU cache for block logs, speeding up repeated queries for the same block range. The cache size can be configured using the --cache.blocklogs command-line flag. (#25459)
  • eth_createAccessList is now much faster when no gas limit is provided. (#25467)
  • eth_feeHistory now also works with the finalized block specifier. (#25442)
  • The built-in callTracer now supports an option onlyTopCall. Enabling this option makes the tracer skip internal calls. We added this option to enable use of the callTracer to get the return data of reverted transactions. (#25430)

Go-library changes

  • Storage of trie node hash preimages is now disabled by default. You can enable it again using the --cache.preimages flag. (#25287, #25538, #25533)
  • The ethash mining implemenation now removes temporary DAG files, which could be left of disk when geth was interrupted while generating a DAG. (#25381)
  • ethclient now supports the eth_feeHistory method. (#25403)
  • The eth wire protocol test suite now supports protocol version eth/67. (#25306)
  • RLP-decoding of trie nodes is ~33% faster due to reduced allocations in the decoder. (#25357)
  • The RPC server supports a new option ReadHeaderTimeout. (#25338)
  • Registering of clef ruleset UIs should now work correctly. (#25455)

Build

  • Geth binaries in docker are now statically-linked. (#25492)
  • This release is built using Go 1.18.5. (#25461)

For a full rundown of the changes please consult the Geth 1.10.22 release milestone


As with all our previous releases, you can find the:

Nausicaa (v1.10.21)

27 Jul 11:58
Compare
Choose a tag to compare

Geth v1.10.21 is a maintenance release, adding built-in configuration for the merge fork on the Goerli testnet and the mergeNetsplitBlock for the Sepolia testnet.

Specifically, this release

  • defines a terminal total difficulty for Goerli as 10_790_000 (#25324) and
  • defines the mergeNetsplitBlock as 1735371 for Sepolia. (#25372)

Command changes

  • The --netrestrict option is now also applied for discv5. (#25304)
  • DNS discovery is now enabled for the Sepolia testnet. (#25288)
  • puppeth can no longer deploy parity and pyethapp because these clients are unmaintained. (#25329)
  • abigen now has a workaround for parameter names which are also Go keywords. (#25307)
  • A few minor regressions in geth CLI argument handling are fixed. (#25234)

RPC API changes

  • In block-based RPC methods like eth_getBlockByNumber, the safe block specifier can now be used to refer to the "safe" block post-merge. (#25165)
  • The baseFee can now be overridden in block tracing. (#25219)
  • RPC methods returning transaction objects now return the chainId for legacy transactions. (#25244)
  • In eth_sendTransaction, the chainId parameter now verified even for legacy transactions. (#25157)
  • eth_call, eth_estimateGas no longer add tx fees to the coinbase account. (#25214)
  • A new built-in tracer, revertReasonTracer, has been added. (#25265)

Merge changes

  • The engine API can no longer perform block insertion while the client is snap-syncing. (#25210)
  • When trying to set bad blocks retrieved via sync as canon, the API now returns INVALID. (#25190)
  • The engine API endpoint ('authrpc') is now enabled by default. (#25152, #25394)
  • Several other engine API bugs found during #TestingTheMerge are fixed. (#25230, #25136, #25236)

Go Library Changes

  • The snap sync implementation has been updated in preparation for 'path-based state storage'. (#24898)
  • The HTTP RPC server will no longer hang on shutdown even with very busy connections. (#25258)
  • Package signer/core/apitypes now provides a function to calculate the EIP-712 typed data hash. (#25283)

Build changes

  • We have reverted to an older version of goleveldb because recent versions have buggy compaction and manifest handling. (#25413)
  • This release is built with Go 1.18.4 (#25247, #25293)
  • Release tarballs have proper directory timestamps. (#25290)

For a full rundown of the changes please consult the Geth 1.10.21 release milestone


As with all our previous releases, you can find the:

Vectra (v1.10.20)

29 Jun 22:29
@fjl fjl
Compare
Choose a tag to compare

Geth v1.10.20 is a maintenance release, adding built-in configuration for the merge fork on the Sepolia testnet.

Specifically, this release defines a terminal total difficulty for Sepolia (#25179).

Geth command changes

  • Geth and most other command-line tools now use a newer version of the command-line argument/flag handling library. There is one new restriction with this change: flags must now be given before other arguments. Very few of Geth's subcommands take arguments, so this is unlikely to cause issues. (#24751)
  • The geth js subcommand has been removed. (#25000)
  • The new --discovery.port flag allows configuring a separate port for the UDP listener. (#24979)
  • Setting p2p bootstrap nodes in the config file now works even when a pre-defined network is selected on the command-line. (#25174)

RPC API changes

  • eth_chainId now always returns the configured chain ID regardless of sync status. This is a violation of EIP-695, but the previous behavior caused issues with CL clients. (#25166, #25168)
  • Transaction objects returned by RPC (e.g. from eth_getTransactionByHash) now always include the chainId field, even for untyped (legacy) transactions. (#25155)
  • The deprecated RPC method personal_signAndSendTransaction has been removed. (#25111)
  • Handling of certain reorg corner cases is improved in the Engine API. (#25187, #25139)
  • A performance regression in JS tracing is resolved. (#25156)

Build changes

  • Bash and zsh completions are now installed by the geth Ubuntu package. (#25195, #25204)

For a full rundown of the changes please consult the Geth 1.10.20 release milestone


As with all our previous releases, you can find the:

Camaron (v1.10.19)

15 Jun 12:57
23bee16
Compare
Choose a tag to compare

Geth v1.10.19 is yet another feature release.

The release contains the Gray Glacier fork definition. The Gray Glacier fork is a difficulty-bomb postponement, which is expected to go live on Ethereum Mainnet towards the end of June.

In other words: all users are required to upgrade before the Gray Glacier hardfork activates at block 15050000 (#25088)

Changes which may cause incompatibilities:

  • The engine API is now only available with JWT authentication.
  • Geth will refuse to start if legacy receipts are present in the database. The check can be disabled with --ignore-legacy-receipts, but we strongly recommend you run the conversion in this case (#24943).
  • The RPC method debug_traceCall will now reject execution against the pending block (#24871).
  • RPC timer metrics have been changed into histograms (#25044).

Other changes in this release:

  • Updates related to The Merge on Ropsten, which is now a proof-of-stake network (#25018, #24975, #25078)!
  • The debug_traceCall RPC method now also supports block overrides; making fields like timestamp or the block number settable by the caller (#24871).
  • A new diagnostic tool, geth snapshot inspect-account, allows investigations of snapshot data (#24765).
  • Fixes and preparatory work related to The Merge (#24946, #25006, #24955, #24997).
  • Preparatory work for the upcoming path-based trie storage feature (#24750).
  • Introduce eth/67 protocol, dropping support for GetNodeData (#24093).
  • Optimizations related to block processing (#23500, #24958, #24616).
  • Tests/fuzzing improvements (#25033, #25038, #25037, #25036, #25016, #24249 #24928).
  • Many updates to documentation (#25086, #25058, #25057, #25056, #25040, #25032).
  • Nicer format when showing chain config (#24904).

For a full rundown of the changes please consult the Geth 1.10.19 release milestone.


As with all our previous releases, you can find the:

Sharblu (v1.10.18)

25 May 12:46
@fjl fjl
Compare
Choose a tag to compare

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. You can find more information about preparing for the Merge in our guide: https://geth.ethereum.org/docs/interface/merge.

Note: the Merge transition on Ropsten was unsuccessful because the configured TD was reached earlier than expected. Please run geth with --override.terminaltotaldifficulty 100000000000000000000000 on Ropsten for the time being.

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 for invalid args 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)
  • EVM MSTORE is now 75% faster. (#24847, #24860)
  • The EVM now implements EIP-3855 (PUSH0 instruction). This feature is not yet active in any fork. (#24039)
  • The ancient store ('freezer') implementation is now exported in package ethdb, and can be used independently of the chain database. (#24684)
  • The miner no longer commits the in-progress block to disk when interrupted by a new chain head event. This improves block creation latency. (#24638)
  • The Goerli testnet has new bootstrap nodes. (#24900)
  • An crash in LES ultralight sync is resolved. (#24641)
  • Several data races related to snap sync are fixed in this release. (#24685)
  • The snap protocol server no longer includes superfluous account proofs when a storage response hits the size limit. (#24885)
  • The snap client now de-duplicates trie node heal requests better, sorting them by the requested state trie path. This can slightly reduce the overall amount of data transferred during snap sync. (#24779)
  • The eth block fetcher now disconnects peers that repeatedly fail to reply to header requests. (#24652)
  • The trie implementation can now optionally trace nodes which were deleted/overwritten by state updates. (#24403)

Go library changes

  • common/compiler: The Solidity and Vyper wrappers have been removed. This is a breaking change. (#24936)
  • abigen --sol does not work anymore. (#24936)
  • ethclient: Client now has a PeerCount method. (#24849)
  • ethclient/gethclient: GetProof now also returns storage proofs (#24697)
  • accounts/abi: decoder no longer crashes for invalid struct field names. (#24932)
  • accounts/abi: logs are now decoded correctly when all arguments are indexed. (#24792)
  • accounts/abi: ParseSelector now handles tuple arrays. (#24587)
  • signer/fourbyte: 4byte signatures have been updated. (#22865, #24842)
  • mobile: Receipt.EncodeJSON now actually returns JSON instead of RLP. (#24701)
  • accounts/abi/bind: contract calls on the pending block now correctly return the eth_call RPC error, if any. (#24649)
  • core/types: the miner field is now optional when decoding block headers from JSON (#24666)
  • ethdb/remotedb: it is now possible to attach a chain database via RPC. This feature is meant to be used for debugging. (#24905, #24836)

Tracing changes

  • The JavaScript tracing environment now uses the Goja interpreter instead of Duktape. There should be no noticable differences in semantics resulting from this change. (#23773, #24934)
  • In JS tracers, the log.memory object now has a length method. (#24887)
  • API change: In all tracers (JS, native, structlog), memory content is now captured before the EVM expands it. Previously, tracing would see memory after it had already been affected by the current instruction. (#24867)
  • API change: debug_traceTransaction, in the default structured-logging mode, now returns the refund counter for every EVM executio...
Read more

Ploitari (v1.10.17)

29 Mar 17:20
25c9b49
Compare
Choose a tag to compare

This is a maintenance release. This release contains a lot of work in preparation for The Merge, and work for an upcoming change to the way state is stored in go-ethereum.

This release also adds a new tool to convert 'legacy' receipts into a newer format. During startup, geth will check the database and tell you if you need to perform the conversion. Converting receipts is only needed if geth's ancients database has not been resynced from scratch during the last couple of years. It is recommended to back-up your receipts freezer table (ancients/receipts*) before performing the conversion.

Compatibility note about core/types: For optimization purposes, types.Header and other types in this package now implement the rlp.Encoder interface. This change can cause incompatibilities because the new method is implemented with pointer receiver. Attempting to RLP-encode unadressable (i.e. non-pointer) values of type Header does not work anymore and will result in an error.

Change Log

For a full rundown of the changes please consult the Geth 1.10.17 release milestone.


As with all our previous releases, you can find the:

Osun (v1.10.16)

16 Feb 12:27
20356e5
Compare
Choose a tag to compare

The focus of this release is bugfixes.

Bugfixes

  • Block tracing via debug.traceBlockByHash has sometimes produced inconsistent/corrupt results. Fixed via (#24286).
  • The --whitelist CLI parameter functionality was broken in v1.10.14, and is fixed in this release (#24210).
  • A bug was introduced, and subsequently fixed, which could cause data corruption during mining (#24349).
  • When signing complex datatypes in EIP712-type data, the signing-hash was incorrect. Fixed via (#24220).
  • Evm execution times exported via metrics, were sometimes incorrect. Fixed in (#24304).
  • Range prover edgecases found and fixed (#24266, #24257).
  • Fix an error related to HTTP2 handling (#24292).
  • A lot of spleling-mistkaes and issues related to correctness were fixed (#24194, #24196, #24198, #24205, #24207, #24244, #24270, #24271, #24224, #24372, #24323, #24289, #24263 and #24211).

New features

  • Work on The Merge includes support for RANDOM opcode (#24141) and various other internal refactorings (#24328, #24280, #24236, #23256).
  • The devp2p binary now supports doing snap/v1 protocol testing against a remote node, which can be used for Hive-testing (#24276).
  • New diagnostic command to show database metadata (#23900)
  • ethclient support for CallContractAtHash (#24355).
  • Support chainId for GnosisSafeTx (#24231).

Performance

  • Tracing was improved by making the prestate tracer be a native tracer (#24320, #24268).
  • Potentially reduce database allocations in some cases (#24117).
  • Add a set of cross-client external benchmarks (#24050).
  • Improve transaction indexing performance (#24197).

For a full rundown of the changes please consult the Geth 1.10.16 release milestone.


As with all our previous releases, you can find the: