這是白話區塊鏈的第1460期原創

作者| Soraya出品|白話區塊鏈(ID:hellobtc)

近日消息,以太坊擴容方案Optimism 宣布其OVM (Optimism 虛擬機)的2.0 版將於10 月14 日部署至Kovan 測試網,並於10 月28 日部署至以太網主網。

早前Optimism 已宣布將升級為EVM 全兼容,開發者可使用Solidity 智能合約直接在Layer2 部署以太坊上所運行的工具,這意味著以太坊網絡的可擴展性進一步增大。

那麼,這裡面提到的以太坊虛擬機,即EVM(Ethereum Virtual Machine,EVM)是什麼意思,又有何用處呢?今天就讓我們來一探究竟。

01什麼是以太坊虛擬機?

計算機專業的同學對“虛擬機”應該並不陌生,“虛擬機”是指通過軟件模擬的具有完整硬件系統功能的、運行在一個完全隔離環境中的完整計算機系統。

通俗點講,虛擬機就是我們通過軟件模擬出了跟我們個人電腦一模一樣的虛擬機器,它擁有跟實際物理電腦同樣的軟硬件資源。

進入虛擬系統之後,我們日常的所有操作都可以在這個全新且獨立的虛擬系統裡面進行,可以獨立安裝運行軟件,保存數據等等。

這樣一來,我們大可在虛擬機中盡情的折騰,各種病毒和攻擊都不怕,大不了重裝一下虛擬機,並不會對真正的系統產生任何影響。

就好比《西遊記》中的六耳獼猴跟孫悟空有著同樣的外表,也都擁有降妖除魔的能力,但他們又是獨立的個體。即便六耳獼猴被打死之後,也不會對孫悟空本身造成任何影響。

我們知道比特幣網絡像是一個巨大且實時更新的分佈式賬本,世界上任何地方的電腦均可以通過互聯網連接到比特幣系統,它有著有去中心化、不可篡改和公開透明的特點。

在這個網絡裡面沒有虛擬機,比特幣更為主要的功能是用來記錄、存儲鏈上隨時進行的交易數據。

而以太坊虛擬機顧名思義則是建立在以太坊區塊鏈上的一個抽象的機器,它可以使在其上面運行的程序彼此隔離,並且與主鏈分離。

02以太坊虛擬機有何用處?

相較於比特幣被視作分佈式的記賬本,以太坊致力成為“下一代智能合約和去中心化應用平台”,則可以被看作是可以運行程序的分佈式計算平台。

Vitalik 也將其構想為一個去中心化的“世界計算機”。作為計算機,就需要有計算,存儲,執行等功能。

所以,以太坊在擁有比特幣網絡中基本的數據存儲功能之外,還需要運行各種代碼進行計算,由以太坊虛擬機(EVM)所編譯和解釋執行的軟件或者應用就是“智能合約”。

當以太坊鏈上發生轉賬交易的時候,以太坊虛擬機(EVM)會進行以下一系列工作:

調取轉賬的數值,分析合約的指令。計算Gas的消耗(手續費), 確保發出轉賬的地址有足夠的Gas費。執行合約,實現轉賬到對應的地址。

從上面以太坊虛擬機(EVM)的工作流程中,我們可以窺見EVM對於以太坊的幾個功能:

便於測試:為了保證各種“智能合約”的順利執行,我們需要給它們創建一個安全的運行環境,以太坊虛擬機就是一個代碼的運行環境。正如我們上文所說,在虛擬機裡的各種操作不會影響主機一樣,任何想要在以太坊虛擬機創建智能合約的開發者可以在虛擬機上測試各種應用而不佔用主鏈資源也不受其他區塊鏈的影響。增加安全性:以太坊上承載著具有強大功能的各種應用,其邏輯也就更加複雜,開發者也越容易出現各種漏洞。而以太坊虛擬機是一個完全獨立的沙盒,合約代碼可對外完全隔離並在EVM 內部運行。不僅可以防止因為不法分子或者程序員的編程錯誤而影響整個主鏈,還可以防止運行智能合約的物理設備遭受攻擊。保障穩定性:由於以太坊虛擬機部署在以太坊網絡的每個節點,整個以太坊網絡的數據由眾多節點共同維護和更新,這保持了整個區塊鏈數據的一致性,這同樣也使以太坊有極高的故障容錯性,保證零停機。

03小結

可見,以太坊虛擬機在以太坊區塊鏈中扮演著重要的角色,為智能合約的實現提供了技術基礎,不僅整體上可以為開發人員提供應用測試環境,一定程度上提升了以太坊主鏈的安全性、穩定性。

不過它同時也存在著很多缺陷深受詬病,比如EVM 常用的Solidity 語言缺乏標準庫、合約代碼不支持升級只支持部署,存儲空間碎片化和維護等。

你還知道目前市面上有哪些由EVM衍生出來的虛擬機嗎?歡迎在留言區分享你的觀點。