以太坊將進行“心臟手術”,以太坊虛擬機器(EVM)將被EWASM取代
以太坊的心臟其實就是一臺虛擬電腦。
以太坊虛擬機器(EVM)儲存在成千上萬個節點上,組成了以太坊平臺。EVM負責執行數不清的代幣、dapp、DAO和數字小貓,這些都是以太坊區塊鏈的組成部分。
EVM就像是推動以太坊執行的引擎,它使用一種名為“EVM位元組碼”的語言——一種原始的,256位的資訊串,可以提供任何可以想到的方程(它在平臺自我設定的限制範圍內提供)。
EVM聽起來很強大、很重要,是嗎?那麼這就意味著EVM絕對不可以出現混亂?
然而,這個以太坊基礎設施的主要部分正在為徹底的重寫做準備。
以太坊開發者Lane Rettig告訴CoinDesk說,
“我想說的是,我們一開始並沒有大量的設計思考。這就有點像一個工具——瑞士軍刀—EVM做了很多事情,但做得不太好”。
因此,當前的EVM將被一個稱為eWASM的新虛擬機器所取代。
eWASM是WASM(WebAssembly)程式碼的以太坊版本,WASM由負責維護和標準化Web的開發者團隊——全球資訊網聯盟(W3C)建立。
eWASM開發貢獻者Retting說,
“相比於EVM,許多高收入、非常有經驗的工程師向WASM構建集的概念投入了成千上萬的工作小時。”
實際上,eWASM將允許以太坊開發人員能夠使用多種程式語言來編寫程式碼——而不僅僅目前所使用的以太坊專用的語言Solidity——據說eWASM還會帶來大量的效能增強。
由此,以太坊將加入幾個競爭對手的行列,包括EOS和Cardano,他們已經各自部署(或計劃部署)專用的虛擬機器,使用WASM程式碼來處理去中心化計算。
對於以太坊來說,這次虛擬機器切換被設定與其他一些以太坊網路更新一起執行,包括在未來幾年實施的分片(Sharding)擴容解決方案和Casper,因此現在被戲稱為“Shasper”。雖然這一切換的確切時間並不是固定的,但eWASM的開發正在迅速取得進展,並正準備在10月在布拉格舉行的以太坊開發者大會上推出測試網路。
在談到更換現有虛擬機器時,Retting總結說:
“以太坊正處於一種過渡階段,從一輛圍繞著農場緩慢騎行的自行車轉向一臺能夠在高速公路行駛的真正賽車。”
一條“疣狀的”路
這種虛擬機器切換背後存在著一種現實,那就是人們認識到,儘管EVM是一種創新技術——第一次提供了一種抗攻擊的去中心化計算解決方案——但現實情況是它並不像它所能做到的那樣乾淨利索。
舉個例子,大多數dapps開發人員都在使用以太坊Solidity語言,這是一種高階程式語言,它可以自動編譯成EVM位元組碼相容的形式。
Rettig說,由於EVM依賴於“非常大的、廣泛的指令”,即使是最微小的計算,比如基本的算術,也需要轉換成256位的字串讓EVM來處理——這是一個複雜過程,即便是一次非常簡單的數學運算也需要完成這個過程。
這只是在系統程式碼中內建的幾個操作之一,還包括流行的雜湊函式SHA-3,而Rettig認為這些操作不應該存在。
由於這個原因,Retting將EVM描述為“疣狀的”。
以太坊的核心開發者尼克·約翰遜(Nick Johnson)也同意這一觀點,他告訴CoinDesk,當他加入以太坊時,他馬上就意識到,EVM是由對電腦科學有深刻理解的開發人員建造的,而這些人員在構建被廣泛使用的產品方面卻沒有多少經驗。
Johnson強調,作為一種工具,EVM“優化了理論的純粹性,而不是實際應用。”
他說,
“EVM擁有大量的暫存器,但它們都是一樣的東西,而且在內部是一致的,但它不是為了現實世界的實現建立起來的。”
相比之下,WASM程式碼是在考慮現實產品的情況下構建的。
Rettig說,EVM“更貼近硬體”,這意味著它執行的程式碼接近於實際的硬體指令,因此在翻譯不同的編碼邏輯上花費的工作更少。
“EVM指令非常接近實際的硬體指令,”Rettig繼續說道。“這些指令可以直接對映到實際裝置執行的指令,因此,理論上,您可以獲得非常令人興奮的效能改進。”
例如,在以太坊上構建的開發人員將能夠使用多種語言進行編碼——無論他們最喜歡哪一種——包括那些具有額外安全性優勢的語言。
另一個關鍵優勢——Rettig說,一些開發者認為這是“eWASM被選用背後的關鍵動機”——eWASM可能會消除所謂的“預編譯”。
由於EVM是由笨拙的程式碼組成的,所以需要在系統內部構建某些操作——否則,操作將超過與之相關的gas成本。這被稱為預編譯,要使此類操作可用就需要一個系統範圍的升級或硬分叉;事實證明,這樣的升級是有風險的,而且是複雜的。
然而,在eWASM中,開發人員認為這些操作可以簡單地編寫為智慧合約然後進行部署,這就跳過了硬分叉場景。
Johnson說:
“通過eWASM,它在計算方面的效率非常高,以至於大多數預編譯的東西都可以被取消,取而代之的是eWASM合約。”
心碎
然而,與一個去中心化的生態系統中發生的任何其他重大更改一樣,放棄EVM的努力也並非沒有遭受批評。
首先,以太坊的核心開發者Greg Colvin一直致力於EVM的維護工作,他不願意讓舊程式碼消失。
Colvin一直在設計一個新改進的EVM程式碼版本,名為EVM 1.5,最初的目的就是讓其成為以太虛擬機器的未來。然而,在沒有任何警告的情況下,他的經費被非盈利的以太坊基金會削減了。
“我很生氣,”Colvin說,他幫助成立了以太坊魔術師委員會,這是一個討論小組,致力於進一步提高以太坊的技術熟練程度,他告訴CoinDesk。
“你們連一小時8.4美元經費都不願意付給我,而把我的工作時間從35小時減少到20小時,那麼我為什麼要幹活呢?而在接下來的一年裡,我再也沒有時間進行這些志願者工作了。”
然而,Colvin反對的原因不僅僅是自尊心。
根據他的說法,eWASM也存在技術問題。例如,由於eWASM允許多種語言,所以程式碼很大程度上依賴於所謂的“編譯器”——Colvin認為這對於攻擊者來說可能是一種單點故障。
他也不相信eWASM智慧合約可以取代預編譯。
此外,Colvin還有很多設計方面的批評,甚至連Rettig也同意這一點。根據這兩位開發者的說法,由於某些原因,效率較低的技術通常會勝出。以Javascript為例,它是最廣泛使用的程式語言之一,但它也是出了名的設計醜陋。
Rettig認為:
“在技術和電腦科學領域,似乎有一種模式,在這些領域,設計最好的東西,不僅不一定能贏,而且似乎執行的也不太好。”
更不用說,根據Colvin的說法,在WASM背後的所有開發工作中,程式碼仍然沒有經過測試。
Colvin告訴CoinDesk:
“我不明白為什麼我們想要成為實驗的早期採用者,我們已經是我們自己實驗的早期採用者。”
不可預見性
撇開衝突不談,eWASM正在吸引許多以太坊的開發者的關注。
實際上,正在進行的計劃是在11月以太坊開發者大會Devcon4之前部署測試網路。
然而,這並不意味著新的虛擬機器將在短時間內被部署。
因為在替換EVM本身之前,eWASM將首先在一個分片或一個側鏈上被推出,eWASM的推出與Shasper升級密切相關。就時間而言,這意味著開發者需要關注那些支援這些變化的研究,然後再轉向eWASM。
不幸的是,這種研究的進展是不可預測的。
實際上,這類程式碼升級所涉及的時間模糊性正在給該平臺上大量以太坊開發人員帶來困惑。
“如果你正在建立一個新客戶端,那就會有很多困惑:我應該使用eWASM建立嗎?我應該使用EVM建立嗎?還是我應該同時基於兩者建立?我應該做些別的什麼,”Rettig告訴CoinDesk。
對Colvin來說,缺乏清晰度是一個關鍵的障礙,因為當涉及到當前的EVM時,有一些效能問題很容易改進,但這些問題的解決已經被路線圖的突然轉變所阻礙。
“我在這一段時間感到沮喪,eWASM顯然即將來臨,但儘管沒有太多的資源,EVM1.5同樣已經就在不遠處。現在,它仍然是可行的,但卻被推掉了,整整一年都被浪費了。”Colvin告訴CoinDesk。
越多越好?
儘管如此,Rettig和Colvin都承認,這種不確定性是在沒有任何中央領導的情況下為開源專案做出貢獻的產物。
“社群層面是如此重要。如果以太坊是一家公司,那就我早就離職不幹了,”Colvin對CoinDesk說。
Rettig爭辯說,當談到以太坊的改進時,就沒有什麼工作是浪費的。
事實上,他繼續說道,因為分片升級的性質——將以太坊分割成更小、更易於管理的塊——以太坊最終可以支援多種虛擬機器。
在以太坊經過更新升級之後,Rettig說,
“沒有單一的以太坊,沒有單一的路線圖,沒有單一的權威,它是一個社群,是一個技術家族,我不相信未來只有一條區塊鏈來統治這所有的一切。”
與此同時,eWASM也將開啟新層次的互操作性。首先,它是建立在一種已經標準化的全球資訊網上的語言中,所以在瀏覽器中新增對以太坊的支援是輕而易舉的。
它還可以為不同區塊鏈之間未被發現的互操作性鋪平道路。
Rettig說:
“也許你將見到二次分片、Plasma等,也許它們在某些地方重疊,也許我們有一條與以太坊區塊鏈通訊的Dfinity鏈,或者通過Cosmos和Polkadot與比特幣區塊鏈通訊的以太坊區塊鏈。我們還不知道會出現什麼,因此不要太沉迷於官方規範的發展路線圖,不管它是什麼。”
發文時比特幣價格 ¥42825.19