原文標題:《科普 | 以太坊虛擬機EVM是什么,有何用處?》
近日消息,以太坊擴容方案 Optimism 宣布其 OVM (Optimism 虛擬機)的 2.0 版將于 10 月 14 日部署至 Kovan 測試網,并于 10 月 28 日部署至以太網主網。
早前 Optimism 已宣布將升級為 EVM 全兼容,開發者可使用 Solidity 智能合約直接在 Layer2 部署以太坊上所運行的工具,這意味著以太坊網路的可擴展性進一步增大。
那么,這里面提到的以太坊虛擬機,即EVM(Ethereum Virtual Machine,EVM)是什么意思,又有何用處呢?今天就讓我們來一探究竟。
什么是以太坊虛擬機?
計算機專業的同學對“虛擬機”應該并不陌生,“虛擬機”是指通過軟體模擬的具有完整硬件系統功能的、運行在一個完全隔離環境中的完整計算機系統,
通俗點講,虛擬機就是我們通過軟體模擬出了跟我們個人電腦一模一樣的虛擬機器,它擁有跟實際物理電腦同樣的軟硬件資源,
進入虛擬系統之后,我們日常的所有操作都可以在這個全新且獨立的虛擬系統里面進行,可以獨立安裝運行軟體,保存數據等等。
這樣一來,我們大可在虛擬機中盡情的折騰,各種病毒和攻擊都不怕,大不了重裝一下虛擬機,并不會對真正的系統產生任何影響。
就好比《西游記》中的六耳獼猴跟孫悟空有著同樣的外表,也都擁有降妖除魔的能力,但他們又是獨立的個體,即便六耳獼猴被打死之后,也不會對孫悟空本身造成任何影響。
我們知道比特幣網路像是一個巨大且實時更新的分布式賬本,世界上任何地方的電腦均可以通過互聯網連接到比特幣系統,它有著有去中心化、不可篡改和公開透明的特點,
在這個網路里面沒有虛擬機,比特幣更為主要的功能是用來記錄、存儲鏈上隨時進行的交易數據,
而以太坊虛擬機顧名思義則是建立在以太坊區塊鏈上的一個抽象的機器,它可以使在其上面運行的程式彼此隔離,并且與主鏈分離,
以太坊虛擬機有何用處?
相較于比特幣被視作分布式的記賬本,以太坊致力成為“下一代智能合約和去中心化應用平臺”,則可以被看作是可以運行程式的分布式計算平臺,
Vitalik 也將其構想為一個去中心化的“世界計算機”。作為計算機,就需要有計算,存儲,執行等功能。
所以,以太坊在擁有比特幣網路中基本的數據存儲功能之外,還需要運行各種代碼進行計算,由以太坊虛擬機(EVM)所編譯和解釋執行的軟體或者應用就是“智能合約”。
當以太坊鏈上發生轉賬交易的時候,以太坊虛擬機(EVM)會進行以下一系列工作:
- 調取轉賬的數值,分析合約的指令。
- 計算Gas的消耗(手續費), 確保發出轉賬的地址有足夠的Gas費,
- 執行合約,實現轉賬到對應的地址。
從上面以太坊虛擬機(EVM)的工作流程中,我們可以窺見EVM對于以太坊的幾個功能:
- 便于測試:為了保證各種“智能合約”的順利執行,我們需要給它們創建一個安全的運行環境,以太坊虛擬機就是一個代碼的運行環境。
- 正如我們上文所說,在虛擬機里的各種操作不會影響主機一樣,任何想要在以太坊虛擬機創建智能合約的開發者可以在虛擬機上測試各種應用而不占用主鏈資源也不受其他區塊鏈的影響,
- 增加安全性:以太坊上承載著具有強大功能的各種應用,其邏輯也就更加復雜,開發者也越容易出現各種漏洞,而以太坊虛擬機是一個完全獨立的沙盒,合約代碼可對外完全隔離并在 EVM 內部運行,
- 不僅可以防止因為不法分子或者程式員的編程錯誤而影響整個主鏈,還可以防止運行智能合約的物理設備遭受攻擊,
- 保障穩定性:由于以太坊虛擬機部署在以太坊網路的每個節點,整個以太坊網路的數據由眾多節點共同維護和更新,這保持了整個區塊鏈數據的一致性,這同樣也使以太坊有極高的故障容錯性,保證零停機。
小結
可見,以太坊虛擬機在以太坊區塊鏈中扮演著重要的角色,為智能合約的實現提供了技術基礎,不僅整體上可以為開發人員提供應用測試環境,一定程度上提升了以太坊主鏈的安全性、穩定性。
不過它同時也存在著很多缺陷深受詬病,比如 EVM 常用的 Solidity 語言缺乏標準庫、合約代碼不支持升級只支持部署,存儲空間碎片化和維護等。