The Ethereum Foundation officially announced that the version 1.8.0 of the Go Ethereum client ‘Iceberg’ has finally been released. This new version was under development for quite some time now and has had a total of 170 modifications to improve performance. The latest update comes five months after the launch of version 1.7.0.
Swift and Stable Update
For the uninitiated, Geth is the command line interface for running a full ethereum node implemented in Go. Significant changes have been made to the current version, and it now includes the devcon3 version of puppeth. Furthermore, efforts have been concentrated to make improvements that may not be immediately visible but are instead, under the hood.
The update tries to resolve the issue which specific users were having regarding syncing and block processing. The team is claiming that this is Geth’s biggest update ever released and looks to pick up from where Geth v1.7.3 left.
v1.7.3 was the first update that shipped version two of the light client protocol. What was meant to be a considerable improvement turned out to be an utter disaster and resulted in a massive breakage as les/2 servers crashed serving some light client requests. The developers have made improvements to this aspect in particular.
Sneak peek Geth 1.8.0 feature: strongly typed #Ethereum contract event filtering and subscriptions natively from #golang! Please check it out, play with it, provide feedback. API is fluid for now, but will be locked down after release. https://t.co/rjdakxVsDK
— Péter Szilágyi (karalabe.eth) (@peter_szilagyi) January 8, 2018
All light clients after the release of geth v1.8.0 are reportedly able to find servers within a few seconds from startup. Synchronizing the mainnet should also finish within a minute. These improvements have been made possible by dropping the support for les/1 which made it easier to find peers.
Many users had previously reported that they were experiencing fast sync hangs with a “stalling peer” error message in the previous Geth version. This issue became more and more prominent as the mainnet of Ethereum grew. These error instances in the fast sync feature were rare as the hang was a race condition that occurred when state sync restarted.
Given how difficult race conditions are to detect, it took the developing team more than a year to finally find and improve fast sync. Thanks to the improvements made in this version then, fast sync has become stable again.
Geth v1.8.0 also resolves the storage problems on the Ethereum blockchain. Data in ethereum is organized into a massive trie data structure that has a 16th order Merkle tree cryptographically guaranteeing forgery resistance. New data is piled over the existing one.
This reorganization utilizes plenty of disk space and also makes it expensive to get rid of data already present on the disk. To solve this storage problem, v1.8.0 has introduced an in-memory cache that will store the most recent trie nodes.
Geth v1.8.0 also introduces a new API endpoint that caters to tracing multiple subsequent blocks with minimal overhead, that can locate chain segments. Also, Discovery v4 and v5 have been merged to use the same UDP port (30303 by default).
Those doing manual peer management and using the light client may need to ensure their v1.8.0 clients are pointed to port 30303 and not 30304 as previously. Importantly, Geth 1.8.0 also introduces state pruning, which is backward incompatible with previous versions of Geth. A complete rundown of changes can be viewed on the Geth 1.8.0 release milestone.