計劃在 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

實時觀察網絡:

http://forkmon.ethdevops.io/

這次升級爲什麼叫君士坦丁堡 / 聖彼得堡?

最初的 君士坦丁堡升級由於安全問題被推遲,這次升級需要在同一區塊上進行兩次協議升級,以便修復各種以太坊測試網絡上的問題,例如 Ropsten 測試網。

作爲以太坊用戶和 ETH 持有者,需要我做什麼嗎?

如果您是以下產品的用戶:

  • 交易所:如 Coinbase、Binance 和 DDEX
  • 網頁錢包:如 Metamask、MyCrypto 或 MyEtherWallet
  • 錢包 APP:如 imToken、Cobo 或 Trust Wallet
  • 硬件錢包:如 Ledger,Trezor 或 KeepKey

除非這些產品特別通知您進行相關操作,否則您無需執行任何操作。

作爲節點運營者或礦工,我需要做什麼?

下載最新的以太坊客戶端版本:

作爲節點運營者或礦工,如果我沒參與升級,會發生什麼?

如果您使用的客戶端沒有更新到以上列出的最新版本,那麼一旦升級,您的客戶端將同步到升級前的鏈上。

您將被困在這條不兼容的鏈上,此鏈遵循舊規則,所以您將無法發送交易,不能在升級後的以太坊網絡上運行。

如何理解以太坊世界的網絡升級?

網絡升級是對底層以太坊協議的更改,創建新規則來優化以太坊系統。

區塊鏈升級並不像更新手機 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)