Skip to content

Releases: ethereum/go-ethereum

Deripors of Ohratuu (v1.6.1)

04 May 11:57
021c3c2

Choose a tag to compare

Geth 1.6.1 is mostly a bugfix release adding various polishes throughout the codebase.

Highlights of the release are the capability to iterate over a contract's storage entries via the RPC; transitioning Whisper to protocol v5 along with bundled diagnostics tools; and shorthand connectivity to the Rinkeby test network.

For a detailed rundown, please consult the 1.6.1 milestone.

New features:

  • debug_storageRangeAt RPC supports iterating over contract storage entries (#14350).
  • Switch Whisper to protocol v5 (#14387), ship diagnostic tool (#14414).
  • Add --rinkeby flag to quickly connect to the Rinkeby testnet (#14418).
  • Support disabling USB hardware wallet lookups (#14357).
  • GitHub faucet bot protection (#14339) and funding tiers (#14402).
  • Add explicit SSH server key management for puppeth (#14398).
  • geth init and geth removedb operate on both full and light chains (#14412).

Bugfixes and annoyances:

  • Forbid leading zeroes in RPC block numbers (#13886).
  • Friendly error if the user tries to reinit its chain with an incompatible genesis (#14358).
  • Return [] instead of null when listing accounts but none can be found (#14374).
  • When generating bootnode keys, print and exit, don't start up node (#14372).
  • Make network IDs uniform uint64 everywhere (#14377).
  • Fix data race in during native dapp node restarts (#14379).
  • Support setting flags after sub-commands too (#14388, #14413).
  • Fix clique miner ugly error log when starting a new network (#14411).

Binaries and mobile libraries are available on our download page.

Puppeth Master (v1.6.0)

14 Apr 10:54
facc47c

Choose a tag to compare

We are delighted to announce the first release in the 1.6 series! Below is a condensed version of everything we've been working on and you can also find a friendly write up on our blog!

Breaking Changes

  • The --fast and --light flags are deprecated (still usable) in favor of --syncmode=fast and --syncmode=light.
  • The default sync mode is --syncmode=fast, for full sync please use --syncmode=full.
  • If --datadir is specified in conjunction with --testnet, it will no longer create a testnet folder within the given data directory, rather will use the one requested directly.

New Features

  • The 'clique' Proof of Authority consensus engine can be used for private networks (#3753).
  • The new puppeth command can be used to deploy private networks (#13854).
  • geth --config can be used to configure geth using a TOML file (#13875).
  • Swarm manifests can be mounted as a directory through FUSE (#3690, #13872).
  • Swarm manifests can be listed using the swarm ls command (#3742).
  • The swarm command accepts file uploads through stdin (#3744).
  • The evm command can disassemble contracts. This replaces the disasm command (#3729).
  • The evm command supports creation of contracts written in EVM assembly language (#3686)
  • For geth --dev chains, Ethereum protocol upgrades (Homestead, etc.) are enabled at block 0 (#3697).
  • The new debug_getBadBlocks RPC method returns recently seen 'bad blocks'.
  • The geth bug command can be used to open bug reports (#3684).
  • JS tracing can use contract.caller, contract.address, contract.value, contract.calldata to inspect the current call context (#14311).
  • rlpdump can stop decoding after the first value with the --single flag (#14320).

Removed Features

  • The eth_compileSolidity RPC method is removed (#3740). See ethereum/EIPs#209 for more information.
  • cmd/gethrpctest, cmd/ethtest are gone (#3705).
  • geth upgradedb is gone. It's no longer feasible to reimport all blocks given the length of the mainnet chain. (#3705)

Internal Improvements

  • Building go-ethereum now requires Go 1.7 or later (#3808). This enables use of the standard-library package "context", which is now used instead of "golang.org/x/net/context" (#3809).
  • go-ethereum has preliminary support for pluggable consensus engines. (#3817)
  • core/vm uses 64bit integers to represent the gas counter and memory size (#3674)
  • Fast sync auto-resumes after deep chain reorganisations (#3743)
  • Genesis block JSON handling is stricter and safer. Notably, most JSON fields now require the "0x" prefix. (#3794)
  • Log messages are enhanced with contextual, machine-readable information (#3696)
  • The newHeads subscription returns blocks hashes in addition to other header fields (#13868).
  • Package trie contains new union and difference iterators (#3637, #14312)
  • Package rlp supports the rlp:"-" struct tag to skip fields.
  • The new swarm/api/client package wraps the Swarm HTTP API (#3742).
  • make devtools installs commands required for go generate
  • Package core can be built without cgo (#3680, #3750).
  • Ethash verification caches are memory-mapped, improving startup time (#3750).
  • Contract calls made through Go bindings can use a custom sender address (#3782).
  • The gas price oracle is now less complicated (#13853).

Squashed Bugs

  • Hardware wallet support is improved. Ledger integration should now work on Windows and macOS. (#3681)
  • The logsBloom field is now set for pending blocks returned through RPC (#3717)
  • HTTP CORS check allows arbitrary other headers (#3783)
  • The light client answers RPC requests during sync (#3660).
  • Light client servers will no longer refuse to talk to other light client servers (#13889).
  • geth --ethstats plays nicer with some quirks of the ethstats server (#3812, #13856).
  • The current head is announced to peers when sync completes (#13883).
  • Transactions are accepted as soon as CPU mining starts. This fixes transaction inclusion issues for small private networks (#13882).
  • Discovery bootstrap nodes are used as a last-resort dial target (#13874).
  • cmd/swarm doesn't crash if --ethapi is empty or invalid (#3754).
  • The RPC server delivers all pending responses before closing the connection (#3814).

Binaries and mobile libraries are available on our download page.

Davy Jones' Locker (v1.5.9)

13 Feb 17:30

Choose a tag to compare

"Roses are red, Violets are blue, Geth now supports Hardware wallets too!"

Geth v1.5.9 is a feature release working towards hardware and HD (hierarchical deterministic) wallets. The first step consists of support for the Ledger Nano S and Ledger Blue (USB only) HD hardware wallets (#3592), also laying the groundwork for supporting subsequent hardware and software HD wallets.

Other notable changes:

  • Genesis JSON additions and polishes for black box testing #3635, #3656
  • Split off Android builds into Linux build jobs #3662
  • Swarm manifest manipulation commands #3645
  • Slim down versioned Alpine Docker images #3670

Bugfixes:

  • Fix data race in transaction pool nonce retrieval #3625
  • Support swarm in-process restarts #3651
  • Fix abigen contract parsing for solc v1.4.8+ #3648
  • Fix shutdown issue for swarm running in a docker container #3649

For a full rundown, please see the v1.5.9 milestone.

Binaries and mobile libraries are available on our download page.

Ledger ProTips

  • Signing EIP155 transactions requires at least v1.0.3 of the Ethereum app on the Ledger.
    • You may sign non-EIP155 transactions using the go-ethereum library directly.
  • Contract interactions or deploys need to enable Contract data from the Ethereum app Settings.
  • Browser support needs to be turned off from the Ethereum app Settings (different protocol).
  • Windows support requires a USB driver (official Red Hat): https://github.com/daynix/UsbDk/releases
    • May be bundled into our installer later, we're curious how well it holds up in the wild first.
  • Linux support might require granting the user write access to the Ledger
  • Accounts are automatically derived, searching for non zero balance or non zero nonce.
    • First empty account is always listed (sending it funds will derive the next empty account).
  • Mist doesn't know about Ledger, if asked for a password, enter empty and confirm tx on device.
  • If in doubt, unplug and replug :P

Go API changes

Just to emphasize, the section below is about the Go API (i.e. go-ethereum library) changes. The RPC did not incur any backwards incompatible changes. If you do find something, it's a bug, please report it.

Until now the go-ethereum codebase assumed that accounts are equivalent to individual private keys stored on disk inside a keystore. To support hardware and HD wallets however, this invariant breaks, requiring a new API with different constructs and mechanisms. We've tried our best to introduce this new API in such a way that it's trivial to transition to it for anyone already using go-ethereum as a library from Go or Java/ObjC/Swift.

The first breaking change is that while previously the accounts.Manager (or AccountManager on mobile) was a glorified keystore, now it changed its scope to handle Wallet objects, which may contain multiple accounts, as well as may be backed by different backends (keystore or hardware). The previous keystore is kept intact, just renamed to Keystore within the keystore package (arguably a better name and location). If you used the account manager in your own code, a simple swap to the keystore should more or less just work™.

The other breaking change you need to be aware of is that while previously transaction signing in the keystore only required a hash of the transaction, the new code requires the entire transaction object. This is needed to support hardware wallets which require the transaction details for user confirmation UI elements.

Peachest (v1.5.8)

01 Feb 11:03
@fjl fjl

Choose a tag to compare

Geth v1.5.8 is a patch release to address bugs and annoyances. For a full rundown of the changes please see the 1.5.8 milestone.

Notable changes:

  • Gas estimation now does binary search to find the right amount of gas even in complex refund conditions where the required gas is higher that the final consumption. (#3587)
  • ECDSA signing uses a deterministic nonce. This change affects transaction signing. (#3561)
  • A new developer tool, cmd/wnode, allows testing the Whisper v5 protocol. (#3580)

Binaries and mobile libraries are available on our download page.

Peacher (v1.5.7)

16 Jan 10:11
@fjl fjl

Choose a tag to compare

This is a bug fix release that resolves several regressions related to hex handling in the RPC API.
See the 1.5.7 milestone for more details.

There are a few other changes in this release:

  • The geth console now uses web3.js v0.18.1 (#3545)
  • --olympic is gone (#3553)
  • A hang in the light client is resolved (#3568)

As always, you can install/update via your favorite package manager, or download pre-built binaries from our downloads page at https://geth.ethereum.org/downloads/

Peach (v1.5.6)

09 Jan 18:57

Choose a tag to compare

Geth 1.5.6 - Peach (:peach:) is a refactor and clean up (plumping) release.

This release also improves the EVMs call stack (#3378) and improves the overal EVM performance by 40% and is a pre-patch for the next 64bit gas counting PR. It will also allow for unmetered EVM calls for non-consensus critical execution (e.g. eth_call), however at this point this has not yet been integrated.

Feature(s)

  • Support for swarm CORS headers #3388

Bug fix(es)

  • Ropsten chain dump file import fix #3515
  • Allow zero priced txs #3454
  • RPC APIs no longer accept hex values without 0x prefix. #3475
  • Fixed hex handling for signing functions #3453
  • Enforce chain ancestry and fixed future block imports #3433
  • eth_compileSolidity once again produces identical results for each compilation #3522
  • Error reporting of the Swarm HTTP API is improved #3468 #3469 #3470

Go API Changes

  • vm.Log has moved to core/types to reduce dependencies of package ethclient. #3518
  • types.SignECDSA is now called types.SignTx. The SignECDSA method of Transaction has been removed. #3516
  • Go functions dealing with signatures now expect a V value of 0 or 1. crypto.SignEthereum and related APIs have been removed. You can convert the signature to ethereum format with a V value of 27 or 28 using sig[64] += 27. #3455
  • accounts/abi handles more Solidity types. #3403 #3464 #3533

Binaries are available on our download page

Doesn't look like anything to me (1.5.5)

14 Dec 14:40

Choose a tag to compare

Geth 1.5.5 is a patch release, mostly fixing bugs and annoyances.

The brave soul/sole feature of the release is support for exporting the blockchain to- and importing it from gzipped data streams (#3427) too. This can be useful for private network development purposes to back up and restore snapshots of the chain and for debugging/testing purposes. You can do compressed export/import operation simply via specifying a chain output file name ending in .gz.

The built in netstats client was fixed to report a few infos that were not sent to the netstats server in the previous release due to an oversight (#3370, #3373, #3390). This should help sort out the issues seen on the netstats page that certain charts had missing data in them. Further it adds support for historical data queries that are relevant mostly for private netstats servers with only Geth nodes reporting (#3425).

A few data race issues were fixed in the transaction pool (#3412, #3429) that should help with some duplicate nonce allocations during heavy/parallel transaction publishes; and in the miner (#3431, #3430) that were harmless, just found and fixed. The tracking of mined but not yet conformed blocks was reworked to make it nicer and stabler (if by any chance you relied on these logs having a certain format, be advised that they have changed slightly).

The release fixes a bug in the Windows installer that occasionally corrupted the PATH environment variable (#3419); and contains a batch of tweaks and fixes for the light client (#3413) and swarm (3421).

As of 13th December, Canonical deprecated Ubuntu Wily and dropped support for building and distributing launchpad PPA packages for that version of their OS. As a result, we had to remove those PPA builds from out build service too (#3439). However, you can still download bundles binaries from our downloads page which will work on any Linux distribution (based on libc).

Beside the above, a handful of minor patches were also included in theis release. For a full rundown, please see the 1.5.5 milestone page.

Binaries are available on our downloads page.

PS: Honorable mention goes to Razvan, Viorel and Vlad of the Ethereum Cluj meetup for helping find 5 of the bugs fixed above and providing the motivation for 3 awesome features planned for the next release ;)

Stat it (v1.5.4)

28 Nov 15:06
@fjl fjl

Choose a tag to compare

This release fixes minor bugs and adds exciting features.

New Features

Geth now includes a built-in netstats reporter. Use --ethstats "<nodename>:<secret>@ethstats.net" to get listed on ethstats.net. (#3336) Assignment: find secret Skype room with ethstats password 😉

Network communication can now be restricted to a list of IP subnetworks. This feature is intended for private chains (and meetups!). For example, geth --netrestrict 192.168.0.0/16 only allows connections in the commonly used LAN range. (#3325)

RPC filters can now filter logs in the pending block. (#3219)

Fixed Bugs

Binaries are available on our download page

Note About Go API Freeze

We originally planned to freeze the Go API of certain packages by the 1.5.4 release. We will delay the
freeze by a couple of versions because we're still discovering edge cases as we continue to build
libraries and apps on top of it.

Touch Revert (v1.5.3)

24 Nov 23:04
@fjl fjl

Choose a tag to compare

This release fixes the consensus failure that occurred at block 2686351.

Geth was failing to revert empty account deletions when the transaction causing the
deletions of empty accounts ended with an an out-of-gas exception. An additional issue
was found in Parity, where the Parity client incorrectly failed to revert empty account
deletions in a more limited set of contexts involving out-of-gas calls to precompiled
contracts; the new Geth behaviour matches Parity's, and empty accounts will cease to be a
source of concern in general in about one week once the state clearing process finishes.

Binaries are available on our download page

Ropsten Testnet

With 1.5.3 --testnet now selects the Ropsten network. If you have a blockchain database
for the Morden network, run geth --testnet removedb to remove it.

Cry uncle (v1.5.2)

18 Nov 18:35
@fjl fjl

Choose a tag to compare

This release fixes a regression that caused geth to fail to full sync past the previous (EIP150) hard fork at block number 2463000.

  • Fix a regression that caused the uncle on block 2463002 to be mistakenly determined to be invalid.

1.5.1 Release notes

This release fixes typo that set the EIP155 hard fork block to zero in --testnet mode.
For other changes in this release, please see the 1.5.1 milestone.

1.5.0 Release notes

Geth 1.5 contains about 8 months of work and includes many new features and fixes. The
most prominent features include:

  • Ethereum hard fork No. 4 containing EIP155 (replay
    protection), EIP161 (state clearing), and EIP170 (code size limit).
  • Improvements to the RPC API (see below)
  • Initial release of the stable Go API, iOS and Android support. APIs are released as a
    preview and will receive more changes in the upcoming weeks. We expect to freeze certain
    Go APIs in the 1.5.4 release.

For a full rundown and a more detailed post about the changes please see the Whoa ... Geth 1.5.

This release overhauls the build infrastructure. Release packages are now built on Travis,
AppVeyor and CircleCI. Archives are available from geth.ethereum.org

Database Upgrade

The 1.5.0 release changes the structure of the blockchain database. Geth will upgrade the database
during normal operation, but you cannot revert to the previous 1.4.x releases. If you
do want to revert, you'll need to keep a backup of the chaindata directory or resync.

Changes to the RPC API

  • Breaking Change: eth_sign prepends a known string to the input and hashes the
    message on the server side. See PR #2940 for more information.
  • We have also added personal_sign and personal_recover.
  • Block responses now include the mixDigest.
  • Transaction responses include v, r and s values.
  • In receipt responses, the root field is now prefixed with 0x.
  • personal_importRawKey makes it possible to import an unencrypted private key via RPC.
  • eth_getRawTransaction returns the RLP encoding of a transaction.
  • debug_traceTransaction can filter the EVM through an arbitrary JavaScript map/reduce
    function on the server side. See documentation for more details.
  • You can subscribe to real time events when using the WebSocket and IPC
    transports. See Pub/Sub documentation for more details.

Changes for Go Developers (and people building from git)

  • Go dependencies are now vendored using the vendor/ directory. If you use Go 1.5 or Go 1.6, you
    need to set GO15VENDOREXPERIMENT=1 in your environment.
  • The develop branch is deprecated. All development will happen on the master branch.
    This makes it easier for you to get the latest changes. We will continue to keep the
    develop branch in sync with master for one more month to ease the transition.
  • If you want to stick to stable releases only, please use the release/1.5 branch.
  • Releases will happen more frequently (promise).

Experimental Features

Note that these features are highly experimental. Expect bugs and breakage while we
stabilise them over the next couple of releases.

  • Geth can now run in light client mode with the --light flag. Light client mode syncs
    recent block headers and fetches state values on demand. Note that very few light client
    servers are available yet. You too can be a server using the --lightserv flag.
  • The Swarm daemon (bzzd) and associated helper tools are included and somewhat
    functional.
  • Whisper v5 PoC code is included in the repository, but not enabled yet.
  • You can now use go-ethereum as a library in Android (Java) and iOS (ObjC/Swift)
    projects. abigen has gained preliminary support for creating Java bindings to Ethereum
    contracts.

Please report any issues you encounter.

You can find GPG-signed binaries for all supported platforms on https://geth.ethereum.org/downloads.