The Go Ethereum team is excited to announce the next release family of Geth, which is the first version dedicated to preparing for the upcoming Metropolis hard forks (Byzantium and Constantinople). This release includes over 125 code contributions for various parts of the project.
The current version of Geth contains all the Byzantium EIPs implemented and features the fork block number 1,700,000 for the Ropsten testnet transition. The block numbers for Rinkeby and the main Ethereum network will be finalized when Ropsten is considered stable.
Details about individual protocol updates can be found at the following locations:
In addition to the Byzantium hard fork, the 1.7 release series of Geth focuses on performance improvements. The first release of the family includes two database schema modifications that result in significant optimizations:
- Transaction and receipt storage was reworked, halving the data storage requirements of a fast synced node from 26.3GB to 14.9GB at the time of implementation (#14801).
- EVM log storage and indexing was also reworked, reducing the filtering time of the entire chain for contract events from minutes to under a second (#14522, #14631).
Some updates in progress for future releases include:
- Upgrading the base peer-to-peer protocol used by all Ethereum sub-protocols, reducing the bandwidth needed for a fast sync from 33.6GB to 13.5GB (#15106).
- Introducing a more sophisticated memory caching for state tries, significantly reducing disk IO. Exact numbers are pending a final implementation (#14952).
Support for the Ledger hardware wallet was introduced last year, and now hardware wallet support also includes the Trezor (#14885).
To unlock the Trezor, users can use the Geth console to invoke personal.openWallet(url), which will request the user to enter the shuffled PIN code and send it over to the Trezor for verification.
In the 1.6.x release family of Geth, a new transaction pool was introduced to avoid propagation issues due to minimum gas-price requirements. Geth 1.7.0 takes this protection a step further by journaling all locally created transactions to disk, ensuring that even if the originating node goes offline, cheap transactions still have a chance to be included when the node comes back (#14784).
Puppeth and Rinkeby have undergone fine-tuning during this release, including better ethstats logging and fix for transaction pool event race that caused issues around lost transactions and duplicate nonce assignments (#15085). Infura has also become an active player in the Rinkeby test network, aiding the community with their own bootnode and running an authorized signer node.
Closing remarks and important note to users
Geth 1.7.0 contains numerous bug fixes and is considered the best release until now, however, we urge caution with the upgrade and to monitor it closely as it includes non-trivial database upgrades. The upgraded database cannot be used by previous versions of Geth, so production users are recommended to sync from scratch with Geth 1.7.0 and leave the old database backed up until the new release is confirmed to work correctly for all use cases. For a full rundown of the changes, please consult the Geth 1.7.0 release milestone. As always, binaries and mobile libraries are available on our download page.