Skip to content

Releases: ethereum/go-ethereum

No Nick (v1.8.19)

28 Nov 13:01
dae82f0

Choose a tag to compare

Geth v1.8.19 is our biweekly maintenance release, this current one delivering some notable performance improvements beside the usual polishes and bugfixes:

  • Trie read cache, increasing full-sync speed by 15% and in-sync processing by 30% (#18087).
  • Rework downloader common ancestor lookup, reducing network bandwidth (#18085).
  • Avoid light servers wasting trie hashers and recreating them all the time (#18116).
  • Limit the number of open file descriptors Whisper may consume (#18142).
  • More robust side chain importing code for very long chains (#17973).
  • Improve the logs when the node encounters a bad block (#18156).
  • Enable Constatinople in developers chains (#18162, #18179).

Notable bugfixes:

  • Fix a garbage collector flaw that lead to data corruption with high memory allowance (#18165).
  • Fix a light client fetcher issue that sometimes resulted in sync getting stuck (#18072).
  • Fix light client ancestor lookup issue surfaced by the downloader rework (#18196).
  • Fix a light client issue that stored invalid servers in its node database (#18093).

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

Geth binaries and mobile libraries are available on the Geth download page.


This release contains Swarm v0.3.7, which contains many bugfixes:

  • Add new database abstractions (shed package) (18183).
  • Remove multihash from Swarm Feeds (18175).
  • Refactor PSS message handler (18169).
  • Fix New function for-loop scope in simulation package (18161).
  • Add accounting metrics persistence (18136).
  • Fix batch writes in database migration (18113).
  • Use simulations.Event in simulation package (18098).
  • Fix Kademlia neighborhood depth in network package (18066).

Swarm binaries are available on the Swarm download page.

Devcon Delay (v1.8.18)

14 Nov 09:18
58632d4

Choose a tag to compare

Geth v1.8.18 is our biweekly maintenance release (postponed by 2 weeks due to devcon iv). It is a tiny release focusing mostly on polishes, test speedups and a handful of new features.

  • Emit warning logs on unsuccessful remote account accesses (#17887).
  • Extend eth_getWork miner packages with the block number (#18038).
  • Start generating digitally signed Ethereum node records (#17753).
  • Support using go-ethereum as a WebAssembly library (#17709).
  • Minor EVM EXP shortcuts to make common cases fast (#16851).
  • Implement Merkle proof retriever RPC APIs (#17737, #17965).
  • Add the refund amount to the standard json traces (#17910).
  • Capture source maps via solc compiler wrapper (#18020).
  • Support setting GOMAXPROCS from an env var (#17148).
  • Support encrypting the Clef master seed (#17704).
  • Bump most Go builders to 1.11.2 (#18031).

Notable bugfixes:

  • Fix a downloader issue to better measure remote capacity (#17983).
  • Fix an RPC race on concurrent subscribe/notification (#17874).
  • Fix an RPC data race around unsubscribe/close (#17894).
  • Fix bootnode enode output on -writeaddress (#17932).
  • Fix a deadlock in the p2p simulator framework (#17891).
  • Fix ethclient log filtering via block hashes (#17996).

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

Geth binaries and mobile libraries are available on the Geth download page.


This release contains Swarm v0.3.6, which among many bugfixes features:

  • Swarm light node mode: disable sync, retrieve, subscription messages (17899).
  • Bugfix: Swarm Feed update with empty signature returns HTTP 200 (18008).
  • Initial P2P accounting for message exchange (17951).

Note that a bug was fixed within the local Swarm database implementation, which requires a cleanup procedure to be run upon Swarm startup. This means that your Swarm node might take a while to start once you upgrade to this version.

Swarm binaries are available on the Swarm download page.

Shoutingstone (v1.8.17)

09 Oct 08:47
8bbe720

Choose a tag to compare

Geth v1.8.17 is our regular maintenance release, which among numerous bugfixes also features the full Constantinople feature set and enables it on the Ropsten testnet at block #4230000.

  • Update the chain indexer to react only to head events opposed to all blocks (#17826).
  • Deprecate building with Go 1.9 and update builders to Go 1.11.1 (#17807, #17820).
  • Expose the enode URL of a peer through the admin.peers endpoint (#17838).
  • Optimize CREATE and CREATE2 to do a bit less Keccak256 hashing (#17806).
  • Optimize the SHA3 opcode to do fewer allocs, reaching 2x speed (#17863).
  • Implement a lower bound on block propagation targets to 4 peers (#17725).
  • Drop the goimports dependency for running abigen (#17768.
  • Extend abigen to support piping solc output into it (#17648).
  • Use hex addresses in EVM assembly dumps (#17870).

Notable bugfixes:

  • Fix an annoying 2-3 minute hang when completing initial fast sync (#17825).
  • Fix the infamous invalid hash chain error during initial sync (#17839).
  • Fix flag parsing to allow archive nodes serving light clients (#17803).
  • Fix a puppeth regression causing invalid enode errors (#17802).

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

Geth binaries and mobile libraries are available on the Geth download page.


This release contains Swarm v0.3.5, which among many bugfixes features:

  • Swarm Feeds (previously knowns as MRU): Adaptive frequency / Predictable lookups (17559, 17796).
  • Introduced named database schemas and migrations (17813).
  • Add stream peer servers limit (17747).
  • Fixed DoS attack with invalid OfferedHashes message length (17734).
  • Fixed panic on ARMl6 arch (64bit struct alignment) (17766).

Swarm binaries are available on the Swarm download page.

Budapest (v1.8.16)

24 Sep 13:07
477eb09

Choose a tag to compare

Geth v1.8.16 is out regular maintenance release focusing on bugfixes:

  • Fix RPC timeouts on WebSockets when using the ethclient package (#17549).
  • Fix the ABI decoder for negative integers which previously overflown (#17583).
  • Fix the Clique consensus regression that caused the Rinkeby split (#17620).
  • Fix incorrect file permissions for the proof-of-concept Clef signer (#17652).
  • Fix a light client deadlock causing the Rinkeby faucet hangs (#17705, #17727).
  • Fix the evm state tester to support more prestate fields (#17685).
  • Fix the ethash mining hashrate reporting regression (#17667).
  • Fix nil-pointer panic when processing malicious ABIs (#17653).
  • Fix a rare panic in the light client on shutdown (#17639).

Also on adding a few minor features:

  • Miners will prefer their own blocks if all else is equal during fork choice (17656, 17715).
  • Reduce les overhead via internal caching on the Rinkeby faucet (#17732).
  • Double check account creation password after writing to disk (#17348).
  • Support basic authentication for WebSockets through URLs (#17699).
  • Polish confusing info logs for insta-mining dev chains (#17614).
  • Add support for Clique based test chain generation (#17622).
  • Add Constantinople ice-age delay implementation (#17675).
  • Add Constantinople net gas store implementation (#17383).
  • Add initial switches for EVM/EWASM extensions (#17687).
  • Add block age fields to chain import logs (#17718).
  • Bump the build servers to Go 1.11 (#17701).

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

Geth binaries and mobile libraries are available on the Geth download page.


This release contains Swarm v0.3.4, which among many bugfixes features:

  • Fixed ENS resolver bug (17483).
  • Fixed bzz-immutable URLS (17602).
  • Refactored and simplified Kademlia code (17641).
  • Refactored chunk storage and synchronization (17659).
  • Add passwords as access controlled entities (17598).

Swarm binaries are available on the Swarm download page.

Khazad-dûm² (v1.8.15)

29 Aug 15:31
89451f7

Choose a tag to compare

Geth v1.8.15 is a small patch release on top of v1.8.14 (Khazad-dûm) to fix a few issues discovered post-release and to implement a few missing features to make mining "complete":

  • Fix a data race that could lead to corruption if multiple PoW solutions are found concurrently within the same mining cycle, but for different work tasks (#17489).
  • Fix a data corruption if a PoW solution is found to an older block within a single mining cycle (#17490).
  • Fix the timestamp and difficulty for recommitted transaction sets at the same block height (17547).
  • Fix CPU mining for embedded in-process go-ethereum instances (#17492).
  • Extend the logs to differentiate between reorged-but-included and reorged-and-excluded blocks (#17494).
  • Extend ethash to accept stale results for past mining tasks and track them as potential uncles (#17506).
  • Make uncle tracking stateless to permit correct inclusion even in the face or large-ish reorgs (#17540).
  • Support skipping PoW verification for remote miner submissions via --miner.noverify (#17506).
  • Support hard capping the gas limit of mined blocks via --miner.gaslimit (#17546).

Note, --miner.gastarget and --miner.gaslimit defaults to 8M starting from this release. If you require different values, make sure you set them explicitly. Puppeth was also extended to support both configs.

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

Geth binaries and mobile libraries are available on the Geth download page.


A quick recap of the miner features introduced in v1.8.14:

  • Track multiple miner work packages concurrently, permitting miners to start working on an empty block and replace it in the background with a full one, reducing mining delay by 200+ ms on mainnet (#15853, #17323).
  • Insert uncles instantly into active work packages instead of waiting till the next block (#17320, #17469).
  • Recommit active mining work every 3 seconds, maximizing block fullness and miner fees (#17413).
  • Configurable recommit interval with dynamic adjustment in case of system overload (#17444).
  • Support miner push notifications for new work packages via HTTP POST requests (#17347).
  • Support priority mining for local transactions, specifiable via --txpool.locals (#17472).
  • Log block fullness and expected fees for current miner work package (#17416, #17426).
  • Remote mining will use memory mapped ethash DAGs instead of caches (#17405).
  • Clean up miner CLI flags and deprecate old ones (#17402).

Note, there are two minor breaking changes wrt mining: 1) remote mining requires the --mine flag from now on and will not automatically start on a eth_getWork request; 2) --mine will not start a CPU miner, you need to explicitly specify --miner.threads=N in addition.

Khazad-dûm (v1.8.14)

22 Aug 08:46
316fc7e

Choose a tag to compare

Geth v1.8.14 is our regular maintenance release, the current one focusing on heavy miner improvements and general polishes throughout the code base. Big shout-out to @rjl493456442 for championing this release and @ppratscher for helping test it.

First up, the newly introduced miner features:

  • Track multiple miner work packages concurrently, permitting miners to start working on an empty block and replace it in the background with a full one, reducing mining delay by 200+ ms on mainnet (#15853, #17323).
  • Insert uncles instantly into active work packages instead of waiting till the next block (#17320, #17469).
  • Recommit active mining work every 3 seconds, maximizing block fullness and miner fees (#17413).
  • Configurable recommit interval with dynamic adjustment in case of system overload (#17444).
  • Support miner push notifications for new work packages via HTTP POST requests (#17347).
  • Support priority mining for local transactions, specifiable via --txpool.locals (#17472).
  • Log block fullness and expected fees for current miner work package (#17416, #17426).
  • Remote mining will use memory mapped ethash DAGs instead of caches (#17405).
  • Clean up miner CLI flags and deprecate old ones (#17402).

Note, there are two minor breaking changes wrt mining: 1) remote mining requires the --mine flag from now on and will not automatically start on a eth_getWork request; 2) --mine will not start a CPU miner, you need to explicitly specify --miner.threads=N in addition.

Other smaller features:

  • Light client checkpoint support for Rinkeby and Clique in general to avoid long sync times (#17466).
  • Light client CHT and log bloom indexers are supported in light client mode too (16534, #17419, 17465).
  • Support trusted peer management (addition/removal) via RPC API function calls (#16333).
  • Support specifying the block gas limit for simulated test chains (minor API break) (#17358).
  • Support specifying pubkey identity files into puppeth connection strings (#17407).
  • Gracefully shut down puppeth instances when deploying new versions (#17311).
  • Add missing bn256 license, release package under BSD-3 (#17451).

Noteworthy bugfixes:

  • Fix a trie GC error in the transaction tracer that occasionally resulted in panics (#17357).
  • Fix a transaction chain tracing panic if an invalid parametrization was specified (#17460).
  • Fix a crash in the mobile framework when setting a transaction recipient to nil (#17310).
  • Fix the alltools cross compiled bundles to properly build every binary (#17288).
  • Fix a puppeth nil panic caused by non responsive remote servers (#17412).
  • Update Constantinople CREATE2 contract formula to the new spec (#17393).
  • Break accidental PPA dependency of Geth -> Swarm (#17425).
  • Fix compilation issues on Go 1.11 (#17368, #17467).

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

Geth binaries and mobile libraries are available on the Geth download page.


This release contains Swarm v0.3.2, which among many bugfixes features:

  • Access control to content in Swarm using password or Elliptic Curve keys (#17404).
  • Updated Swarm bootnodes (#17414).
  • MRU panic fix (#17313).

You can download stable versions of Swarm using the ethereum-swarm debian package through the well known Ethereum PPA repository.

Swarm binaries are available on the Swarm download page.

Swarming (v1.8.13)

31 Jul 10:46
225171a

Choose a tag to compare

Geth v1.8.13 (Swarming) is our ~biweekly maintenance release, currently focusing on minor code polishes, build reorganization and general bug fixes. A highlight of the release is a version and bundle separation for Swarm. Furthermore, we'll also do combo release notes going forward, explicitly detailing both Geth and Swarm!

  • Support block filtering via hashes, not just range queries (#16734, #17284).
  • Upgrade leveldb to resume writes during heavy compaction too (#17144).
  • Support swappable interpreters in preparation for ewasm (#17093).
  • Implement progress reports for long running chain exports (#17066).
  • Switch the Azure blobstore client API to fix deprecated builds (#17245).
  • Configurable timeout values for the HTTP RPC API web server (#17240).
  • Polish puppeth's status listing to display long ethstats ban lists (#17279).
  • Fix a puppeth node id retrieval issue on <2GB RAM machines (#17281).
  • Fix a miner race condition for low block-period (1s) chains (#17173).
  • Disable Ubuntu Artful, enable Ubuntu Cosmic PPA builds (#17251).
  • Detect and reject invalid flag/argument usage (#17248).
  • Write evm utility errors to stderr (#17118).

Preliminary EIPs for the upcoming Constantinople fork:

  • Skinny create to allow counterfactual contract creation (#17196).
  • Extcodehash to allow smart contracts to retrieve code hashes (#17202).

Other notable changes:

  • Relicense the secp256k1 Go wrapper from LGPL under BSD-3 (#17225, #17239).

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

Geth binaries and mobile libraries are available on the Geth download page.


This release contains Swarm v0.3.1, which features:

  • Own Launchpad PPA package ethereum-swarm and custom version tracking (#16988).
  • Client-side MRU signatures: create and update mutable resources through any node, including Web3 support (Mist, Metamask, etc) (#17231).
  • PSS generic notifications (#17150).
  • Refactored network simulation framework (#17241).
  • Better abstraction for HTTP request hangling (#17164).
  • Cross process and machine tracing support (#17169, #17170).

From now on you can now download stable versions of Swarm using the ethereum-swarm debian package through the well known Ethereum PPA repository.

Swarm binaries are available on the Swarm download page.

Waggle Dance (v1.8.12)

05 Jul 10:15
@fjl fjl

Choose a tag to compare

This release contains the PoC 3 version of Swarm as well as some minor improvements and
bug fixes. The Swarm update merges one year of development effort back into the main
go-ethereum repository. Read the announcement blog post for more information.

Performance changes:

  • The intermediate trie GC buffer now uses less memory (#16876)
  • The EVM big integer pool is reused across transactions (#17070)
  • MSTORE and SLOAD EVM instructions are a bit faster (#16939)

Networking changes:

  • A crash in the LES header fetcher is resolved (#17034)
  • Discovery ping/pong logic uses less goroutines (#17048)

Miscellaneous changes:

  • Log message time stamps are properly aligned again (#17054)
  • Network ID is set correctly when -dev is set (#16833)
  • Opcode analysis tracers have been added (#16954)
  • Geth now supports exporting metrics to InfluxDB (#16979)

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

Binaries and mobile libraries are available on our download page.

Streamline (v1.8.11)

12 Jun 14:11
dea1ce0

Choose a tag to compare

Geth v1.8.11 (Streamline) is our biweekly maintenance release, focusing mainly on performance. Overall this release is ~28% lighter on disk IO and ~23% faster on block processing:

  • Reduce full-node database rate of growth by 28% (#16810).
  • Speed up ethash verification cache generation by 24% (#16857).
  • Increase the Merkle trie hashing performance by 12-50% (#16896).
  • Increase block processing and propagation speed by 15-25% (#16882).
  • Reduce runtime complexity of retrieving pending transactions (#16958).
  • Cap cache allowance to Go's GC limits and stabilize memory (#16800).
  • Reduce database lookups for reverse header retrieval requests (#16946).

Not performance improvement, but nice nonetheless:

  • Extend abigen to support binding contracts from STDIN (#16683).
  • Extend bad block tracking and reporting to full blocks (#16902).

Beside the improvements, there are also a few bugs squashed:

  • Fix invalid errors for balance retrievals of non-existing blocks (#16942).
  • Enforce RPC timeouts to avoid stalling HTTP connections (#16880).
  • Fix a goroutine leak in light clients for cancelled requests (#16861).
  • Fix a goroutine leak in light clients for timed out requests (#16776).
  • Fix an invalid header request handling in light servers (#16891).
  • Fix light server tracking regression in light clients (#16947).
  • Fix miner to handle side blocks more gracefully (#16751).
  • Fix 4byte tracer to count external CALLs too (#16879).
  • Fix shutdown hang on invalid genesis json (#16794).

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

Binaries and mobile libraries are available on our download page.

Sacrosancter (v1.8.10)

30 May 08:15
eae63c5

Choose a tag to compare

Geth Sacrosancter (v1.8.10) is a tiny hotfix release to the v1.8.9 release:

  • Fixes a deadlock in the transaction pool during high churn (#16843).

The original v1.8.9 release contained:

  • Handle transaction churn gracefully, reducing idle CPU load on mainnet by an entire core (#16720).
  • Fix an issue where slow peers could cause goroutine leaks and out-of-memory crashes (#16769).
  • Warn user when database performance is degraded/paused due to leveldb compaction (#16766).
  • Reduce transaction retrieval API median/worstcase call times by an order of magnitude (#16670).

Feature wise, we've added a few Go API niceties, mostly building blocks for later releases:

  • Support Go tags for ABI structures during marshalling and unmarshalling (#16648).
  • Ensure Ethereum Node Records are compatible with discovery v4 (#16679).
  • Support Merkle proof generation from trie iterators too (#16722).

For a full rundown of the changes please consult the Geth 1.8.9 and Geth 1.8.10 release milestones.

Binaries and mobile libraries are available on our download page.