Releases: ethereum/go-ethereum
Third Derivative (v1.8.6)
Geth Third Derivative (v1.8.6) is a tiny hotfix release for the original Dirty Derivative (v.1.8.4) release:
- Fix a downloader deadlock which froze sync on master peer drop (#16546).
- Revert the docker images to not use custom users (#16552, #16551, #16550).
Please see below the original v1.8.4 changelog:
- Optimizes dirty object handling during block processing, leading to 40% faster blocks (#15225).
- Fixes the PPA builds by working around a Travis -> Launchpad connectivity issue (#16404).
- Makes docker images use non-privileged users (#16052, #16478, #16477).
- Stabilizes transaction spam eviction from the transaction pool (#16494)
- Speeds up external API calls operating on the pending state (#16497).
- Handles downloader interruptions more gracefully (#16280, #16509).
- Adds leveldb write delay measurements and warnings (#16499).
- Fixes a rare light client deadlock (#16360).
The v1.8.4 release also contains the first pre-alpha incarnation of Clef, our standalone signer (#16154). It is a work in progress developer preview. Please consider it unsafe until otherwise announced.
For a full rundown of the changes please consult the Geth 1.8.4 release milestone.
Binaries and mobile libraries are available on our download page.
Second Derivative (v1.8.5)
Geth Second Derivative (v1.8.5) is a tiny hotfix release for the original Dirty Derivative (v.1.8.4) release. Shoutout to @reductionista for investigating and fixing the issue for us!
- Fix a downloader deadlock which froze sync on master peer drop (#16546).
Please see below the original v1.8.4 changelog:
- Optimizes dirty object handling during block processing, leading to 40% faster blocks (#15225).
- Fixes the PPA builds by working around a Travis -> Launchpad connectivity issue (#16404).
- Makes docker images use non-privileged users (#16052, #16478, #16477).
- Stabilizes transaction spam eviction from the transaction pool (#16494)
- Speeds up external API calls operating on the pending state (#16497).
- Handles downloader interruptions more gracefully (#16280, #16509).
- Adds leveldb write delay measurements and warnings (#16499).
- Fixes a rare light client deadlock (#16360).
The v1.8.4 release also contains the first pre-alpha incarnation of Clef, our standalone signer (#16154). It is a work in progress developer preview. Please consider it unsafe until otherwise announced.
For a full rundown of the changes please consult the Geth 1.8.4 release milestone.
Binaries and mobile libraries are available on our download page.
Dirty Derivative (v1.8.4)
Nuked due to a downloader deadlock. Please use v1.8.5 instead.
Geth Dirty Derivative (v1.8.4) is our biweekly maintenance release.
- Optimizes dirty object handling during block processing, leading to 40% faster blocks (#15225).
- Fixes the PPA builds by working around a Travis -> Launchpad connectivity issue (#16404).
- Makes docker images use non-privileged users (#16052, #16478, #16477).
- Stabilizes transaction spam eviction from the transaction pool (#16494)
- Speeds up external API calls operating on the pending state (#16497).
- Handles downloader interruptions more gracefully (#16280, #16509).
- Adds leveldb write delay measurements and warnings (#16499).
- Fixes a rare light client deadlock (#16360).
The v1.8.4 release also contains the first pre-alpha incarnation of Clef, our standalone signer (#16154). It is a work in progress developer preview. Please consider it unsafe until otherwise announced.
For a full rundown of the changes please consult the Geth 1.8.4 release milestone.
Binaries and mobile libraries are available on our download page.
Supreme Gardening Equipment (v1.8.3)
This is a security and maintenance release containing bug fixes and protection against various types of DoS attacks that could lead to slow block processing.
Improvements:
geth --shh
and the mobile frameworks use Whisper v6 (#16371)- The
geth export-preimages
andgeth import-preimages
commands allow export and import of known keccak256 preimages (#16319) - bn256 EC pairing is much faster on arm64 (#16301)
Squashed bugs:
- The block number in sync stats (
eth_syncing
) is updated more frequently (#16283) - The 128kB size limit for RPC requests is now also applied to WebSocket connections and HTTP requests using chunked transfer encoding
(#16310, #16343) - abigen wrappers for contract events with a single parameter are fixed (#16256)
Credits
Thanks to Dominic Brütsch and Vasily Vasiliev for reporting bugs through the bounty program.
For a full rundown of the changes please consult the Geth 1.8.3 release milestone.
Binaries and mobile libraries are available on our download page.
Frost (v1.8.2)
Geth Frost (v1.8.2) is our biweekly maintenance release.
Features:
- Support gracefully terminating on SIGTERM too, not just SIGINT (#16142).
- Reject contract creation RPC requests if no transaction data is provided (#16108).
- Support unpacking ABI binaries into untyped interfaces for future signer work (#15770).
- Support multiple ENS resolvers for different TLDs in Swarm (#15748).
- Flush in-memory tries more flexibly on graceful termination (#16143).
- Start work on Swarm metrics collection and aggregation (#15969, #16177).
- Introduce Swarm landing page for browser requests (#15926).
- Move Puppeth faucet state updates to background processing (#16228).
- Support creating Go mutex profiles via the debug RPC endpoint (#16230).
- Track number of downloaded state trie nodes across restarts (#16224).
- Use Cloudflare's bn256 library on amd64 for 80% speed improvement (#16203).
Fixes:
- Disallow hyphens in Puppeth network names (#16157).
- Handle Twitter redirects in Puppeth faucets / Rinkeby (#16165).
- Return better errors on missing RPC subscription endpoints (#16163).
- Fix missing receipt fields in light client mode (#16164).
- Allow exceeding max peers for trusted peers (#16189).
- Update chain specification for Puppeth Parity deploys (#16188).
- Fix RPC response for missing/pending receipts (#16217).
- Fix RPC vhosts to allow setting from config files (#16141).
- Fix
eth_call
invocations doing nested subcalls (#16229).
Deprecations:
For a full rundown of the changes please consult the Geth 1.8.2 release milestone.
Binaries and mobile libraries are available on our download page.
Iceberg² (v1.8.1)
Geth Iceberg² (v1.8.1) is a tiny hotfix release for the original Iceberg¹ (v.1.8.0) release:
- Fix two light client data races resulting in crashes (#16103, 16095).
- Fix a discovery issue that incorrectly measured peer bond time (16109).
- Fix compilation on Go 1.10 (16115).
Please see below the original v1.8.0 changelog:
We are delighted to announce the first release in the 1.8 series, shipping 5 months after v1.7.0 and 10 months after v1.6.0.
Commands
- This release includes the devcon3 version of puppeth (#15390)
geth attach
accepts--datadir
,--rinkeby
,--testnet
as an alternative to supplying the IPC path (#15597, #15686, #15517)- The geth console has a new
admin.clearHistory
command (#15614) ethkey
, a tool for handling keystore files has been added (#15438, #15807)
ETH Protocol
Note: State pruning is enabled on all --syncmode
variations (including --syncmode=full
). If you are running an archive node where you would like to retain all historical data, disable pruning via --gcmode=archive
.
- Geth now writes less state to disk, slowing down datadir growth (#15857)
- Crashes around ethash cache and dataset handling are fixed (#15864)
- Pending state creation is faster if there are many transactions in the pool (#15883)
RPC API
The HTTP/WS RPC endpoint was extended with DNS rebind protection. If you are running an RPC endpoint addressed by name rather than IP, run with --rpcvhosts=your.domain
to continue accepting remote requests.
Tracing and pruning: By default, state for the last 128 blocks kept in memory. Most states are garbage collected. If you are running a block explorer or other service relying on transaction tracing without an archive node (--gcmode=archive
), you need to trace within this window! Alternatively, specify the "reexec"
tracer option to allow regenerating historical state; and ideally switch to chain tracing which amortizes overhead across all traced blocks.
- VM tracing is much improved and supports tracing entire block ranges. We have also added a suite of predefined tracer scripts for common tasks such as extracting all internal transactions. (#15516)
- In transaction sending RPC calls, the "input" field can be used instead of "data" (#15640)
- The gas price oracle is improved to handle tx price surges better (#15828)
- The RPC server now protects against DNS rebinding attacks (#15962)
- The new
personal_signTransaction
method signs a transaction without sending it to the network (#15971) - HTTP OPTIONS requests no longer require the Content-Type header (#15759)
admin_nodeInfo
returns the chain configuration in light client mode (#15732)debug_storageRangeAt
returns RLP-decoded values (#15476)
Light Client
Note: the experimental peer discovery v5 protocol has changed, breaking backwards compatibility with previous releases. Geth 1.8 will not discover LES servers running geth 1.7.
The peer discovery protocols now share the same UDP port (30303 by default). If you are doing manual peer management and using the light client, you may need to ensure your v1.8 clients are pointed to port 30303 and not 30304 as previously.
- Several bugs around CHT handling are resolved (#15692, #16039)
- Light client peer count is now properly limited (#16010)
Swarm
Most swarm development happens over at the ethersphere fork and only a few changes were merged in this cycle. We're in the process of moving swarm development back to the main repository.
- The swarm command supports TOML config files like geth (#15548)
- The API now supports the
bzz-list
,bzz-raw
andbzz-immutable
URL schemes (#15667)
Whisper
- Whisper protocol v6 as described in EIP-627 is implemented (#15666, #15701, #15802, #15578, #15631, #16046)
- The
wnode
command speaks Whisper v6 (#16051)
Networking
- The peer discovery protocol removes dead nodes more aggressively (#16069)
- Discovery v4 and the experimental discovery v5 protocol now run on the same UDP port (#15200)
- Several issues in the experimental discovery v5 protocol are resolved (#15995, #16036)
- We have added more bootstrap nodes for the ropsten testnet, including a few parity nodes (#16008, #16029)
Build
- The
gosimple
andgoconst
linters are enabled for PR builds (#15593, #15566) - The Ubuntu Zesty PPA is removed, there is a new PPA for Ubuntu Bionic (#16063)
Changes for Go and Mobile App Developers
New features in the contract binding generator rely on modifications to internal go-ethereum types within generated code. If you are using wrappers generated prior to v1.8.0, you will need to regenerate them to be compatible with the new code base.
- The
GasLimit
andGasUsed
fields of blocks and transactions have typeuint64
instead of*big.Int
. This is a breaking API change. (#15466) - The abigen tool now supports generating contract event filtering methods (#15832)
- Several issues in the ABI decoder are resolved (#15285, #15731)
- In the Android/iOS frameworks, the
BigInt
type has a newGetSign
method (#15558) - The crypto package now supports public key compression and signature verification (#15615, #15626)
- The new common/fdlimit package can be used to raise file descriptor limits (#15850)
- The new p2p/enr package implements EIP-778 (#15585)
We have a new code review policy which should speed up the contribution process.
For a full rundown of the changes please consult the Geth 1.8.0 release milestone.
Binaries and mobile libraries are available on our download page.
Iceberg¹ (v1.8.0)
We are delighted to announce the first release in the 1.8 series, shipping 5 months after v1.7.0 and 10 months after v1.6.0.
Commands
- This release includes the devcon3 version of puppeth (#15390)
geth attach
accepts--datadir
,--rinkeby
,--testnet
as an alternative to supplying the IPC path (#15597, #15686, #15517)- The geth console has a new
admin.clearHistory
command (#15614) ethkey
, a tool for handling keystore files has been added (#15438, #15807)
ETH Protocol
Note: State pruning is enabled on all --syncmode
variations (including --syncmode=full
). If you are running an archive node where you would like to retain all historical data, disable pruning via --gcmode=archive
.
- Geth now writes less state to disk, slowing down datadir growth (#15857)
- Crashes around ethash cache and dataset handling are fixed (#15864)
- Pending state creation is faster if there are many transactions in the pool (#15883)
RPC API
The HTTP/WS RPC endpoint was extended with DNS rebind protection. If you are running an RPC endpoint addressed by name rather than IP, run with --rpcvhosts=your.domain
to continue accepting remote requests.
Tracing and pruning: By default, state for the last 128 blocks kept in memory. Most states are garbage collected. If you are running a block explorer or other service relying on transaction tracing without an archive node (--gcmode=archive
), you need to trace within this window! Alternatively, specify the "reexec"
tracer option to allow regenerating historical state; and ideally switch to chain tracing which amortizes overhead across all traced blocks.
- VM tracing is much improved and supports tracing entire block ranges. We have also added a suite of predefined tracer scripts for common tasks such as extracting all internal transactions. (#15516)
- In transaction sending RPC calls, the "input" field can be used instead of "data" (#15640)
- The gas price oracle is improved to handle tx price surges better (#15828)
- The RPC server now protects against DNS rebinding attacks (#15962)
- The new
personal_signTransaction
method signs a transaction without sending it to the network (#15971) - HTTP OPTIONS requests no longer require the Content-Type header (#15759)
admin_nodeInfo
returns the chain configuration in light client mode (#15732)debug_storageRangeAt
returns RLP-decoded values (#15476)
Light Client
Note: the experimental peer discovery v5 protocol has changed, breaking backwards compatibility with previous releases. Geth 1.8 will not discover LES servers running geth 1.7.
The peer discovery protocols now share the same UDP port (30303 by default). If you are doing manual peer management and using the light client, you may need to ensure your v1.8 clients are pointed to port 30303 and not 30304 as previously.
- Several bugs around CHT handling are resolved (#15692, #16039)
- Light client peer count is now properly limited (#16010)
Swarm
Most swarm development happens over at the ethersphere fork and only a few changes were merged in this cycle. We're in the process of moving swarm development back to the main repository.
- The swarm command supports TOML config files like geth (#15548)
- The API now supports the
bzz-list
,bzz-raw
andbzz-immutable
URL schemes (#15667)
Whisper
- Whisper protocol v6 as described in EIP-627 is implemented (#15666, #15701, #15802, #15578, #15631, #16046)
- The
wnode
command speaks Whisper v6 (#16051)
Networking
- The peer discovery protocol removes dead nodes more aggressively (#16069)
- Discovery v4 and the experimental discovery v5 protocol now run on the same UDP port (#15200)
- Several issues in the experimental discovery v5 protocol are resolved (#15995, #16036)
- We have added more bootstrap nodes for the ropsten testnet, including a few parity nodes (#16008, #16029)
Build
- The
gosimple
andgoconst
linters are enabled for PR builds (#15593, #15566) - The Ubuntu Zesty PPA is removed, there is a new PPA for Ubuntu Bionic (#16063)
Changes for Go and Mobile App Developers
New features in the contract binding generator rely on modifications to internal go-ethereum types within generated code. If you are using wrappers generated prior to v1.8.0, you will need to regenerate them to be compatible with the new code base.
- The
GasLimit
andGasUsed
fields of blocks and transactions have typeuint64
instead of*big.Int
. This is a breaking API change. (#15466) - The abigen tool now supports generating contract event filtering methods (#15832)
- Several issues in the ABI decoder are resolved (#15285, #15731)
- In the Android/iOS frameworks, the
BigInt
type has a newGetSign
method (#15558) - The crypto package now supports public key compression and signature verification (#15615, #15626)
- The new common/fdlimit package can be used to raise file descriptor limits (#15850)
- The new p2p/enr package implements EIP-778 (#15585)
We have a new code review policy which should speed up the contribution process.
For a full rundown of the changes please consult the Geth 1.8.0 release milestone.
Binaries and mobile libraries are available on our download page.
Weir (v1.7.3)
Geth v1.7.3 (Weir) is a maintenance release to address various issues in our previous releases, most importantly along log filtering and replacement transaction propagation. The release also contains a few developer niceties. Please see compatibility section below!
New features:
- Roll out v2 of the
les
light client protocol (#14970, #15367, #15391). - Insta-mining, zero CPU, clique based PoA developer mode
--dev
(#15323). - Add API endpoint to list modified accounts between two blocks (#15512).
- Gas estimation returns error instead of maxgas if transaction cannot be executed (#15477).
- Improve EVM jump destination analysis for worst case scenarios (#14582).
- Enforce
application/json
for HTTP RPC requests (#15220, #15496). - Private network faucet support Facebook, Twitter and Google+ authentication (#15313).
- Support encrypted SSH keys in the Puppeth network manager (#15443).
- Introduce docker images containing all Ethereum tools (#15467).
- Start shipping Ubuntu Artful Aardvark launchpad packages (#15344).
Squashed bugs:
- Fix log filtering when specifying non-8-multiple starting block number (#15489).
- Fix replacement transaction propagation (#15343).
- Reduce disk overhead on keystore startup (#15526, #15527, #15529).
- Fix occasional Rinkeby chain split by additional fork selection logic (#15470).
- Fix JavaScript tracing to permit working with
Address
types (#15297). - Fix missing commit hash in docker image versions (#15458, #15464).
Compatibility caveats:
- All HTTP RPC requests from now on need to have the
Content-Type: application/json
header set on them. Geth v1.7.3 will refuse to service requests with no content type headers set (or headers with different content types). This is a security measure to counter a browser CORS circumvention technique. - Geth v1.7.3 ships with
les/2
light client support, which might have harder time finding light servers initially until the server providers upgrade to v1.7.3 too.
For a full rundown of changes, please see the v1.7.3 milestone.
As always, binaries and mobile libraries are available on our download page.
Urgent Update (v1.7.2)
Geth 1.7.2 is a hotfix release to address a DOS vulnerability in the EVM starting at Byzantium. Please upgrade before block 4_370_000!
Pre-built binaries should be available shortly at https://geth.ethereum.org/downloads/.
Ptolemy (v1.7.1)
This is a maintenance release that fixes regressions in the 1.7.0 release.
This release enables the Byzantium hard fork transition at block number 4370000 (~17th October) on the mainnet and block number 1035301 (~9th October) on the Rinkeby test network. Please update well before these dates to ensure a smooth transition.
Noteworthy changes:
- Log queries handle the null topic correctly. (#15195)
- Ledger Nano S and Trezor hardware wallets should once again be detected on macOS. (#15232)
- p2p: messages are compressed using Snappy. See EIP706 for more information. (#15106)
- ethclient: The new
TransactionSender
method can be used to derive the sender address
of a transaction at the time of inclusion. (#15127).
For a full rundown of changes, please see the v1.7.1 milestone.
As always, binaries and mobile libraries are available on our download page.