以太幣 (ETH) 是市值第二大的加密貨幣,因其原生 ETH 代幣而受到加密貨幣投資者的青睞。然而,其原生 Solidity 編程語言和以太坊虛擬機 (EVM) 是其受到開發者社區推崇的關鍵。事實上,以太坊區塊鏈憑藉其靈活性、廣泛的可用開發工具和平臺龐大的用戶羣,繼續吸引着去中心化應用程序 (DApp) 開發者。

EVM 是區塊鏈架構的核心,它是執行應用程序代碼或智能合約的程序,爲它們提供在以太坊網絡之上運行的運行時環境。此外,EVM 是圖靈完備的,因此可以運行用任何編程語言編寫的任何程序,從而允許開發人員輕鬆爲蓬勃發展的 Web3 空間創建自定義智能合約和 DApp。

除了這些重要功能之外,EVM 還可以訪問網絡中的所有節點,處理智能合約的執行並有效處理以太坊區塊鏈上的所有交易,使其成爲當今最強大的虛擬機之一。

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

以太坊網絡由程序員 Vitalik Buterin 於 2013 年構思,它作爲 DApp 開發者首選的區塊鏈取得了巨大成功,這要歸功於 Gavin Wood 在以太坊任職期間設計的以太坊虛擬機 (EVM)。EVM 用 C++ 編寫並使用 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。

結果的神聖性使得 EVM 和以太坊區塊鏈總體上非常適合 DApps 和智能合約以太坊生態系統的可持續擴展。此外,還有可供開發人員選擇的標準代碼庫、越來越多的與 EVM 兼容的 Layer-2 區塊鏈以及大量潛在的 EVM 用例,不難看出爲什麼 EVM 是 Web3 開發的首選平臺。

以太坊虛擬機(EVM)的缺點

儘管 EVM 具有諸多優勢,但在以太坊上進行開發的開發者和企業家需要考慮一些缺點。其中最重要的是在以太坊網絡上運行智能合約所產生的高額交易費或 gas 成本。

這些費用以 ETH 支付,取決於合約的複雜性和執行時的網絡擁塞程度,因此開發人員和企業家必須對其服務進行相應的定價。此外,由於 Solidity 是 EVM 上最受歡迎的編碼語言,這意味着開發人員需要有足夠的經驗並具備一定的技術專長才能使用它來創建高效的智能合約。

後者很重要,因爲任何額外的計算要求都會導致更高的 gas 成本,並最終對項目的成功產生不利影響。如果開發人員選擇使用其他語言編寫代碼,他們需要小心解決代碼中任何固有的重複問題,因爲 EVM 無論如何都會繼續編譯它們。雖然可以在後期升級智能合約,但創建引用原始智能合約地址的中間智能合約會帶來安全風險。

EVM 的未來

儘管 EVM 給區塊鏈生態系統帶來了革命性的變化,但許多區塊鏈項目正在改進這種讀取和執行代碼的技術。

由於跨鏈互操作性是開發人員最看重的方面,許多兼容 EVM 的區塊鏈應運而生,其中大多數提供比以太坊協議更低的 gas 和更快的交易速度。因此,這些區塊鏈現在能夠與以太坊用戶無縫交互,並使用區塊鏈橋將資金轉移到自己的網絡。

然而,隨着以太坊協議於 2022 年 9 月成功完成合並,下一個目標是從 EVM 轉向以太坊 WebAssembly (eWASM)。eWASM 被設計爲高度模塊化和獨立於平臺,被譽爲以太坊協議的下一個遊戲規則改變者,並可能激勵其他區塊鏈也爲智能合約採用這種運行時環境。然而,eWASM 是否會取代 EVM 成爲最值得信賴的智能合約機制,這個問題只有時間才能回答。