什麼是以太坊虛擬機(EVM) 它是如何工作的?

以太坊已成為僅次於比特幣的第二重要區塊鏈。以太坊能發展得這麼好,它的原生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成為最受信任的智能合約機制呢?這個問題,或許只有時間能回答。

Total
0
Shares
Related Posts