計劃在 1 月 16 日進行的君士坦丁堡升級推遲後,以太坊即將在本週進行君士坦丁堡 / 聖彼得堡網絡升級,向 ETH 2.0 過渡。
在區塊高度#7280000 時,以太坊將進行 2 次升級:君士坦丁堡和聖彼得堡升級。
較此前君士坦丁堡的更新計劃來說,本次的主要變化有 2 方面:
- 移除了 EIP 1283 提案
- 更新了各以太坊客戶端版本
對以太坊用戶來講,除了 ETH 價格的市場變化,你不會受到任何影響,無需進行任何操作。
如果你在以太坊跑全節點或者挖礦,那麼需要更新最新的客戶端。(下文有下載鏈接)
我們翻譯了以太坊基金會 2 月 22 日發佈的《君士坦丁堡 / 聖彼得堡升級公告》,詳細內容如下:
如何獲得準確的以太坊升級時間?
預計區塊:#7280000 區塊高度 激活升級
預計時間:2019 年 2 月 28 日星期四
具體日期以出塊時間爲準,可能會有 1-2 天的時間波動。
推薦 2 個工具:
區塊倒數計時器:
https://amberdata.io/blocks/7280000
實時觀察網絡:
這次升級爲什麼叫君士坦丁堡 / 聖彼得堡?
最初的 君士坦丁堡升級由於安全問題被推遲,這次升級需要在同一區塊上進行兩次協議升級,以便修復各種以太坊測試網絡上的問題,例如 Ropsten 測試網。
作爲以太坊用戶和 ETH 持有者,需要我做什麼嗎?
如果您是以下產品的用戶:
- 交易所:如 Coinbase、Binance 和 DDEX
- 網頁錢包:如 Metamask、MyCrypto 或 MyEtherWallet
- 錢包 APP:如 imToken、Cobo 或 Trust Wallet
- 硬件錢包:如 Ledger,Trezor 或 KeepKey
除非這些產品特別通知您進行相關操作,否則您無需執行任何操作。
作爲節點運營者或礦工,我需要做什麼?
下載最新的以太坊客戶端版本:
- geth (v1.8.23)
https://github.com/ethereum/go-ethereum/releases/tag/v1.8.23 - Parity (v2.2.10-stable)
https://github.com/paritytech/parity-ethereum/releases/tag/v2.2.10 - Harmony (v2.3 Build 74)
https://github.com/ether-camp/ethereum-harmony/releases/tag/v2.3b74 - Pantheon (v0.9.1)
https://pegasys.tech/ - EthereumJS VM (v2.6.0)
https://github.com/ethereumjs/ethereumjs-vm/releases/tag/v2.6.0 - Ethereum Wallet/Mist (v0.11.1)
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 關於預測以太坊分叉是否會成功舉行的金融產品
而上次君士坦丁堡分叉由於安全漏洞推遲後,市場出現了一片「以太坊藥丸」的論調。這次呢,有意思的是波場也選擇了同一時間,宣佈在 2.28 進行硬分叉。
紛雜的信息往往使我們無法觸及事情的本質。於是,我們蒐集了 10 位幣圈意見領袖對以太坊發展的看法,看看大佬眼裏,本次升級帶來的更新會對市場有怎樣的影響?
不妨一讀:君士坦丁堡分叉再定 2 月 27 日,這 10 位幣圈大佬有話說
參考
以太坊博客:https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/
以太坊愛好者:通告 | 以太坊君士坦丁堡(Constantinople)升級公告(2019.1.12)