Geth v1.8.22 re-enables all Constantinople changes and contains an additional fork, Petersburg,
to disable EIP-1283. This procedure is meant to ease the transition on networks like Ropsten where
the Constantinople transition had already taken place when an issue with EIP-1283 was discovered.
On the main network, Constantinople and Petersburg activate at the same time.

The block numbers are:

  • 7280000 for Constantinople on Mainnet
  • 7280000 for Petersburg on Mainnet
  • 4939394 for Petersburg on Ropsten

Note that the Petersburg change is set to activate simultaneously with Constantinople unless
configured otherwise. If you are running a private network, you must schedule the Petersburg
fork through chain configuration before updating to v1.8.22 if Constantinople has already
activated on your network.

In addition to the consensus changes, this release contains peer-to-peer networking security
improvements in the peer discovery subsystem.

List of all changes:

  • core, cmd/puppeth: implement constantinople fix, disable EIP-1283 (#18486)
  • p2p/discover, p2p/enode: rework endpoint proof handling, packet logging (#18963)
  • p2p/discover: improve table addition code (#18974)
  • travis, appveyor: bump to Go 1.11.5 (#18947)

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

Assets 2

@karalabe karalabe released this Jan 15, 2019 · 7 commits to release/1.8 since this release

Geth 1.8.21 is an emergency hotfix release to postpone the mainnet Constantinople upgrade! The reason is a last minute reentrancy vulnerability dicovered by ChainSecurity.

If you don't feel comfortable with upgrading to Geth 1.8.21, you also have the option to:

  • Downgrade to Geth 1.8.19; or
  • Continue running Geth 1.8.20 using the --override.constantinople=9999999 flag.

See details here.


Beside the emergency Constantinople delay, the release also contains some tweaks:

  • Return the pending nonce from the transaction pool, not the pending block (#15794).
  • Accept application/json-rpc too as the RPC API content type (#18310).
  • Sanitize transaction pool config to avoid invalid user settings (#17210).
  • Convert ABI names to properly camel-cased names (#16513, #18372).
  • Warn the user when the IPC path is too long for the kernel (#18330).
  • Support CALLs from the Go APIs against specific blocks (#17942).
  • Bubble up internal ABI parsing errors to the caller (#17328).
  • Support dumping the CLI configs directly to a file (#18327).
  • Switch Keccak implementation to upstream Go (#18390).
  • Add CREATE2 support to the callTracer (#18318).
  • Bump all builders to Go 1.11.4 (#18314).

And some bugfixes:

  • Fix a downloader panic caused by the side chain import rework (#18335).
  • Fix an ABI unpacking issue when parsing 2 dimensional slices (#18321, #18364).
  • Fix a discovery protocol error when looking up remote peers (#18309).
  • Fix puppeth panic when using degenerate genesis configs (#18344).
  • Fix compilation regression on PPC64 processors (#18376).
  • Fix broken database version tracking (#18429).

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

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

Assets 2

@karalabe karalabe released this Dec 11, 2018 · 77 commits to release/1.8 since this release

Geth v1.8.20 is a bit of a special release. On one hand it's the release that finally enables the Constantinople hard fork on mainnet at block 7080000 (and Rinkeby at block 3660663). It's also our last planned release of the 1.8 family (we'll still do hotfixes if need be), meaning that we'll start merging backwards incompatible changes onto master in preparation of Geth 1.9.0 (we don't have an ETA for it, but January the earliest).

Notable changes in the release are:

  • Hard code the mainnet and Rinkeby Constantinople hard-fork block numbers (#18268)
  • Allow overriding the Constantinople hard-fork block from the command line (#18273).
  • Remove the artificial 2K file descriptor limit from Geth, use all allowed (#18211).
  • Support exporting genesis specs to Parity and Aleth from Puppeth (#18172).
  • Support the new (1.23) docker_compose APIs change in Puppeth (18281).
  • Enforce lowercase network names on Puppeth private networks (#18235).
  • Support standard-tracing transactions straight to the filesystem (#17914).
  • Support whitelisting blocks help chain selection during forks (#18028).
  • Support big number constructors on the mobile libraries (#17828).
  • Support arrays of dynamic types in abigen and abi (#18051).
  • Update go-leveldb to reduce CPU overhead a bit (#18205).
  • Warn when using deprecated config files (#18199).

Notable bug fixes are:

  • Fully disable the USB HID on macos on --nousb, avoiding rare crashes (#18213).
  • Fix a tracer error in the pre-state JavaScript tracer (#18253).
  • Fix the Puppeth faucet connectivity issue (18281).

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

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


This release contains Swarm v0.3.8, which contains:

  • Uniform PSS API (18218).
  • P2P simulations snapshot improvements (18220).

Swarm binaries are available on the Swarm download page.

Assets 2

@karalabe karalabe released this Nov 28, 2018 · 130 commits to release/1.8 since this release

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.

Assets 2

@karalabe karalabe released this Nov 14, 2018 · 193 commits to release/1.8 since this release

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.

Assets 2

@karalabe karalabe released this Oct 9, 2018 · 275 commits to release/1.8 since this release

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.

Assets 2

@karalabe karalabe released this Sep 24, 2018 · 374 commits to release/1.8 since this release

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.

Assets 2

@karalabe karalabe released this Aug 29, 2018 · 461 commits to release/1.8 since this release

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.

Assets 2

@karalabe karalabe released this Aug 22, 2018 · 489 commits to release/1.8 since this release

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.

Assets 2

@karalabe karalabe released this Jul 31, 2018 · 596 commits to release/1.8 since this release

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.

Assets 2