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