以太坊將進行“心臟手術”,以太坊虛擬機(EVM)將被EWASM取代區塊鏈
以太坊虛擬機(EVM)存儲在成千上萬個節點上,組成了以太坊平臺。EVM負責執行數不清的代幣、dapp、DAO和數字小貓,這些都是以太坊區塊鏈的組成部分。
以太坊的心臟其實就是一臺虛擬電腦。
以太坊虛擬機(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與比特幣區塊鏈通信的以太坊區塊鏈。我們還不知道會出現什么,因此不要太沉迷于官方規范的發展路線圖,不管它是什么。”
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。