以太坊分叉预计2月28日:君士坦丁堡+圣彼得堡升级
计划在1月16日进行的君士坦丁堡升级推迟后,以太坊即将在本周进行君士坦丁堡/圣彼得堡网络升级,向 ETH 2.0过渡。
在区块高度#7280000时,以太坊将进行2次升级:君士坦丁堡和圣彼得堡升级。
较此前君士坦丁堡的更新计划来说,本次的主要变化有2方面:
1. 移除了 EIP 1283 提案
2. 更新了各以太坊客户端版本
对以太坊用户来讲,除了ETH价格的市场变化,你不会受到任何影响,无需进行任何操作。
如果你在以太坊跑全节点或者挖矿,那么需要更新最新的客户端。(下文有下载链接)
我们翻译了以太坊基金会2月22日发布的《君士坦丁堡/圣彼得堡升级公告》,详细内容如下:
如何获得准确的以太坊升级时间?
预计区块:#7280000区块高度 激活升级
预计时间:2019年2月28日星期四
具体日期以出块时间为准,可能会有1-2天的时间波动。
推荐2个工具:
区块倒数计时器:
https://amberdata.io/blocks/7280000
实时观察网络:
http://forkmon.ethdevops.io/
这次升级为什么叫君士坦丁堡/圣彼得堡?
最初的君士坦丁堡升级由于安全问题被推迟,这次升级需要在同一区块上进行两次协议升级,以便修复各种以太坊测试网络上的问题,例如Ropsten测试网。
作为以太坊用户和ETH持有者,需要我做什么吗?
如果您是以下产品的用户:
交易所:如Coinbase、Binance和DDEX
网页钱包:如Metamask、MyCrypto或MyEtherWallet
钱包APP:如imToken、Cobo或Trust Wallet
硬件钱包:如Ledger,Trezor或KeepKey
除非这些产品特别通知您进行相关操作,否则您无需执行任何操作。
作为节点运营者或矿工,我需要做什么?
下载最新的以太坊客户端版本:
geth (v1.8.23)
Parity (v2.2.10-stable)
Harmony (v2.3 Build 74)
Pantheon (v0.9.1)
EthereumJS VM (v2.6.0)
Ethereum Wallet/Mist (v0.11.1)
https://github.com/ethereum/go-ethereum/releases/tag/v1.8.23
https://github.com/paritytech/parity-ethereum/releases/tag/v2.2.10
https://github.com/ether-camp/ethereum-harmony/releases/tag/v2.3b74
https://pegasys.tech/
https://github.com/ethereumjs/ethereumjs-vm/releases/tag/v2.6.0
https://github.com/ethereum/mist/releases/tag/v0.11.1
作为节点运营者或矿工,如果我没参与升级,会发生什么?
如果您使用的客户端没有更新到以上列出的最新版本,那么一旦升级,您的客户端将同步到升级前的链上。
您将被困在这条不兼容的链上,此链遵循旧规则,所以您将无法发送交易,不能在升级后的以太坊网络上运行。
如何理解以太坊世界的网络升级?
网络升级是对底层以太坊协议的更改,创建新规则来优化以太坊系统。
区块链升级并不像更新手机 App 那么简单。区块链去中心化的性质使网络升级更加困难:需要社区以及各种以太坊客户端的开发人员进行合作和沟通,才能顺利过渡。
网络升级的过程中,究竟发生了什么?
首先,社区就升级中应包含哪些更新达成共识。然后,这些更新将写入各个以太网客户端,例如geth,Parity和Harmony。 最后,协议的更新在指定的区块高度激活。
任何没有升级到新规则的节点,将被遗弃在旧链上。
君士坦丁堡升级,会带来什么新变化?
网络升级中包含的更新是用 EIP 来标记和指代的。以太坊升级提案(Ethereum Improvement Proposal,EIP)描述了为以太坊平台实施的一些标准,包括核心协议规范(core protocol specification)、客户端 API(client API)以及合约标准(contract standard)。
下列 EIP 为君士坦丁堡升级中包含的更新,这些更新除了移除了EIP 1283外,与推迟前计划的更新一致:
EIP 145:EVM 中的按位移动(bitwise shifting)指令
1. 提供与其它算术运算代价相当的原生按位移动指令
2. EVM 现在是没有按位移动指令的,但支持其他逻辑和算术运算。按位移动可以通过算术操作来实现,但这样会有更高的 Gas 消耗,也需要更多时间来处理。使用算术操作,实现 SHL 和 SHR 需要耗费 35 Gas,但这一提案提供的原生指令只需消耗 3 Gas。
3. 一句话总结:该 EIP 为协议加入了一个原生的功能,使得 EVM 中的按位移动操作更便宜也更简单。
EIP 1014:Skinny CREATE2
1.加入新的操作码 0xf5
,需要 4 个堆栈参数(stack argument):
endowment
、 memory_start
、 memory_length
、 salt
。
具体表现与 CREATE 相同,但使用keccak256( 0xff ++ sender_address ++ salt ++ keccak256(init_code)))[12:]
,而不是 keccak256(RLP(sender_address, nonce))[12:]
,作为合约初始化的地址。
2. 拓宽我们的交互范围:有些合约在链上还不存在,但可以确定只可能包含由 init_code 特定部分创建出来的代码,有了该 EIP 之后我们就可以和这样的合约交互。
3. 对包含与合约的 conterfactual 交互的状态通道来说非常重要。
4. 一句话总结:这一 EIP 让你可以与还没有被创建出来的合约交互。
EIP 1052:EXTCODEHASH 操作码
1. 该 EIP 指定了一个新的操作码,可以返回某合约代码的 keccak256 哈希值。
2. 许多合约都需要检查某一合约的字节码,但并不需要那些字节码本身。比如,某个合约可能想检查另一合约的字节码是不是一组可行的实现之一;又或者它想分析另一合约的代码,把所有能通过分析的合约(即字节码匹配的合约)添加进白名单。
3. 合约现在可以使用 EXTCODECOPY 操作码,但在那些只需要哈希值的情境下,这一操作码相对来说是比较贵的,尤其是对那些大型合约而言。新的操作码EXTCODEHASH 部署之后,就可以只返回某一合约字节码的 keccak256 哈希值。
4. 一句话总结:该 EIP 会让相关操作变得更便宜(消耗更少的 Gas)。
EIP 1234:推迟难度炸弹爆炸的时间并调整区块奖励
1. 平均出块时间会因为逐渐加速的难度炸弹(也叫做“冰河时期”)而不断上升。该 EIP 提议推迟难度炸弹约 12 个月,并且(为适应冰河期推迟)而减少区块奖励(从3 ETH 到 2 ETH)。
2. 一句话总结:该 EIP 保证了我们不会在 PoS 准备好并实现之前使以太坊停止出块。
圣彼得堡升级,会带来什么新变化?
以太坊在主网上执行升级之前,测试网络(如Ropsten)会先升级来测试这些更新。 上文列出的君士坦丁堡更新在推迟之前已经应用于测试网络,现在需要第二次升级来撤销之前君士坦丁堡的更新。
这次更新被称为圣彼得堡,会在和君士坦丁堡升级相同的区块高度上进行。
圣彼得堡升级的测试网络中移除了以下EIP:
移除 EIP 1283:改变 SSTORE 操作码所用 Gas 的计算方式
1.该 EIP 建议改变 SSTORE 操作码的净 Gas 计量方式,以启用合约存储的新用法,并在计算方式与当前大多数实现不匹配的情形下减少无谓的 Gas 消耗(因为在当前的大多数实现中都不需要某些操作,但原来的计算方式会把这些操作所需的 Gas 也算进去)。
2.一句话总结:该 EIP 会让某些操作变得更便宜(只需更少的 Gas 即可完成操作),减少那些当前“多余”而昂贵的 Gas 消耗。
上面的内容比较硬,我们聊几句ETH最近的市场状况。根据 CoinMarketCap数据,近15天ETH市场如下:
如果你观察下历史几次ETH分叉前后的价格波动,你会发现一定的规律。(不作投资建议所以就贴张图不明说啦。)
加上现在有做多和做空的工具,如sETH 和LongETH,以及预测市场Veil,其实分叉除了技术意义,往往意味着市场机会。
(Veil 关于预测以太坊分叉是否会成功举行的金融产品)
而上次君士坦丁堡分叉由于安全漏洞推迟后,市场出现了一片“以太坊药丸
纷杂的信息往往使我们无法触及事情的本质。于是,我们搜集了10位币圈意见领袖对以太坊发展的看法,看看大佬眼里,本次升级带来的更新会对市场有怎样的影响?
不妨一读:君士坦丁堡分叉再定2月27日,这10位币圈大佬有话说
【参考】
以太坊博客:
https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/
以太坊爱好者:
通告 | 以太坊君士坦丁堡(Constantinople)升级公告(2019.1.12)
【往期文章回顾】