The Go Ethereum team is proud to announce the next release family of Geth. first incarnation We are focused on laying the foundation for the upcoming Metropolis hard fork (Byzantium and Constantinople). 125+ code contributions For various parts of the project.
byzantine fork
The current incarnation of Geth contains all implemented Byzantium EIPs, as well as fork block numbers. 1,700,000 For Ropsten testnet transition. Block numbers for Rinkeby and the main Ethereum network will be confirmed when Ropsten is deemed stable.
You can find details about individual protocol updates at:
Performance Optimization
Besides the Byzantium hard fork, the Geth 1.7 release series aims to mainly focus on performance improvements. The first release of the suite already includes significant optimizations through two database schema modifications.
- Transaction and receipt storage has been completely reworked, cutting the data storage requirements of the fast sync node in half from 26.3 GB to 14.9 GB at the time of implementation (#14801).
- EVM log storage and indexing has been completely reworked, reducing the filtering time of the entire chain for contract events by 2-3x, from minutes to less than a second (#14522, #14631).
Some updates in progress that will appear in the next release include:
- Upgrades the underlying P2P protocol used by all Ethereum subprotocols, reducing the bandwidth required for fast synchronization from 33.6 GB to 13.5 GB (#15106). This upgrade improves the general bandwidth requirements of the network as well as light clients.
- Introduces more sophisticated memory caching for state attempts, reducing disk IO by orders of magnitude. Exact numbers await final implementation (#14952).
TREZOR WALLET
Around this time last year we introduced support for Ledger hardware wallets. Due to popular demand, Trezor (#14885).
Trezor is more complex than Ledger as it requires the user to unlock a PIN sent from the communication system rather than entering it directly. So when a user connects their Trezor, Geth prints:
A new wallet has appeared. Can’t open it. url=trezor://0003:0007:00 err=”trezor: Pin required”
The Geth console can be used to unlock Trezor by calling: personal.openWallet(url)It asks the user to enter a scrambled PIN code and sends it to Trezor for verification.
> personal.openWallet("trezor://0003:0007:00") Look at the device for number positions 7 | 8 | 9 --+---+-- 4 | 5 | 6 --+---+-- 1 | 2 | 3 Please enter current PIN: INFO (08-10|11:58:06) New wallet appeared url=trezor://0003:0007:00 status="Trezor v1.5.0 'Hi' online"
For more information about interacting with Trezor in the JSON-RPC API, see: Promotional explanation.
transaction log
Geth’s 1.6.x release family introduces a new transaction pool to avoid propagation issues caused by minimum gas price requirements. This new pool accepted all transactions regardless of price, always keeping the best 4K and discarding cheaper transactions.
The new pool has a special exemption mechanism for local accounts so that your own transactions will always take precedence over remote transactions, even if they are cheaper than others’ transactions. This ensures that cheap transactions are not flushed from the network during periods of high usage (e.g. ICOs) as long as the original node remains online.
Geth 1.7.0 takes these protections one step further by journaling all locally generated transactions to disk and reloading them when the node restarts. This ensures that even if the original node goes offline, there is a chance that the cheap transaction will be included when the node comes back (#14784).
Transaction journals can be of great help to node operators during software upgrades as they do not have to worry about missing local transactions. The journal also acts as a resilience mechanism against node crashes, ensuring that transaction data is not lost.
RINKEBI UPDATE
There have been many fine-tunings to Puppeth and Rinkeby over the course of this release, including better ethstats logging to detect malicious reporters and IP address blacklisting to deny access to them.
The Rinkeby testnet has also proven to be instrumental in finding and fixing transaction pool event contention, which causes a lot of headaches related to transaction loss and/or duplicate nonce allocation. All known errors have now been fixed (#15085).
Finally, we are very excited to announce this. Infura becomes an active player We support the community by running our own boot nodes and approved signer nodes on the Rinkeby test network. This will make the Rinkeby network more robust and resilient.
Closing remarks and important notes to users
Geth 1.7.0 contains many bug fixes and is considered the best release to date. However, we recommend that everyone pay attention to the upgrade and monitor it closely in the future as it includes minor database upgrades.
Furthermore, we would like to highlight the following: Upgraded databases cannot be used with older versions of Geth.. For production users, we recommend that you synchronize with Geth 1.7.0 from the beginning and back up your old database until you can verify that the new release works correctly for all use cases.
For full details on the changes, see: Geth 1.7.0 release milestone.
As always, binaries and mobile libraries are available from us. download page.