作者 | 雜湊派 - Adeline
文章字數:3600字左右
閱讀時間:約6分鐘
據以太坊基金會訊息,伊斯坦布林(Istanbul)硬分叉升級預計將於2019年12月7日前後發生,和前幾次的君士坦丁堡、拜占庭等硬分叉升級一樣,這次的升級同樣以改變以太坊底層協議的方式來提升整體效能。然而,也和前幾次升級前屢次延遲的“尿性”一樣,伊斯坦布林硬分叉之路依舊波折不斷。
據以太坊官方訊息,伊斯坦布林硬分叉原定於8月14日啟用Ropsten和Görli等以太坊測試網,並預計於2019年10月16日在主網上進行升級。
然而在8月15的以太坊電話會議中,核心開發者Péter Szilágyi指出,需要將該目標推遲兩週,且不排除在9月4日有再次推遲的可能性。最具爭議的ProgPOW演算法將推遲到下一次升級中實施。[1]
隨後9月6日的以太坊電話會議中,基金會社羣經理Hudson Jameson表示,由於有大量以太坊改進建議(EIP)提交審查,Ropsten測試網路啟用被推遲到10月2日左右,主網的啟用將推遲到11月。[2]
9月30日,以太坊基金會社羣經理Hudson Jameson表示,由於異常快速的區塊確認時間,造成測試網路Ropsten已於UTC時間9月30日3:40提前到來。
10月25日,PegaSys Protocol Engineering產品經理Tim Beiko發推表示,目前團隊初步達成共識,以太坊伊斯坦布林硬分叉日期定為12月4日,為了以防萬一,1月8日為定為備用日期。
11月20日,以太坊官方部落格發文稱,以太坊網路將按計劃在區塊高度9,069,000處進行升級。時間預計在2019年12月7日星期六發生。具體升級日期和時間可能會因出塊速度有所變化。[3]
......
升級狀況頻發,加上備受關注的EIP-1884ProgPoW提案的延遲,讓許多人為以太坊後續生態發展感到擔憂。因為從一開始的設計層面來說,伊斯坦布林硬分叉是以太坊經過最初的邊境(Frontier)、家園(Homestead),到現在的大都會(Metropolis)階段走向寧靜(Serenity)階段(即以太坊2.0)前的最後一次硬分叉。
儘管近期以太坊基金會研究員Danny Ryan公開表示以太坊2.0零階段計劃將於2020年第一季度上線,但屢次升級上演的“狼來了”的故事,讓這個“計劃”看上去蒼白了不少。
同時,我們整理了近期各種開發者會議和部分研究員的公開言論後發現,且不論以太坊一貫的延遲尿性,單根據目前研發情況來看,要完全實現以太坊2.0仍然是很遙遠的事情。
“寧靜”將至?
首先,根據EthHub上的介紹,以太坊2.0是一系列可以顯著改善系統效能的研發規範(specifications),在2.0版本中暫定部署分片技術(Sharding)、Casper協議(POS共識機制)、狀態租賃(State Rent)和以太坊虛擬機器EVM的升級專案eWASM。[4]
這一版本將分階段交付,每個階段都將建立在前一個階段的基礎上:
階段0:信標鏈Beacon Chain|2020第一季度
以太坊2.0交付計劃中,首先需要實現的目標是信標鏈,信標鏈將採用權益證明機制Casper the Friendly Finality Gadget(Casper FFG)[5],實現從POW(工作量證明)到POS(股權證明)的過渡。這一階段讓驗證者能夠參與質押系統、代替礦工成為鏈的構建者,併為分片方案提供基礎。
階段0信標鏈介紹截圖 資訊來源:Github
到目前為止,Prysm、Nimbus、Lighthouse等以太坊2.0實現團隊建立了支援信標鏈階段的單一客戶端測試網。據V神透露,7個單一客戶端開發團隊在9月初已經實現了客戶端之間的互操作性(interoperability)。
另外,在主網上線前,還需要一個支援多客戶端的測試網,使BETH(Beacon鏈ETH,即以太坊2.0代幣)能夠在不同賬戶間轉帳。11月9日,作為以太坊2.0的構建團隊Prysmatic Labs的成員,Danny Ryan表示,跨客戶端測試網至少還需要兩週的時間才能釋出,測試網釋出後也至少需要執行三個月。按這個時間來推算,跨客戶端測試網要在下個月能夠順利推出,才能在2020年2月、或者3月如期上線主網階段0,建立信標鏈創世區塊。
然而,由於階段0的實現與規範的制定是同時推進的[6],在互操作性實現以後,已經敲定凍結[7]的階段0規範進行了完全解凍,釋出最新的0.9.2版本[8]。規範在重新凍結前,需要在眾多的以太坊2.0客戶端中確定、實現並透過審計。而以太坊是一個龐大的開源專案,去中心化的特性讓研發規範顯得有些混亂、無組織,研究團隊間也缺乏協調。種種情況讓團隊在應對規範的變化時造成大量的時間的浪費,因此,上文中的“跨客戶端測試網如期推出”仍要打上一個問號。
階段1:分片鏈Shard Chains|時間待定
在階段1中將構建沒有虛擬機器EVM的分片,以分片鏈的方式為以太坊網路提供大規模的擴容性[9]。
階段1分片鏈介紹截圖 資訊來源:EthHub
階段1的推進之路也正經歷一些推倒和重來。6月份時,階段1大部分的規範已接近完成[10]。但在10月份,V神釋出了Eth2分片鏈簡化提議[11],提議減少分片數量,以加速分片專案落地。根據這一提議,以太坊開發人員在最後一刻將分片從1024個減少到64個。目前,階段1正在做將V神提出的分片鏈簡化方案轉化為規範形式的工作[12]。
此外,根據11月24日以太坊開發團隊Quilt的開發人員Will Villanueva在一個播客節目中的公開言論,階段1的規範可能會在階段0的規範完成後再敲定,但具體時間尚無法確定。
階段2:狀態執行State Execution|時間待定
從本質上來說,階段2是整個系統的“執行層”,它使分片鏈從簡單的資料容器過渡到結構化狀態,並引入智慧合約,每個分片將管理一個基於eWASM虛擬機器。這一階段的重點是執行引擎(execution engine)、賬戶模型(account model)等,將開啟狀態執行(state execution)和計算(computation)。
階段2介紹截圖 資訊來源:EthHub
目前這一階段仍處於積極研發狀態,還沒有任何正式的規範[13],也沒有哪個團隊能預計何時可以促成主網釋出。不過根據unitimes的訊息,在4月7日,以太坊核心開發人員Casey Detrio在ethresear.ch上釋出了階段2的一些新的想法[14],讓千頭萬緒的階段2有了一個可能的落腳點,隨後V神釋出了階段2的首個提案[15]和簡化提案[16],希望構建一個輕量級Layer1協議,然後重點關注分片鏈中的Layer2。
11月20日,Will Villanueva發表了一篇關於Eth2.0階段2進展的長文[17],詳盡闡述了執行環境(EEs)的概念及如何實現Eth2到Eth2的過渡。隨後,Will Villanueva在11月24日公開表示,目前包括其所在的Quilt團隊在內有三個團隊正在研究以太坊2.0階段2。
然而,階段2的實現並不簡單。根據Will Villanueva的文章,目前為止,雖然階段2已經有了初步的想法,近期無狀態客戶端(stateless clients)的拓展方面也有較大進展,但對於如何制定分片的基準和技術雛形以及如何在eth2的執行環境中構建智慧合約(smart contracts)等難題,目前還沒有給出明確的答案。
除外,以太坊2.0的程序中還存在許多不確定因素
首先,我們上文中提到過實現團隊之間的協作問題,以問題#358為例,35個欄位被重新命名,但Github的討論區裡並沒有收到實現者的任何反饋。這些情況導致了混亂的發生,直接導致了許多時間被白白浪費掉。
同時,開發團隊的資金問題令人擔憂,根據區塊鏈軟體諮詢公司Kyokan的Matthew Slipper&Dan Tsui的報告[18],9個以太坊2.0研究團隊都表現出對開發的無限熱忱,但這份熱忱放在市場的現實上不堪一擊。由於團隊運轉資金的來源單一,一旦以太坊基金會出現資金枯竭的情況,或者主要支援這些團隊的實體(如ConsenSys或者Status)取消對他們資金的支援,那這些團隊就可能不得不暫停開發。
加之最近以太坊的“後院起火”,以太坊基金會的Virgil Griffith因前往朝鮮參加了“平壤區塊鏈和加密貨幣會議”,在11月30日,被美當局指控違反美製裁法並逮捕。隨後V神澄清Virgil Griffith訪問朝鮮是個人行為,以太坊基金會未提供任何形式的支援,並準備請願書要求釋放 Virgil Griffith。這無疑將以太坊基金會與這件事進行切割,以免受到牽連。但Virgil Griffith本身是以太坊 2.0的共識機制Casper FFG的共同開發者,作為以太坊專案的重要開發人員,其對以太坊後續發展造成的影響也令人擔憂。
因此,儘管以太坊初創企業ConsenSys的創始人Joseph Lubin在開發者大會Devcon V上表示,以太坊2.0階段0將於2020年第一季度啟動,階段1和階段2將於2020年底同時推出。但實現團隊之間的協作、開發團隊的資金問題等問題,讓以太坊後續發展愈發撲朔迷離,加之階段2尚無正式規範,參照階段0規範的屢次修正調整,預計在階段0進入測試之後,階段1、階段2可能還需要至少一年多的開發時間,這也讓以太坊2.0的問世遙遙無期。
文中涉及的連結:
[1]https://github.com/ethereum/pm/issues/119
[2]https://github.com/ethereum/pm/issues/123
[3]https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/
[4]https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2.0-phases/#introduction
[5]https://vitalik.ca/files/casper_note.html
[6]https://hackernoon.com/what-to-expect-when-eths-expecting-80cb4951afcd
[7]https://github.com/ethereum/eth2.0-specs/releases/tag/v0.8.0[8]https://github.com/ethereum/eth2.0-specs/releases/tag/v0.9.2
[9]https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2.0-phases/#what-is-included_1
[10]https://github.com/ethereum/eth2.0-specs#phase-1
[11]https://notes.ethereum.org/KbEyHiaSRQW_KS7dDK0OFw
[12]https://github.com/ethereum/eth2.0-specs/pull/1483
[13]https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2.0-phases/#phase-2-state-execution
[14]https://github.com/ethereum/eth2.0-specs#phase-2
[15]https://ethresear.ch/t/phase-one-and-done-eth2-as-a-data-availability-engine/5269
[16]https://ethresear.ch/t/a-layer-1-minimizing-phase-2-state-execution-proposal/5397
[17]https://ethresear.ch/t/proposed-further-simplifications-abstraction-for-phase-2/5445
[18]https://docs.google.com/document/d/1PS0k9MaKPdPwEw3Uh9rq7USjq7LcSpT6ICQUXRij4YE/edit#