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.