Releases: ethereum/go-ethereum
Thessian Temple (v1.9.8)
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 ofgolangci-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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Quad Kicker (v1.9.7)
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 aforkid
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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Elasa (v1.9.6)
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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Memory Stealer (v1.9.5)
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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Frozen Pyjak (v1.9.4)
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
nil
s 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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Tasty Tankard (v1.9.3)
Geth v1.9.3 is a regular maintenance release, highlights being finalization of the Istanbul EIPs.
New Features:
- Add
eth.fillTransaction
to create-but-not-sign a transaction (#19915). - Support DNS names in enode URLs during
admin.addPeer
(#18524). - Enable gzip compression on the HTTP RPC API endpoint (#19997).
- Reduce light client default peer count from 100 to 10 (#19933).
- Align CLI flags and descriptions a bit better (#19956).
Istanbul changes (progress tracker):
- Implement EIP-152: Blake2B F compression function precompile (#19972).
- Implement EIP-2028: Transaction data gas cost reduction (#19931).
- Implement EIP-2200: Net SSTORE optimizations (#19964).
- Add
--override.istanbul
flag as a failsafe (#20004). - Enable Istanbul EIPs in the EVM jumptable (#19993).
Fixed Bugs:
- Update README with the latest fork configs for private networks (#19983, #20002).
- Separate light client and light server P2P handlers internally (#19639, #20010).
- Fix an import crash caused by a data loss from a previous crash (#19986).
- Deprecate Ubuntu Cosmic and enable builders for Ubuntu Eoan (#19955).
- Fix an annoying log in
geth attach
about cache sanitation (#19911). - Fix
admin.exportChain
to forbid overwriting existing file (#20019). - Update Clef's 4byte database to the most recent version (#19957).
- Add more verbose logging to even small chain reorgs (#18950).
- Fix iOS builds broken from a
gomobile
update (#19995).
For a full rundown of the changes please consult the Geth 1.9.3 release milestone.
As with all our previous releases, you can find the:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Blue Thessia (v1.9.2)
Geth v1.9.2 is a small maintenance release. It introduces some minor features, fixes some minor bugs and starts to lay the groundwork for the Istanbul hard fork.
Features added:
- Rework client tracking for light servers to better prioritize requests, making it fairer for everyone (#19745).
- Avoid retrieving full blocks for GraphQL queries on light clients if the query relies on headers (#19886).
- Support closing a simulated backends, avoiding a goroutine leak during log running tests (#19902).
- Support
eth_call
overriding chain state before execution, see API docs for details (#19917). - Replace all user facing
passphrase
labels withpassword
to avoid confusion (#19932).
Bugs fixed:
- Fix an RPC annoyance where inclusion info for pending transactions was 0, not
null
(#19901). - Fix an RPC regression from v1.9.1 where the block size was not hex encoded (#19885).
- Fix the builder to extract commit hashes from detached git branches too (#18315).
- Fix storage trie value encoding when running
geth dump
(#19943). - Fix console output coloring for Clef on Windows (#19889).
Istanbul changes (progress tracker):
- Refactor the internal chain configuration to allow enabling EIPs individually in tests (#19735).
- Implement EIP-1884: Repricing for trie-size-dependent opcodes (#19743).
- Implement EIP-1108: Reduce alt_bn128 precompile gas costs (#19904).
- Implement EIP-1344: ChainID opcode (#19921).
For a full rundown of the changes please consult the Geth 1.9.2 release milestone.
As with all our previous releases, you can find the:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Lucky Leprechaun (v1.9.1)
Geth v1.9.1 is a small biweekly maintenance release. For all the major new features in the 1.9 family, please see our blog post from two weeks ago.
- Add
eth_getHeaderByNumber
andeth_getHeaderByHash
to get headers without bodies (#19669). - Update the
go-ethereum
list of authors to July 22nd state, bringing up the count to 367 (#19873). - Switch out the websocket library, adding support for pings and continuation frames (#19866).
- Implement a 1/288th grace period for the faucet to avoid request drift (5m for 24h) (#18105).
- Add
debug_accountRange
to query all or part of the accounts at a given root (#17438). - Fix a crash in the transaction pool caused by the 1.9.0 internal rework (#19835).
- Fix a crash in
geth dumpconfig
caused by the release oracle fields (#19825). - Fix the reported derivation paths of hardware wallet accounts in Clef (#19827).
- Fix
geth --dev
thinking it's mainnet and requesting 4GB memory (#19875). - Fix
debug_chaindbProperty
, which returns an internal error (#19856). - Fix build script on OpenBSD (#17966).
For a full rundown of the changes please consult the Geth 1.9.1 release milestone.
As with all our previous releases, you can find the:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Full Biotic Kick (v1.9.0)
After many months of silence, we're proud to announce the v1.9.0 release of Go Ethereum! Although this release has been in the making for a lot longer than we anticipated, we're confident there will be some juicy feature for everyone to enjoy!
Posting a list of changes here wouldn't do this release justice, so we've prepared an entire blog post to walk through all the major features: Geth v1.9.0 - Six months distilled.
As with all our previous releases, you can find the:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Punisher (v1.8.27)
Geth v1.8.27 is a hotfix release to counter an active attack on mainnet, mounted against newly joining Geth nodes doing fast sync (#19473).
- If you are already in sync with the network, you don't need to update.
- Archive nodes, light clients and full-sync full nodes don't need to update.
- If you are joining the network with a new node, then you do need to update.
Background
Fast sync is susceptible to a grieving version of an eclipse attack, where a malicious remote node attempts to get a new Geth node to fast sync to some small chain, before a real heavy chain is discovered in the network. This results in Geth falling back to full sync for the main chain, taking too much time.
This attack can only be meaningfully mounted against nodes which are properly exposed on a public IP address (i.e. not firewalled, not NATed). Even then, it's a race against the node finding good peers fast enough, in which case the attack doesn't work any more.
There is no economic advantage in pulling this attack off, only causing sync annoyance. That said, there is currently a number of (at least 4 identified, maybe more) Parity nodes at 207.148.5.229
, which are doing variations of this attack. It might be deliberate, or it might also be leftover nodes from some experiment that only have a few blocks on their chain and subsequently disabled sync. A bit unprobable.
Solution
This release repurposes the DAO challenge to do a checkpoint challenge based on the recently hard coded CHTs. It also makes the challenge stricter, in that while the node is doing a fast-sync, remote peers are not permitted to be synced below the checkpoint block. This should also help sync the chain faster, getting rid of stalling or useless peers.
Geth binaries and mobile libraries are available on the Geth download page.