Skip to content

Releases: ethereum/go-ethereum

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:

Weeping Heart (v1.9.11)

18 Feb 11:51
6a62fe3
Compare
Choose a tag to compare

Geth v1.9.11 was planned to be our next regular maintenance release, but enough niceties have piled up for it to become a feature release. This is also the reason why we delayed it by two weeks compared to our regular schedule.

The release ships three important new features:

  • DNS-based peer discovery is now enabled in Geth (#20592, #20660). From now on Geth nodes have two independent mechanisms to find peers. The DNS lists serve as a fallback mechanism when peers cannot be found through the DHT.

    DNS-based discovery is a centralized mechanism, but we have tried to make the operation of this mechanism as transparent and permissionless as possible. The public lists used by default are generated by crawling the discovery DHT. At this time, there are ~1150 publicly routed Ethereum mainnet nodes in the default list. Our public lists also serve the Ropsten, Goerli and Rinkeby test networks. Nodes running any Ethereum client which implements EIP-868 and EIP-2124 will appear in the public lists automatically.

    You can disable the use of DNS-based discovery using the --discovery.dns "" flag combination.

    If you want to create a DNS-based node list for your private or public network, please check out our DNS Discovery Setup guide. We hope that organizations other than Ethereum Foundation will provide public lists in the future and will happily integrate those lists into the default one using the 'link' feature of EIP-1459.

  • Transaction announcements via eth/65 (EIP 2464) is now implemented and Geth<->Geth connections should use significantly less bandwidth (#20234) for exchanging transactions. Final numbers are anybody's guess though, as we need to wait for widespread network deployment. This feature depends on the eth/64 and eth/65 protocol updates, which are not yet supported in all Ethereum client implementations. While connections between compatible clients will use the new protocol, geth will remain compatible with eth/63 until the new protocol versions are sufficiently adopted by the public network.

  • The JavaScript engine underlying the Geth console and Clef rule engine was switched from Otto to Goja, which should bring it up to ECMAScript 5.1+ compliance. Not your latest and greatest .js environment of course, but significantly better and faster than before (#20470, #20599).

Minor features and fixes contained in the release:

  • Shave a few milliseconds off of each block via internal trie optimizations (#20481, #20488).
  • Optimize EVM BLOCKHASH opcode execution to handle the worst case better (#20589).
  • Check for RPC API namespace availability to detect typos in --rpcapi &co (#20597).
  • Add geth dumpgenesis to print the full genesis and chain config of a node (#20191).
  • Revert pending block number reporting during block retrieval (#20616).
  • Fix a JavaScript tracer panic when accessing illegal memory (#20612).
  • Fix an RPC connectivity issue around flaky connections (#20414).
  • Clean up C++ mainnet and Geth Görli bootnodes (#20610).
  • Fix bytes32 and bytes32[] support in Clef (#20609).

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


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

Rojo Loco (v1.9.10)

20 Jan 10:36
58cf568
Compare
Choose a tag to compare

Geth v1.9.10 is one of our usual maintenance releases. To make the first release of 2020 a bit more special though, we've also enabled the light client checkpoint oracle on mainnet (been running on all test nets for over 6 months now)!

Among the various tiny tweaks, more notable ones are:

  • Integrate DNS discovery, don't activate yet (#20437, #20524).
  • Bump the propagated transaction cap to 64KB (#20352, #20555).
  • Add propagated block integrity check before forwarding (#20546).
  • Continued removing deprecated types from the codebase (#20312).
  • Optimize memory allocations during trie traversal in hashing (#20529).
  • Handle an ABI ambiguity between Solidity and Vyper outputs (#20419).
  • Support WebSocket dialing from Go with custom HTTP configs (#20471).
  • Extend the ABI decoder to handle Solidity 6 view/pure modifiers (#20482).
  • Reorganize chain database writes to be less vulnerable to crashes (#20287).
  • Support exporting a block interval via RPC too, not just through the CLI (#20107).

And of course, fixes:

  • Fix issue where light servers disconnected each other (#20453).
  • Fix a goroutine leak in whisper v6 implementation. (#20520).
  • Fix discovery bootnode-fallback on blocked UDP (#20573).
  • Fix an RPC incompatibility for pending blocks (#20460).

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


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

Serrice Ice (v1.9.9)

06 Dec 10:26
0174499
Compare
Choose a tag to compare

Geth v1.9.9 is yet another hard fork release! Don't worry, it's not a hotfix for Istanbul. v1.9.9 ships and enables the next hard fork, Muir Glacier, scheduled for block #9200000, expected around the 6th of January, 2020 (and block #7117117 on Ropsten, expected more or less around the same time).

Apart from Muir Glacier, the release:

  • Simplifies and cleans up the internals of the miner package (#20335, #19396).
  • Fixes a regression in restoring a deleted chain from the freezer (#20403).
  • Fixes a data race in the new iterator based discovery code (#20421).
  • Fixes a pointer reference issue in ABI big.Int decoding (#20412).
  • Fixes the help message of certain geth subcommands (#20203).

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


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

Thessian Temple (v1.9.8)

26 Nov 10:26
d62e9b2
Compare
Choose a tag to compare

Geth v1.9.8 is yet another biweekly maintenance release, but that does mean it only contains fixes! Two highlights of the release are switching the entire code base over to Go modules (#20311); and replacing the trie cacher, slashing memory consumption on mainnet - using default configs - by 1GB (#19971).

Note: Go modules were introduced in Go 1.11 and greatly polished throughout Go 1.13. Although Geth builds fine with Go 1.11 and Go 1.12 too, we recommend running at least Go 1.13 as it is more flexible in handling various circumstances. If you are using go-ethereum as a library, converting your project to Go modules via go mod init will make dependency management a lot less of a hassle than the vendor approach. Be aware, however, that Go modules require network access if the dependencies aren't yet cached locally.

Other notable changes:

  • Switch the deprecated web socket library to github.com/gorilla/websocket (#20283, #20289).
  • Deprecate the gometalinter in favor of golangci-lint (#20295 + dozens of linter fixes).
  • Support aliases to manually resolve name clashes in abigen generated code (#20244).
  • Add clique_status API to quickly glance the health of Clique networks (#20103).
  • Initial version of a light server priority API to allow incentivized services (#20070).
  • Make puppeth SSH key confirmation friendlier with bad user input (#20350).
  • Support loading transaction input from files in the evm utility (#20273).
  • Allow digits inside of labels for the internal assembler (#20362).

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


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

Quad Kicker (v1.9.7)

07 Nov 08:18
a718daa
Compare
Choose a tag to compare

Geth v1.9.7 is our almost-usual biweekly maintenance release (one release skipped due to Devcon).

This release is a bit more special, however, as it finally initializes the Ethereum mainnet Istanbul fork block 9069000, targeted to arrive around the 4th of December! Please update your mainnet Geth nodes to v1.9.7 (or newer) as soon as possible to avoid surprises!

Beside hard-coding Istanbul, we've shipped:

  • Enforce proper fork orders to avoid partially initialized private networks (#20169).
  • Deploy eth/64, extending the protocol handshake with a forkid field (#20140).
  • Integrate Istanbul configuration support into puppeth for private networks (#19926).
  • Small tweaks to the ABI to Go binding generator to correctly handle more types (#20179).
  • Various internal light client capacity accounting optimizations for fairer servicing (#20077).
  • Remove some unnecessary redundancy from internal state sync data structures (#19929).
  • Avoid some unnecessary memory copying in the EVM, speeding up certain opcodes (#20177).
  • Extend the forkid validation to catch two more corner cases, courtesy of @ritzdorf (#20220).
  • Continue work towards the DNS and ENR based secondary discovery protocol (#20168, #20132).
  • Rework the PPA dependency management, supporting the latest Go releases from now on (#20240).

And fixed:

  • Fix a tiny data race in the downloader (#20204).
  • Fix some parsing issues in the EVM assembly parser (#20210).
  • Fix IPC paths in Clef on Windows to use proper Windows pipes and not Unix pipes (#20166).
  • Fix an issue where 2 config file fields were always overwritten by the CLI, even if unset (#20167).
  • Fix the evm binary so that it gracefully ignores useless whitespace around code snippets (#20211).
  • Fix a gas estimation issue for contracts that check tx.gasprice when using the Go bindings (#20189).

There is also an ongoing effort of porting over all our documentations from the GitHub Wiki pages, cleaning out stale information, getting relevant things up to date (#20229). It's a lot of work and we don't even know where to start, so contributions are more than welcome!

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


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

Elasa (v1.9.6)

03 Oct 09:43
@fjl fjl
Compare
Choose a tag to compare

Geth v1.9.6 is a bug fix release, which improves light client sync to not start from zero when a CHT checkpoint is available (#20120).

This release also adds support for EIP-1898: all state-related RPC methods now support specifying block hashes as well as block numbers. This affects eth_getBalance, eth_getStorageAt, eth_getTransactionCount, eth_getCode, eth_call and eth_getProof (#19491).

Minor changes:

  • LES servers now advertise the les capability via ENR (#20145)
  • New metrics for p2p bandwidth per protocol message (#20133)
  • LevelDB seek compaction is disabled, reducing disk I/O (#20130)
  • Handling of invalid future blocks is improved (#19763)

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


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

Memory Stealer (v1.9.5)

20 Sep 11:47
@fjl fjl
Compare
Choose a tag to compare

This is a security-critical release that fixes a regression in v1.9.4 where blocks
with invalid state were created by the miner component.


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

Frozen Pyjak (v1.9.4)

19 Sep 09:11
46891c1
Compare
Choose a tag to compare

Geth v1.9.4 is a special maintenance release, that besides fixing issues as usual, also locks in the Istanbul hard fork block numbers for the Ropsten, Rinkeby and Görli test networks:

  • Ropsten: 6485846, scheduled October 2, 2019 (ref).
  • Rinkeby: 5435345, scheduled November 13, 2019 (ref).
  • Görli: 1561651, scheduled October 30, 2019 (ref).

Please update your nodes on the above test networks before the deadlines, otherwise you will end up either on a wrong chain (Ropsten), or stuck altogether (Rinkeby and Görli). The --override.istanbul CLI flag can be used to bail out of the fork even last minute if things go sour.


Improvements:

  • Accumulate state writes post-Byzantium and only push into the trie at block end (#19953).
  • Smarter locking in the transaction pool to avoid some contention (#20080, #20081, #20085).

Bugfixes:

  • Fix a USB HID discovery regression on Windows (#20092).
  • Various stability and balancing fixes for light servers (#20079).
  • Fix some RLP decoding issues around nils for discv5 (#20064).
  • Expose the GraphQL port (8547) from our docker images (#20033).
  • Fix GraphQL UI serving regression caused by gzip encoding (#20046).
  • Fix GraphQL address type decoding to reject invalid strings (#20046).
  • Fix P2P metric types so they work properly with Influx/Grafana (#20047).

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


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