Web3中文|什么是以太坊虛擬機(EVM) 它是如何工作的?
發表於 2022-12-02 15:41 作者: iNFTnews
來源 | cointelegraph
編譯 | Dali@iNFTnews.com
以太坊已成爲僅次於比特幣的第二重要區塊鏈。以太坊能發展得這么好,它的原生Solidity編程語言和以太坊虛擬機(EVM)發揮了重要的作用。
以太坊區塊鏈憑借自身擁有的靈活性、大量可用的开發工具和龐大的用戶基礎,繼續吸引着去中心化應用(DApp)开發人員的加入。
作爲區塊鏈架構的核心,EVM是執行以太坊應用代碼或智能合約的程序,並爲它們提供在以太坊網絡上運行的環境。
此外,EVM是圖靈完備的( 一切可計算的問題都能計算,這樣的虛擬機或者編程語言就叫圖靈完備的),因此理論上,它可以運行所有以編程語言編寫的程序,從而讓开發人員可以輕松地創建自定義智能合約和DApp。
除了這些,EVM還可以訪問網絡中的所有節點,處理智能合約的執行,並有效地管理以太坊區塊鏈上的所有交易,這也使其成爲當今世界上最強大的虛擬機之一。
什么是以太坊虛擬機(EVM),它是如何工作的?
以太坊網絡的概念是程序員Vitalik Buterin在2013年提出的。
作爲DApp开發者的首選區塊鏈,以太坊的成功有賴於Gavin Wood在以太坊任職期間設計的以太坊虛擬機(EVM)。
EVM用C++編寫並使用 LLVM項目編譯器(LLVM是架構編譯器的框架系統,用於優化任意程序語言編寫的程序的編譯時間、鏈接時間、運行時間以及空闲時間),它是一種可以連續運行的特殊的狀態機,決定着以太坊區塊鏈中每個區塊的狀態。
EVM不僅管理着節點對分布式账本的操作範圍,還定義了在不同區塊之間改變狀態的具體規則。後一種功能是以太坊智能合約成功運行的基礎。
要了解以太坊虛擬機的作用,需要知道它在確保以太坊網絡平穩運行方面都做了些什么。
對於接收到的每一個輸入信息,EVM都會產生一個本質上具有確定性的輸出信息。
EVM的運行方式類似於將瞬態值推入和推出下推棧的堆棧機器,其深度爲1024個項,而每個項都是256位字。
此外,它還以字節數組的形式維護臨時內存。已編譯的智能合約代碼由EVM以140個標准操作碼集合的形式執行,其他區塊鏈特有的堆棧操作也由它實現。
因此,EVM在處理交易過程中具有本質上不穩定的機器狀態,同時它又具備全局或世界狀態以容納以太坊區塊鏈上的不同账戶信息。
以太坊上的所有操作均由EVM代碼管理,自2015年以太坊網絡推出以來,EVM代碼本身經歷了多次迭代,這也使得目前存在多種EVM實現工具。
EVM負責維護數千個以太坊節點和執行代碼之間的抽象層級,以及在不向客戶端或節點泄露過多細節的情況下起到傳送一致信息的作用。
以太坊虛擬機(EVM)的用途是什么?
EVM一直在爲以太坊上的所有應用提供可靠的動力。
對於开發人員來說,EVM是運行較小的可執行程序(在以太坊中稱爲智能合約)的首要程序,同時爲他們提供了用各種編程語言(如Solidity、Vyper、Python和Yul等)編寫這些智能合約的自由。
由於EVM提供的這種靈活性,以太坊區塊鏈在DeFi和NFT領域催生了數千個DApp。
每一個DApp和組成它們的智能合約都被轉換爲字節碼,這些字節碼被傳送至EVM並分布在以太坊網絡的所有節點中。
當部署智能合約時,EVM負責與所有節點聯系,並在達成共識後進行狀態更改。
可以說,正是因爲EVM,以太坊得以使用字節碼而非基本編程語言來執行智能合約,從而物理主機與以太坊運行的機器代碼可以被區分开來。
以太坊虛擬機(EVM)的好處
EVM的運作方式爲开發人員執行代碼掃清了一些顧慮——不會影響網絡的其他部分或影響托管在任意節點的數據或個人文件。
此外,开發人員可以在具有分布式共識的不同計算環境中運行復雜的智能合約。
這確保單個節點的故障不會對DApp或智能合約的整體運行產生任何負面影響,因爲所有節點上的EVM代碼都是相同的。
不僅如此,因爲账戶數據在EVM中維持着一種全局狀態,這爲开發人員創造了良好的條件以編寫自定義智能合約代碼和創建可以訪問全局數據集並產生可靠輸出的獨特DApp。
總體上來說,以太坊區塊鏈非常適合於DApp和智能合約的可持續擴展。
除了上述提到的,EVM還有可供开發人員選擇的標准代碼庫、越來越多與之兼容的第2層區塊鏈和大量潛在的EVM用例,這就是爲什么EVM是Web3开發的首選平台。
以太坊虛擬機(EVM)的缺點
但EVM並非十全十美,打算在以太坊上發展項目的开發人員和企業家也需要了解一下EVM的不足之處,比如高額交易費或者說Gas成本。
這些費用需要用戶通過ETH進行支付並且會根據智能合約的復雜性和當時網絡擁塞情況變化,這要求开發者和企業家必須對服務進行相應定價。
此外,Solidity是EVM上最受歡迎的編碼語言,這意味着开發人員需要有足夠的經驗和一定的技術專長,才能利用Solidity創建高效的智能合約。
這一點很重要,因爲任何額外的計算需求都將導致更高的Gsa成本,而這不利於項目的成功。
如果开發人員選擇使用其他語言進行編碼,那么他們需要認真解決代碼中的任何固有重復問題。
EVM的未來
EVM給區塊鏈生態系統帶來了革命性的變化,但許多區塊鏈項目也正在改進這種用於讀取和執行代碼的技術。
跨鏈互操作性對於开發人員來說是最重要的,許多與EVM兼容的區塊鏈已經發展起來了,其中大多數都提供了比以太坊更低的費用和更快的交易速度。
以太坊用戶可以直接與這些區塊鏈進行無縫交互,並通過跨鏈橋將以太坊上的資金轉移到這些區塊鏈。
還有必須提到的是,隨着在2022年9月完成合並,以太坊的下一個目標是完成從EVM到以太坊WebAssembly (eWASM)的範式轉變。
以太坊旨在將eWASM打造成一個高度模塊化並獨立於平台的虛擬指令集體系架構。
很多人將eWASM吹捧爲以太坊的下一個遊戲規則改變者,並認爲它可能爲其他區塊鏈所使用。
然而,eWASM到底能否取代EVM成爲最受信任的智能合約機制呢?這個問題,或許只有時間能回答。
聲明:web3中文編譯作品,內容僅代表作者立場,且不構成投資建議,請謹慎對待,如文章/素材有侵權,請聯系官方客服處理。
標題:Web3中文|什么是以太坊虛擬機(EVM) 它是如何工作的?
地址:https://www.coinsdeep.com/article/7808.html
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。