Skip to content

Iceberg¹ (v1.8.0)

Compare
Choose a tag to compare
@fjl fjl released this 14 Feb 13:23
· 1247 commits to release/1.8 since this release

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 and bzz-immutable URL schemes (#15667)

Whisper

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 and goconst 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 and GasUsed fields of blocks and transactions have type uint64 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 new GetSign 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.