践行区块链

为伊斯坦布尔分叉做准备,升级 Geth 到 1.9.8

2019-11-30  本文已影响0人  Ashton

0x01 何为伊斯坦布尔分叉

这是以太坊网络最近比较重要的一次硬分叉升级,「伊斯坦布尔(Istanbul)」 是本次网络升级的代号。 此前的网络升级还曾使用过诸如 「君士坦丁堡」、 「拜占庭」 这样的代号。

该升级将于 906 9000 区块高度激活,该高度的块预计将于2019 年 12 月 7 日,周六挖出。具体的时间要视网络的出块时间以及观察者所处的时区而定。

0x02 这次网络升级有哪些变动

EIP-152: 加入了 Blake2 函数的预编译实现

添加了在以太坊合约中验证 Equihash PoW 的功能,可以实现与 Zcash 交互验证及原子交易。

EIP-1108: 减少 alt_bn128 预编译的 gas 消耗

使 zk-SNARK 更加便宜,从而允许构建更便宜的扩展和隐私应用程序。 示例可以参考 Matter labs, Aztec Protocol, Rollup 以及 Zether

EIP-1344: 加入 ChainID 操作码

合约可以有方法来跟踪它运行在哪一条以太坊链上。如可用于第 2 层网络(状态通道,Plasma)的合约跟踪一层网络的分叉。

EIP-1884: 对 trie-size-dependent 操作码重定价

更改某些 EVM 操作码的成本,以防止垃圾交易攻击,并更好地平衡每个块中的计算量。
以太坊中每个操作必须支付的手续费和操作所需的计算相匹配。随着状态的增长,如 SLOAD,BALANCE 和 EXTCODEHASH 需要更多的成本。

EIP-2028: 减少交易数据的 gas 消耗

通过降低交易 calldata 数据(用于交易的参数传递)的成本,使 zk-SNARK 和 zk-STARK 更加便宜。 这将使第二层解决方案能够提高吞吐量。 有关示例可参考 Starkware

EIP-2200: 重定义了 SSTORE gas 净值费用

更改了 EVM 中存储的成本计算,将使合约能够引入新功能,包括重入锁定和同合约的 multi-send。

0x03 如何为网络升级做准备

如果有运行以太坊节点,赶快升级到最新版本啊,即使你不太关注上面列出的升级内容。Geth 需要升级到 1.9.7 以上的版本。我刚刚升级自己负责的 Geth 节点到 1.9.8。

如果节点是放在国内,并且是通过源码编译的方式去安装 Geth 1.9.8 的话,可能会遇到下面的错:

build/env.sh go run build/ci.go install
go: golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2: unrecognized import path "golang.org/x/crypto" (https fetch: Get https://golang.org/x/crypto?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
make: *** [all] 错误 1

这是因为 Geth 1.9.8 对第三方库的依赖改成了 Go modules 的方式,需要从 golang.org 获取一些本地没有的库,而 golang.org 在国内是无法正常访问的。

解决这个问题也很简单,执行一下下面的命令就好了:

go env -w GOPROXY=https://goproxy.cn,direct
上一篇下一篇

猜你喜欢

热点阅读