Geth 1.8 - Iceberg¹
Geth 1.8: A Major Leap Forward for Ethereum
The Go Ethereum client, affectionately known as Geth, has finally released version 1.8, dubbed "Iceberg." This significant update comes after a prolonged development period, and it's packed with features that promise to improve the overall Ethereum experience. In this article, we'll delve into the key changes and innovations that make Geth 1.8 a major leap forward for the Ethereum ecosystem.
Client Synchronization: A Major Overhaul
One of the most significant areas of improvement in Geth 1.8 is client synchronization. The developers have worked tirelessly to address the issues users were facing with syncing and block processing. While they're not yet where they'd like to be, the experience with v1.8.0 is expected to blow all previous releases out of the water.
Reliable Light Client
Geth v1.7.3 introduced version 2 of the light client protocol, which was meant to be a significant improvement over version 1. However, it broke the light client, causing multiple issues. Geth v1.8.0 tries to pick up the pieces and make les/2 what it was supposed to be in v1.7.3. The discovery protocol has been updated to drop support for les/1, and light servers have been polished up to be more robust.
Reliable Fast Sync
Fast sync has been a long-standing issue for Ethereum users, with many experiencing hangs and crashes. Geth v1.8.0 has fixed these issues, making fast sync stable again. The memory usage during mainnet fast sync has been reduced, and the import of the state trie now takes significantly less time.
Initial State Pruning
Ethereum's state trie is a massive data structure that stores the current state of the network. However, most of the nodes in the trie are common between subsequent blocks, and every new block adds a few thousand new nodes. Geth v1.8.0 introduces an in-memory cache to store recent trie nodes, reducing disk growth.
Transaction Tracing
Transaction tracing has been a feature of Geth for some time, but it's been improved significantly in v1.8.0. The tracing scripts have been revamped, and new tracers have been added. The callTracer is a full-blown transaction tracer that extracts and reports all internal calls made by a transaction. The prestateTracer outputs sufficient information to create a local execution of the transaction from a custom assembled genesis block.
Streaming Chain Tracers
Geth v1.8.0 introduces a new API endpoint that can trace chain segments. This endpoint can reuse computed states in between blocks without rerunning transactions over and over again. Individual blocks are traced concurrently, reducing the total tracing time.
Native Events
Geth v1.8.0 finally lands event filtering for native dapps. Go wrappers generated by abigen from now on will contain two extra methods for each event, FilterMyEvent and WatchMyEvent. These methods allow developers to filter past events and subscribe to future events.
Devcon3 Puppeth
Puppeth is a tool that aids in creating a new Ethereum network, including bootnodes, signers, ethstats server, crypto faucet, wallet browsers, block explorer, dashboard, and more. Puppeth has been heavily polished for Devcon3, making it user-friendly and adding support for configuring Parity, C++ Ethereum, pyethapp, and Harmony.
Breaking Changes
There are several breaking changes in Geth 1.8.0 that users should be aware of. Discovery v4 and v5 have been merged to use the same UDP port (30303 by default). Trie pruning is enabled on all syncmode variations, including full. Native events rely on modifications to internal go-ethereum types within generated code.
Conclusion
Geth 1.8.0 is a major leap forward for Ethereum, with significant improvements in client synchronization, reliable light client, reliable fast sync, initial state pruning, transaction tracing, streaming chain tracers, native events, and Devcon3 puppeth. While there are breaking changes, users should exercise caution and monitor the upgrade closely. The new release promises to improve the overall Ethereum experience and make it more accessible to developers and users alike.
Source: https://blog.ethereum.org/en/2018/02/14/geth-1-8-iceberg




