Skip to content

Releases: ethereum/go-ethereum

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:

Faryar (v1.10.15)

05 Jan 16:18
@fjl fjl
Compare
Choose a tag to compare

This release resolves a few regressions introduced by the previous release. Most importantly, it fixes an issue that could cause peer-to-peer 'eth' connections to lock up.

Please upgrade ASAP if you are running geth v1.10.12 / .13 / .14.

  • A hang in ancient data serving caused by double-locking is fixed. (#24189)
  • A crash in the LES server related to reorg handling is resolved. (#24189)
  • The SyncProgress method of ethclient.Client works again. (#24199)
  • Several inconsistencies in the GraphQL API are also fixed in this release. (#24190, #24188, #24191)

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


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

Hourglass Nebula (v1.10.14)

23 Dec 10:22
@fjl fjl
Compare
Choose a tag to compare

The focus of this release is bug fixes and performance improvements.

We are especially pleased to announce that this release contains a prototype implementation of the PoW to PoS transition (a.k.a. 'The Merge'). As of this version, Geth is compatible with the Kintsugi testnet spec v3.

We would also like to thank Team Ipsilon for their development of the EVM optimizations included in this release. EVM bytecode evaluation is now ~20% faster.

Geth changes

  • A regression in txpool limit handling is resolved. This affects the --pricelimit option, which has been reverted to work exactly as it did in geth v1.10.12. (#24080)
  • Geth can now handle the transition from PoW to PoS. (#23761)
  • In the JavaScript console, long-running JS computation (i.e. for/while loops) can now be interrupted with Ctrl-C. (#23387)
  • A corner-case issue in the transaction hash indexer is resolved. (#24024)
  • Unclean shutdown markers are now updated regularly and report more accurate geth startup/shutdown times. (#24077)
  • In log messages related to RPC method invocations, the key "t" is now called "duration" to prevent a name clash when using the JSON output format. (#24112)

RPC API changes

  • The engine APIs (enabled in geth --catalyst mode) are now up-to-date for Kintsugi testnet v3. (#23984, #24067, #24075)
  • A panic in the clique_getSigner RPC method is resolved. (#23961)

Go library changes

  • The EVM implementation has been cleaned up and interpreter loop performance is improved. (#24120, #24048, #24085, #24026, #24031, #24040, #23970, #23952, #23974, #23977, #23967, #24066)
  • In preparation for EIP-3670, the EVM now recognizes the INVALID opcode 0xFE. (#24017)
  • Internal opcode names have been modernized to match Solidity: SHA3 is now KECCAK256, SUICIDE is now SELFDESTRUCT. (#23976, #24022, #24016)
  • Generating Go/Java bindings for contracts with struct-typed constructor parameters now works correctly. (#23940)
  • Built-in EVM trace loggers have moved from core/vm to a dedicated package. (#23892)
  • EIP-712 (typed data signing) structs have moved from signer/core to package signer/core/apitypes. (#24029)

Networking

  • The eth protocol implementation now uses request IDs (added by eth/66) internally. (#23576)
  • Hashing of eth response data now uses multiple threads, improving sync performance. (#24032)
  • The now-unused 2GB fast sync bloom filter has been removed. (#24047)
  • Serving ancient headers to other peers has been optimized. (#23105)
  • The discv4 test suite is more robust and logs received packets better. (#23966)
  • There are now fuzz tests for the snap protocol message handler. (#23957)

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


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

Far Rim (v1.10.13)

24 Nov 12:15
7a0c19f
Compare
Choose a tag to compare

Geth v1.10.13 is a scheduled maintenance release. It introduces a few polishes, though nothing major. Fixes wise, it does address a few thorns that affect a small portion of our users.

New features:

  • Retrospectively enforce account nonces to be less than 2^64-1 (#23853).
  • Configurable genesis gas limit in dev mode via dev.gaslimit (#23686).
  • Sanitize history config fields in the GPO when using toml (#23886).
  • Add support for custom freezer paths in db inspect (#23946).
  • Create evm b11r to build and seal blocks from json (#23843).
  • Extend evm t8n to support signing unprotected txs (#23937).
  • Polish evm t8n to have more meaningful CLI flags (#23934).
  • Implement the 4byte tracer natively in Go (#23882, #23916).
  • Use faster freezer scanning when reiniting leveldb (#23612).
  • Expose the gasUsed field in the evm command (#23919).
  • Improve error messages in the freezer (#23901).

New fixes:

  • Fix price filtering in tx pool to prevent low price legacy transaction from spamming the pool (#23855).
  • Fix log retrievals for users with very old archive nodes having legacy database formats (#23879).
  • Fix a snap sync issue where a malicious response could crash the syncing node (#23960).
  • Fix a data race in the simulated backed's gas price suggestion (#23898).
  • Fix receiptsRoot field name in the evm command output (#23924).
  • Fix setHead when pointing it back to the genesis (#23949).
  • Fix transaction sender recovery in ethclient (#23877).
  • Fix DNS discovery entry TTLs on Clouflare (#23885).
  • Fix intrinsicGas output in the t9n tool (#23889).

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


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

Vallhallan Threshold (v1.10.12)

08 Nov 13:45
6c4dc6c
Compare
Choose a tag to compare

Geth v1.10.12 is a scheduled maintenance release, but also contains some significant features!

The release enables the Arrow Glacier hard-fork, scheduled approximately for the 8th of December. The sole change is to postpone the difficulty-bomb until summer 2022, by which time hopefully The Merge will have happened.

The release also ships support for a new PoW testnet called Sepolia. This testnet was dreamed up during the merge interop in Athens and it's purpose is to replace Ropsten after the merge as the main cross client testnet. You can access it via geth --sepolia. Being a PoW testnet, it's possible to mine it for Ether to use as test funds.

Lastly, the release also contains a brand new call tracer implemented in Go, which should be significantly (2.5x) faster than the one currently used. You can use the new tracer via debug.traceTransaction("0xhash", {tracer: "callTracer"}). The original JavaScript tracer is still available for fallback purposes called callTracerLegacy. The latter will be dropped if nobody reports issues with the native one.

Improvements:

  • Implement the Arrow Glacier hard fork and schedule (#23810).
  • Bake in support for the Sepolia PoW test network (#23730).
  • Switch the call tracer to a fast native Go implementation (#23867, #23708).
  • Optimize nonce handling performance in the txpool (#22231).
  • Support password protected SSH key files in puppeth (#22148).
  • Optimize request/response matching in RPC batch queries (#23856).
  • Support transferring snapshots via geth db export snapshot (#22931).
  • Read chain data atomically from ancients/leveldb, avoiding an extra read (#23566).
  • Improve the hexutil package's big-int encoding performance by 50% (#23780)
  • Remove the xgo cross compiler as docker auto-build limits killed it (#23800).
  • Support invalid RLP blobs (at least fail gracefully) in the state t8n tool (#23771).

Bug-fixes:

  • Fix a crash in LES serving code (#23865).
  • Fix a data race in the miner's receipt copying code (#23835).
  • Fix a missing snapshot error after recovering from a crash (#23496).
  • Fix a memory leak in Clique if the network temporarilly halts (#23861).
  • Fix a crash if the disk gets full during ethash DAG generation (#23799).
  • Fix chain tracing to not go OOM during long running sessions (#23736).
  • Fix the simulated backend to allow running EIP-1559 transactions (#23838, #23840).
  • Fix an RPC crash when getting the signer of an empty Clique chain (#23832).
  • Fix the total difficulty number of nil-diff genesis blocks in the database (#23793).
  • Fix a crash in abigen generated code if backend header retrieval fails (#23781).

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


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

Xathorron (v1.10.11)

20 Oct 12:16
7231b3e
Compare
Choose a tag to compare

Geth v1.10.11 is another bug fix release, fixing an issue with sender not being recovered on pending transactions, and fixing a data corruption issue.

Changes in this release

  • For pending transactions returned by RPC, the sender address is again reported correctly. This was broken in the previous release. (#23765)
  • The rlpdump command can now turn structured text into RLP. (#23745)
  • A database corruption issue caused by the snapshot system is resolved. (#23635)
  • The evm tool's t9n mode performs even stricter transaction validation. (#23743)
  • You can now use line editing at the puppeth prompt. (#23718)
  • The geth db subcommands now accept (non-hex) string keys. (#23744)

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


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

Sytau (v1.10.10)

15 Oct 11:37
@fjl fjl
Compare
Choose a tag to compare

Geth v1.10.10 is another bug fix release.

Geth changes

  • Geth is much less likely to crash during shutdown, especially when mining is active. (#23435, #21992, #22853)
  • The new --rpc.evmtimeout flag allows setting the internal timeout for eth_call. The default timeout is still 5s. (#23645)
  • The geth console supports some ECMAScript 6 features like arrow functions, typed arrays and let bindings (#23721)
  • The console no longer crashes when trying to complete on properties with value 'null' or 'undefined'. (#23701)
  • The evm debugging/testing tool now validates transaction gas limits in 't9n' mode. (#23694)

RPC API changes

  • A regression in the JS-based call tracer is resolved. (#23667)
  • The new debug_getAccessibleState RPC method finds a block number at which full state is available. (#23646)
  • The new debug_getHeaderRlp RPC method fetches RLP-encoded headers from the database. (#23670, #23677)
  • The sender address is once again returned correctly for very old Frontier-era transactions. (#23683)

Go library changes

  • For contract calls using accounts/abi/bind, a regression that could lead to incorrect gas estimation is fixed. (#23719)
  • Package accounts/abi now has basic support for Solidity error types. (#23161)
  • Miner stress test tools work again (they were broken in the previous release) (#23699)
  • The transaction recipient address stored in types.Transaction is now truly independent of the address pointer passed to the constructor. (#23376)
  • The Receipt type now implements encoding.BinaryMarshaler, like Transaction (#22806)
  • TxPool.Pending no longer returns an error (#23720)

Build

  • As a workaround for tracing issues on Alpine Linux, we now set the C stack size to 8MB for release builds. (#23676)
  • Go module vendoring issues related to github.com/karalable/usb are finally resolved. (#23684)
  • This release is built with Go 1.17.2. (#23698)

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


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

Attican Beta (v1.10.9)

29 Sep 18:01
@fjl fjl
Compare
Choose a tag to compare

Geth v1.10.9 is a maintenance release containing mostly bug fixes.

Chain tracing has received quite a bit of attention during this release cycle. JS-based tracing now supports additional callbacks for entry and exit of contract calls, improving performance if processing individual opcodes is not needed.

Geth command changes

  • The 'evm' command has a new subcommand for testing tx decoding. (#23494)
  • 'evm t8n' now calculates and returns block difficulty. (#23353, #23507)
  • Legacy flags --rpc, --rpcaddr, --rpcport, etc. are no longer supported. (#23358)
  • Legacy debugging flags --pprofport, --pprofaddr, etc. are also no longer supported. (#23368)
  • When initializing Clique-based private networks, zero-length extradata in genesis.json now prints an error message instead of crashing. (#23538)

Go library changes

  • Contract bindings created by accounts/abi/bind now validate log event signatures. This prevents accidentally decoding events with the wrong signature. (#23230)
  • A crash in accounts/abi when decoding struct-typed Solidity return values is resolved. (#23573)
  • Writes to the ancient database are now batched internally for improved performance. (#23462)
  • Multiple data races in transaction pool code are fixed. (#23474)
  • Comprehensive benchmarks for RLP encoding/decoding of consensus types have been added. (#23190)
  • RLP encoding of slices and arrays is slightly faster. (#23467)
  • rpc.BlockNumber now implements encoding.TextMarshaler. (#23324)
  • The Account type has been moved from package core/state to core/types. (#23567)
  • For crypto/cloudflare/bn256 EC curve, in-place addition and unmarshalling now works correctly. (#23419)
  • A very rare crash in the background 'bloombits' indexer is resolved. (#23437)

RPC/GraphQL changes

  • JS tracing of EVM execution now provides additional callbacks for call entry/exit. Using these callbacks instead of 'step' can yield a 10-100x tracing speedup if you don't need to process every VM opcode. (#23087)
  • The '4byte' built-in tracer now uses enter/exit. (#23622)
  • A state database corruption bug caused by tracer re-execution of old blocks is resolved. (#23632)
  • The new debug_intermediateRoots method computes per-transaction state roots of a block. (#23594)
  • EVM memory and return data are no longer captured by default when tracing. (#23558)
  • EVM execution is now aborted on the server side when tracing is interrupted. (#23580)
  • Broken WebSocket connections are now detected better and their subscriptions report an error instead of hanging indefinitely. (#23556)
  • personal_sendTransaction now supports both "input" and "data" arguments, just like eth_sendTransaction. (#23476)
  • Log filtering performance is improved. (#23147)
  • Transaction access lists returned by GraphQL are now correct. (#23650)
  • The debug_stacks method now supports an optional filter expression. (#23605)
  • For clique blocks returned by RPC, the "miner" field once again contains the actual block coinbase field instead of the derived block signer. This fixes a regression where clients would no longer be able to verify the block seal signature. (#23466)

Networking

  • The eth/65 peer-to-peer protocol is no longer supported. Geth only supports eth/66 as of this release. (#23456)
  • The cross-client eth protocol tests suite better distinguishes eth/65 and eth/66. (#23568)
  • ENR sequence numbers are now initialized as a timestamp. This prevents issues when the p2p nodes database is dropped/re-created while keeping the nodekey the same. (#19903)
  • Several data races are resolved in packages p2p and p2p/enode. (#23434)
  • Note: to simplify the ongoing rewrite of eth/downloader, the package has been duplicated temporarily. The additional copy will be removed later. (#23561)

Build

  • This release is built with Go 1.17. (#23464, #23465, #23468)
  • 32 bit builds of Geth should be fully functional again. (#23543, #23542)
  • We no longer publish .deb packages for Ubuntu 20.10 Gorilla because this version is not supported by Launchpad anymore. (#23470)
  • The 'node' package no longer depends on wallet backends. Specifically, this removes the dependencies on libusb for contract bindings and other uses of the go-ethereum library. If you are using package node, you must now register required account manager backends individually. (#23019)
  • The 'metrics' package, and many packages that depend on it can now be compiled for WebAssembly. (#23449)
  • EVM performance tests no longer run on CI. (#23304)

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


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

Hades Gamma (v1.10.8)

24 Aug 07:07
2667545
Compare
Choose a tag to compare

Geth v1.10.8 is a pre-announced hotfix release to patch a vulnerability in the EVM (CVE-2021-39137).

The exact attack vector will be provided at a later date to give node operators and dependent downstream projects time to update their nodes and software. All Geth versions supporting the London hard fork are vulnerable (the bug is older than London), so all users should update.

Credits for the discovery go to @guidovranken (working for Sentnl during an audit of the Telos EVM) and reported via bounty@ethereum.org.

Beside the fix, we're merged in a few tiny polishes and fixes. For a rundown, please consult the Geth 1.10.8 release milestone.


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