以太坊Geth1.7版本难度炸弹仍未拆除 再过4天产量下降25%




The Go Ethereum team is proud to announce the next release family of Geth, the first incarnation of which focuses on laying the groundwork for the upcoming Metropolis hard forks (Byzantium and Constantinople) and consists of 125+ code contributions to various parts of the project.

Go Ethereum团队自豪地宣布下一个Geth系列发布,其第一个版本着重于为即将到来的Metropolis(大都会)版本硬叉,为Byzantium 和Constantinople系列(拜占庭和君士坦丁堡)奠定基础,并为该项目的各个部分提供了多达125处代码贡献

拜占庭系列Byzantium fork

The current incarnation of Geth contains all the Byzantium EIPs implemented and also 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 deemed stable.

目前的Geth的版本已经包含了Byzantium拜占庭所有EIPs(演进协议)的功能代码,并且确定了Ropsten testnet测试网络硬分叉的区块数为170万 。 当Ropsten测试网络鉴定稳定时,Rinkeby测试网络和主网络的分叉块号将被最终确定。(## 小编总结,这意味着难度炸弹还没决定在哪个区块数拆除,意味着旷工大概率进入30秒的出口区域,产量又要下降25%)


EIP 98: 从收据中删除中间状态根Removal of intermediate state roots from receipts (#14750).

Expanded by EIP 658:在收据中嵌入交易返回数据 Embedding transaction return data in receipts (#15014).

EIP 100: 改变难度调整方式适应实际区块时间Change difficulty adjustment to target mean block time including uncles (#14733).

EIP 198, EIP 212 (197) and EIP 213 (196): 用于模幂运算的预编译合约; 椭圆曲线加法,标量乘法和配对Precompiled contracts for modular exponentiation; elliptic curve addition, scalar multiplication and pairing (#14959, #14993).

EIP 214 (116): 使用静态合约方法扩展EVM Expanding the EVM with static contract calls (#14978).

EIP 211: 使用动态大小的返回数据扩展EVM Expanding the EVM with dynamically sized return data (#14981).

EIP 206 (140):用廉价的状态恢复扩展EVM  Expanding the EVM with cheap state revertals (#14983).

EIP 649: 延迟难度炸弹以及减少区块奖励数目Delaying the difficulty bomb and reducing the block reward (#15028).

EIP 684: 防止重写合同(拜占庭准备)Preventing overwriting contracts (Byzantium prep) (#15039).

性能优化Performance optimizations

The 1.7 release series of Geth is aimed to focus primarily on performance improvements (beside the Byzantium hard fork). The first release of the family already packs a heavy punch with two database schema modifications resulting in significant optimizations:

Geth的1.7版本系列旨在主要关注性能改进(除了拜占庭分叉之外)。 该系列的第一个版本已经打重构了数据库模式,从而实现了显着的优化:

交易和收据存储已经完全重做,将快速同步节点的数据存储要求从实施时的26.3GB降低到了14.9GB( #14801 )。Transaction and receipt storage was completely reworked, cutting the data storage requirements of a fast synced node in half, from 26.3GB to 14.9GB at the time of the implementation (#14801).

EVM日志存储和索引被完全重做,将整个链的过滤时间从合并事件减少了2-3个数量级,从几分钟到一秒( #14522 , #14631 )。EVM log storage and indexing was completely reworked, cutting the filtering time of the entire chain for contract events by 2-3 orders of magnitude, from minutes to under a second (#14522, #14631).


Some work-in-progress updates that will land in the next releases are:

升级所有Ethereum子协议使用的基本对等协议,将快速同步所需的带宽从33.6GB减少到13.5GB( #15106 )。 这种升级将改善网络以及轻型客户端的通用带宽需求。Upgrading the base peer-to-peer protocol used by all Ethereum sub-protocols, cutting the bandwidth needed for a fast sync from 33.6GB to 13.5GB (#15106). This upgrade will improve the general bandwidth requirement of the network as well as light clients too.

为状态尝试引入更复杂的内存缓存,将磁盘IO减少几个数量级。 正在等待最终实施的正确号码( #14952 )。Introducing a more sophisticated memory caching for state tries, reducing disk IO by a couple orders of magnitude. Exact number are pending a final implementation (#14952).

Trezor钱包Trezor wallets

About this time last year we’ve introduced support for the Ledger hardware wallet. Due to popular demand, we’ve now expanded on our hardware wallet offering by also rolling out support for the Trezor (#14885).

Opposed to the Ledger however, the Trezor is a bit more complicated as it requires a PIN-unlock sent from the communicating machine instead of directly input by the user. As such, when a user plugs in a Trezor, Geth will print:

New wallet appeared, failed to open url=trezor://0003:0007:00 err=”trezor: pin needed”

The Geth console can be used to unlock the Trezor by invoking personal.openWallet(url), which will request the user to enter the shuffled PIN code and send that over to the Trezor for verification:


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 details on how to interact with the Trezor from the JSON-RPC APIs, please consult the PR description.

交易过程Transaction journal

In the 1.6.x release family of Geth we’ve introduced a new transaction pool to avoid propagation issues due to minimum gas-price requirements. This new pool accepted all transactions irrelevant of pricing, and always kept the best paying 4K of them, discarding the cheaper ones.

The new pool features a special exemption mechanism for local accounts so that a user’s own transactions are always prioritized over remote ones, even if they are under-priced compared to everyone else’s. This ensures that cheap transactions don’t get flushed out of the network during heavy usage (e.g. ICO) as long as the originating node remains online.

Geth 1.7.0 takes this protective measure a step forward by journaling all locally created transactions to disk, and loading them back up on a node restart. This ensures that even if the originating node goes offline, cheap transactions still have a chance to be included when the node comes back (#14784).

The transaction journal can be an enormous help for node operators during software upgrades by not having to worry about local transactions going missing. Furthermore, the journal also acts as a resiliency mechanism against node crashes, ensuring that no transaction data is lost.

Rinkeby 更新 updates

There have been a lot of subtle tunings made to Puppeth and Rinkeby over the course of this release, such as better ethstats logging to detect malicious reporters and IP address blacklisting to deny access for them.

The Rinkeby testnet also proved vital in finding and and fixing a transaction pool event race that caused a lot of headache around lost transactions and/or duplicate nonce assignments. All such known errors have now been fixed (#15085).

Lastly we’re extremely happy to announce that Infura became an active player in the Rinkeby test network by aiding the community both with their own bootnode as well as running an authorized signer node. This should make the Rinkeby network even more robust and resilient.

结束语Closing remarks

Geth 1.7.0包含很多错误修复,我们认为它是迄今为止最好的版本,不过,我们敦促大家关注升级,并密切监控它,因为它包含非平凡的数据库升级。

此外,我们要强调升级的数据库不能被以前版本的Geth使用 。 我们建议生产用户从头开始与Geth 1.7.0同步,并保留旧数据库备份,直到您确认新版本在所有用例中正常工作。

有关更改的完整说明,请参阅Geth 1.7.0发布里程碑 。

Geth 1.7.0 contains a lot of bug fixes and we consider it our best release until now, however we urge everyone to take care with the upgrade and monitor it closely afterwards as it does contain non-trivial database upgrades.

Furthermore, we’d like to emphasize that the upgraded database cannot be used by previous versions of Geth. Our recommendation for production users it to sync from scratch with Geth 1.7.0, and leave the old database backed up until you confirm that the new release works correctly for all your 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.


[Source code (zip)]


[Source code (tar.gz)]