Skip to content

Releases: ethereum/go-ethereum

Tavum (v1.9.21)

09 Sep 08:25
0287d54
Compare
Choose a tag to compare

Geth v1.9.21 is a regular maintenance release, the highlights being the removal of whisper, better call tracing and multiple memory stability fixes during fast sync to both stabilize usage as well as to fix a memory leak that lead to crashers before.

  • Remove Whisper as promised a couple months ago (#21487, #21526, #21527)!
  • Minor user experience polishes around legacy Ledger derivation paths (#21517).
  • Implement arbitrary call tracing via debug_traceCall on top of arbitrary blocks (#21338).
  • Expose internal transaction revertals and revert reason in the call_tracer tracer (#21387).
  • Cap the number of in-memory trie nodes during fast sync, fix crasher memory leak (#21491).
  • Prepare the trie syncer for path-based operation to support the upcoming snap sync (#21504).
  • Limit the cached data in the downloader more aggressively to avoid memory fluctuations (#21366).
  • Fix the simulated chain to not allow changing block timestamps if transactions were included (#21334).
  • Fix an ABI parser issue around tuples (#21501).

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


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

Paragade (v1.9.20)

25 Aug 14:23
@fjl fjl
Compare
Choose a tag to compare

Geth v1.9.20 is another maintenance release containing bug fixes and security enhancements. This update is recommended for all users.

Please note that reverting to Geth v1.9.19 or prior after upgrading to v1.9.20 is not possible without a resync because the blockchain database layout has changed.

New Features:

  • You can now query the Chain ID using GraphQL (#21451)
  • The evm command can now appends the TX hash to state transition output files (#21406)

Bug Fixes & Optimizations:

  • Blockchain rewinding and chain repair, i.e. using the SetHead operation, now behave
    correctly in all cases. An extensive test suite for chain repair has been added. (#21409, #21409)
  • Discovery DHT bootstrapping now works properly in very small private networks. (#21396)
  • Contract code is now stored separately from state tree data in LevelDB. This change will
    help with future database upgrades. (#21080)
  • Two additional metrics counters for blockchain reorgs have been added. (#21420)
  • Metrics collection is now lock-free, causing less lock contention among peer connections (#21446, #21470)
  • The GetNodeData operation in the eth peer-to-peer protocol now uses the fast-sync bloom filter
    to speed up request processing. (#21445)
  • Importing block data during fast-sync now performs significantly fewer database reads. (#21468)

Build Changes:

  • This release is built with the new and shiny Go 1.15 compiler version (#21466)
  • The Ubuntu PPA now contains builds for Ubuntu 20.10 Groovy Gorilla. Ubuntu 19.04 Disco
    Dingo is no longer supported. (#21461)

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


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

Red Janey (v1.9.19)

11 Aug 11:13
3e06419
Compare
Choose a tag to compare

Geth v1.9.19 is our regular biweekly maintenance release. Apart from the numerous bug-fixes however, it also ships a more deterministic transaction sort order during mining (FIFO). The goal is to reduce front-runner spam which abused miner randomness for transactions at the same price level.

  • Sort same-priced transactions by arrival time during mining to reduce front-running (#21358).
  • Persist the trie read cache on shutdown to speed up warmup time after a reboot (#20391).
  • Swap out the block fetcher of les/x to use the same mechanism as eth/6x (#20692).
  • Support setting custom HTTP headers on RCP clients e.g. for authentication (#21392).
  • Refactor node lifecycle management, merge GraphQL onto HTTP endpoint (#21105).
  • Print enode ID of a node too when doing an ENR dump via devp2p (#21270).
  • Trim the build paths to avoid leaking builder infos into the binaries (#21374).
  • Limit concurrent UPnP requests to avoid crashing certain routers (#21390).

Bugfixes:

  • Fix a potential data corruption by leaking out txpool internals into the miner (#21159).
  • Avoid a light server doing EVM calls during handshake while it's syncing (#21425).
  • Fix the trie clean cache size calculation if snapshots are disabled (#21416).
  • Revert an optimization regression in the JUMPDEST analysis (#21411).
  • Fix EIP 712 structured data signing corner cases (#21306, #21307).
  • Fix round-trip time calculation in the downloader (#21427, #21429).
  • Fix a panic in ethstats on the Görli stats page (#21404, #21434).
  • Fix a hang in the initial fast-sync's state sync phase (#21433).
  • Fix graceful LES server shutdown (#21426).

Note, if you were using GraphQL previously, it was moved to the HTTP RPC endpoint. The old --graphql.host and --graphql.port flags will not work any more. You might need to adjust your TOML config files accordingly too.

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


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

Illium Elite (v1.9.18)

27 Jul 12:00
f538259
Compare
Choose a tag to compare

Geth v1.9.18 is a bugfix release, fixing an occasional fast sync hang in the throttling mechanism (among other improvements):

  • Memory allocation micro-optimizations to improve raw EVM number crunching by 5% (#21336).
  • Fix a regression that made previously persisted --dev chains unable to load back up (#21352).
  • Support configurable developer account (and passphrase) in --dev mode (#21301).
  • Fix downloader throttling that degraded sync and occasionally locked it up (#21263).
  • Fix local gomobile building and fix iOS framework builds (#21361, #21362).
  • Fix stale transaction eviction bug, stabilizing pool churn (#21300).

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


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

Mount Milgrom (v1.9.17)

20 Jul 13:02
748f22c
Compare
Choose a tag to compare

Geth v1.9.17 is a small maintenance release (trying to get back onto the biweekly schedule), though it does pack a few punches as well!

  • Enable historical garbage collection for light clients (#19570).
  • Apply --rpc.txfeecap to a few missed endpoints (#21231).
  • Drastically reduce allocations in the transaction pool (#21328).
  • Drastically reduce allocations on certain EVM opcodes (#21222).
  • Raise the default gas limit in --dev mode to 12 million (#21323).
  • Fix ethstats reconnect issue and fix constant Görli drops (#21347).
  • Fix gas estimation if balance / price overflown uint64 (#21346).

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


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

Ryncol (v1.9.16)

10 Jul 10:41
@fjl fjl
Compare
Choose a tag to compare

Geth v1.9.16 is another maintenance release containing a couple minor new features, bug fixes, and block processing optimizations.

This release adds the --rpc.txfeecap geth option, which limits transaction fees to a set value. This limit applies to transactions sent via eth_sendTransaction. The default limit is 1 ether. (#21212)

The default value for --rpc.gascap is now 25M gas. It previously defaulted to unlimited gas. This applies to eth_call and will reject calls which request more gas than the cap. (#21229)

Minor new features:

  • You can now run the metrics HTTP server on a separate endpoint. (#21290)
  • Protocol message metrics now count the number of messages in addition to bandwidth. (#21256)
  • The geth import command now exits with status 1 if errors have occurred. (#21244)
  • The debug_traceTransaction RPC method now includes read storage entries in structlog output. (#21204)
  • cmd/evm: add state transition tool for testing (#20958)
  • cmd/devp2p: the devp2p tool now contains a test suite for Discovery v4 (#21163)
  • cmd/devp2p: the new devp2p key command family provides node key management tools (#21202)
  • cmd/ethkey: you can now use the --passwordfile option with the ethkey generate command (#21183)

Optimizations:

  • The EVM now uses the 'uint256' library, improving the performance of math-heavy calls. (#20787, #21206)
  • The LES server no longer queries the checkpoint contract for every peer connection, reducing CPU usage. (#21285)
  • The gas price oracle now requires significantly less bandwidth when using the light client. (#20409)
  • The RLP encoder allocates a lot less, especially for big.Int, [N]byte and list-heavy data structures. (#21291, #21274)
  • The github.com/golang/snappy dependency has been updated and includes a couple new new optimizations, including an assembly language implementation for arm64. (#21237, #21304)
  • crypto, core/types: less allocations when hashing and tx handling (#21265)
  • trie: reduce allocations in insertPreimage (#21261)
  • crypto/secp256k1: enable 128-bit int code and endomorphism optimization (#21203)
  • core/state: avoid escape analysis fault when accessing cached state (#21192)

Bug fixes:

  • A long standing bug related to internal fast sync restarts is resolved. (#21260)
  • Account management methods no longer crash when the external signer is enabled. (#21279)
  • eth_call now defaults to the gas cap value instead of MaxInt64. This avoids warnings for calls with unspecified gas. (#21284)
  • Geth now builds and runs on DragonflyBSD (#21275, #21241)
  • Package ethclient and the accounts/* package tree no longer depend on the RPC API implementation package. (#21319)
  • eth/downloader: fixes data race between synchronize and other methods (#21201)
  • utils: fix ineffectual miner config flags (#21271)
  • eth: returned revert reason in traceTx (#21195)
  • core/vm: fix incorrect computation of BLS discount (#21253)
  • eth: don't block if transaction broadcast loop fails (#21255)
  • core/rawdb: fix high memory usage in freezer (#21243)
  • core/rawdb: swap tailId and itemOffset for deleted items in freezer (#21220)
  • cmd, node: dump empty value config (#21296)
  • internal/web3ext: add missing params to debug.accountRange (#21208)
  • accounts/abi: make GetType public again (#21157)

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


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

Dextro Heat Sink (v1.9.15)

08 Jun 09:01
@fjl fjl
Compare
Choose a tag to compare

Geth v1.9.15 is a maintenance release containing bug fixes as well as implementations of all EIPs currently scheduled for the upcoming Berlin fork. A temporary test network for these EIPs has also been launched at https://yolonet.xyz/ and can be joined via Geth with --yolov1 flag.

The minimum Go version required to build go-ethereum is now Go 1.13.

The eth_call, eth_estimateGas and eth_sendTransaction RPC methods now return the revert reason as a JSON-RPC error when the contract executes REVERT. The returned error includes the decoded reason string in the error message, and also makes the raw REVERT data available in the error's "data" field:

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": 3,
    "message": "execution reverted: some error",
    "data": "0x08c379a000000000000000000..."
  }
}

Other improvements and fixes in this release:

  • The LES 'server pool' was rewritten and can now use DNS discovery to find light servers (#20758).
  • Argument checking for natively-implemented console functions is improved (#21081, #21160).
  • Geth no longer hangs during shutdown while waiting for synced blocks to import (#21114).
  • The RPC client now sends WebSocket ping frames when connection is idle (#21142).
  • Uses of the gosigar library have been replaced by gopsutil. This restores building Geth on darwin without cgo and makes automatic database cache size selection work on OpenBSD (#21041).
  • Prometheus metrics exporting no longer sends duplicate type definitions (#21068).
  • Password input prompts in Clef now work when stdin is not a TTY (#20960).
  • Internal sync error reporting has been made more detailed (#21067).
  • EVM JUMPDEST checks are a bit faster in certain cases (#21123).
  • Fix the puppeth faucet's tweet retrieval endpoint (#21172).

The following core EIPs are implemented in this release:

  • EIP-2537: Precompile for BLS12-381 curve operations (#21018).
  • EIP-2315: JUMPSUB for the EVM (#20619).

Please note that the EIP implementations are not yet scheduled to activate and will receive further testing and development before the fork.

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


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

Pink Marble (v1.9.14)

13 May 09:36
6d74d1e
Compare
Choose a tag to compare

Geth v1.9.14 is a regular maintenance release, but is also packs a punch with some interesting new features!

Ethereum mainnet currently contains over 700M transactions. Each full node maintains a search index, stating that transactions with hash H is stored in block B. This allows you to look up an arbitrary transaction from the past (at a significant storage cost). But how often do you look up transactions from years ago?

Geth v1.9.14 ships a --txlookuplimit flag, which specifies the number of recent blocks you want to maintain the search index for (by default it's 0 = since genesis). At its most extreme, you can set it to 1, to prune all past indexes. At the time of release, this reduces your LevelDB SSD footprint by 32GB! You can modify this flag at will, Geth will unindex/reindex in the background based on the current setting. If you unindex a lot of transactions, you might need to compact your database to reclaim the space immediately via debug.chaindbCompact().

Deleting transaction indexes locally is fine since they are not used in consensus nor in synchronization, so network health is unaffected. Light servers for now do need to maintain the full index since light clients rely on them. Huge props to @rjl493456442 and @holiman for this work (#20302).

txlookuplimit

In the current release, we've reworked gas estimation so that reverting transactions will give you a proper error, bubbling up the EVM revert reason (#20830). The release also renamed most of the RPC API related flags to make them consistent with our namespace style, but don't worry, the deprecated flags will keep working for the foreseeable future (#20935).

A rundown of shipped features:

  • Implement background transaction indexing and transaction index deletion (#20302).
  • Improve gas estimation to return the failure/revert reason too if available (#20830).
  • Make light client chain selection logic similar to full nodes on Clique PoA (#20931).
  • Drop the --override.istanbul and --override.muirglacier flags (#20942).
  • Rename a significant number of flags to have consistent namespaces (#20935).
  • Optimize the ABI decoder to only calculate method IDs once (#20895).
  • Remove legacy v5 discovery bootnodes used by LES (#20949).
  • Various ABI package refactors and cleanups (#21009, #21022).
  • Support overloaded struct fields in the ABI parser (#21060).
  • Implement account and storage trie range proofs (#20908).
  • Implement snapshot storage iteration (#20971).

A rundown of fixed bugs:

  • In case of a corrupted database, fail block processing, don't report bad block (#21039).
  • Fix a fast sync regression that didn't properly abort on premature shutdown (#20988).
  • Fix the logger to properly escape all special characters in context fields (#20987).
  • Fix the snapshot journal reloading to not lose deleted account markers (#21003).
  • Fix a trie data race when accessing preimages through the RPC APIs (#20923).
  • Fix the TCP P2P dialer to reject enode IDs that advertise TCP port 0 (#21008).
  • Fix gas estimation to cap max attempted usage at account balance (#21043).
  • Fix the Java abigen code generator to support void return types (#21002).
  • Fix the memory capper to be more aggressive on 32bit platforms (#21028).
  • Fix a data race in key import if the same is imported concurrently (#20915).
  • Fix a data race in the snapshot iteration (upcoming protocol) (#20948).
  • Fix a freezer termination annoyance that printed warnings (#21010).
  • Fix the state dumper to also include the zero address (#21038).
  • Fix an ethstats regression that was leaking tickers (#21071).
  • Fix receipt loss in empty Clique blocks after a crash (#21045).
  • Fix a memory leak in the snapshot storage iteration (#21036).
  • Fix accidental snapshot creation on archive nodes (#21025).
  • Fix startup parameters of Windows .lnk files (#21055).

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


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

Drossix Blue (v1.9.13)

16 Apr 07:43
cbc4ac2
Compare
Choose a tag to compare

Geth v1.9.13 is a scheduled maintenance release, focusing on polishes and fixes. The highlight of the release is that we've finally merged support for dynamic state snapshots, something we've been working on for over half a year. For now it's not yet enabled by default, but we're hoping for big things to be built on top of this.

This release also switches over to Go 1.14.2 (the first version in the 1.14.x family that is stable for Ethereum), resulting in about 10% block processing speedup.

A summary of the features we've been working on:

  • Implement dynamic state snapshots (behind --snapshot for now) (#20152).
  • Bump the propagated transaction size limit to 128KB, up from 64KB (#20835).
  • Support running the HTTP and WebSocket RPC on the same port (#20810).
  • Support keeping the ethash caches and DAG forcefully in RAM (#20484).
  • Deprecate --testnet in favor of --ropsten, but keep it for now (#20852).
  • Add a newaccount command to Clef, mostly for tutorial purposes (#20782).
  • Expose individual metrics for every RPC method call type (#20847).
  • Add support for exposing/exporting metrics from geth import runs (#20738).
  • Add debug_accountRange RPC API to iterate over the accounts (#19645).
  • Write up the documentation for the checkpoint-admin command (#20697).
  • Change DNS discovery record TTLs to saner values (#20801, #20819, #20820).
  • General cleanups in the ecies crypto package used by RLPx(#20836).

And a summary of the bugs we've been fixing:

  • Improve node shutdown, avoiding a crash in fast sync (#20695).
  • Fix filtering for event topics consisting of negative integers (#20865).
  • Fix and clean up database iteration with prefixes and start keys (#20808).
  • Fix an issue in eth_call that changed the balance of the caller (#20783).
  • Fix a crash in initial fast sync when also mining at the same time (#20780).
  • Fix the RPC startup logs to display the actual port if requested 0 (#20789).
  • Fix a light client deadlock that caused the testnet faucets to freeze up (#20828).
  • Fix a data race in the ancient database between retrieval and shutdown (#20919).
  • Fix an annoying duktape build warning that many believed was an error (#20777).
  • Fix an iteration issue in rawdb tables that returned wrong keys (unused code) (#20703).
  • Fix an RPC regression in the clique namespace that broke default arguments (#20781).
  • Fix an annoyance that rejected --rpcapi=rpc (not that you would need to use this) (#20776).
  • Fix an iOS build issue caused by CPU metrics relying on an unavailable kernel header (#20816).

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


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

Tall Moose (v1.9.12)

16 Mar 11:47
b6f1c8d
Compare
Choose a tag to compare

Geth v1.9.12 is a small bugfix release, mostly to keep a semi-regular schedule.

One small breaking change in the release is that eth_call will not default to your first account any more if you don't explicitly specify a sender. This was done to avoid the same input behaving differently in different environments. You should never do eth_call without explicitly setting a sender in the first place.

Changes:

  • Default to the zero (0x00...0) account for eth_call sender if none was specified (#20702).
  • Add missing CallOpts.SetFrom for mobile to permit setting a sender on calls (#20721).
  • Decouple constants in two EIPs applied together in Istanbul (#20646).

Fixes:

  • Fix a console regression that lost support for escape and unescape (#20700).
  • Fix failing CI runs due to randomness in tx fetcher scenario tests (#20712).
  • Fix a goroutine leak in transaction propagation (#20762).
  • Fix a possible data race in the downloader (#20690).

The release also includes a few changes towards supporting Go 1.14, but the switch-over is postponed until Go 1.14.1 is released due to an issue in Go around faulty Linux kernel detection.

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


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