為了理解Ewasm及其對以太坊網絡的影響,我們必須首先熟悉其將替代的以太坊虛擬機(EVM )。EVM是一個輕量級的虛擬機,其設計是用于在以太坊網絡上運行智能合約。作為虛擬機,EVM的功能與傳統的操作系統(如Windows)稍有不同。一般來說,虛擬機(VM)是建立在本機操作系統上模擬物理機的高級抽象。它們允許同一平臺,在許多不同的硬件體系結構和操作系統上運行,這使得虛擬機(VM)非常適合像以太坊這樣的分布式網絡。EVM的構建是為了模擬可由物理CPU執行的操作,其還負責以太坊的許多關鍵功能。
而EVM除了作為一個虛擬機,它也是一個“堆棧機”和一個“狀態機”(我知道,它有很多形容詞,請原諒)。狀態機只是一臺可以讀取輸入并基于這些輸入轉換為新狀態的機器。而基于堆棧的虛擬機是將內存結構組織為堆棧并作為堆棧訪問的虛擬機。這與基于寄存器的虛擬機相反,其內存結構存儲在CPU的寄存器中。為了在基于堆棧的虛擬機上執行操作,稱為“操作數”(operand)的數據從堆棧中“彈出”,通過接受操作進行處理,然后根據后進先出(LIFO)的原則“推送”回堆棧。使用基于堆棧的機器進行添加的工作方式如下:
- POP 20
- POP 7
- ADD 20, 7, result
- PUSH result

https://markfaction.wordpress.com/2012/07/15/stack-based-vs-register-based-virtual-machine-architecture-and-the-dalvik-vm
使用堆棧系統的一個主要優點是,EVM不需要顯式地知道它正在處理的操作數的地址,因為調用堆棧指針(SP)總是會提供下一個操作數,這有助于EVM提高效率并降低存儲需求。
除了堆棧之外,EVM還可以將數據存儲到內存(RAM)和磁盤存儲。將數據發送到磁盤存儲器需要的gas最多,而發送到堆棧需要的gas最少。EVM根據其預期用途和預期的gas成本決定將某些數據發送到何處。在宏觀層面上,EVM由世界狀態(world state)、機器狀態和虛擬ROM組成。世界狀態是網絡上所有帳戶的存儲,而機器狀態包括程序計數器、可用gas、堆棧和內存。虛擬只讀存儲器(ROM)是不可變的“EVM字節碼”,這是一種只有EVM才能理解的特殊語言。理解字節碼及其與諸如solidity等高級語言的關系是非常重要的,以便充分掌握EVM的功能。從網絡創世開始,以太坊開發者就用Solidity編程語言編寫了代碼,Solidity是一種“高級”編程語言,這意味著盡管開發者可以理解Solidity,但機器卻不能理解。為了讓計算機理解Solidity代碼,它必須使用名為solc的solidity編譯器編譯。編譯器會將solidity轉換為字節碼,字節碼是solidity操作碼的二進制表示形式。EVM將所有值視為二進制,而無法理解其他任何值,因此編譯器的存在是非常重要的,其允許開發人員的表達能夠被EVM理解。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。