首頁(yè) ? 以太坊虛擬機(jī)EVM在設(shè)計(jì)上有什么特性?
By Published On: 16 9 月, 2022Categories: 區(qū)塊鏈Tags:

EVM在設(shè)計(jì)上具有如下的特性。

(1)基于棧+區(qū)分存儲(chǔ)類型:EVM是一種基于棧的虛擬機(jī),其對(duì)棧的大小不做限制,但限制棧調(diào)用深度為1024;使用256比特的機(jī)器碼,用于智能合約字節(jié)碼的執(zhí)行;同時(shí),以太坊區(qū)分為臨時(shí)存儲(chǔ)和永久存儲(chǔ),其臨時(shí)存儲(chǔ)(Memory)存在于EVM的每個(gè)實(shí)例中,而其永久存儲(chǔ)(Storage)則存在于區(qū)塊鏈狀態(tài)層。

(2)圖靈完備+Gas限制計(jì)算量:EVM是圖靈完備的。然而,圖靈完備則會(huì)導(dǎo)致一些問題,比如某些惡意節(jié)點(diǎn)可能上傳無(wú)限執(zhí)行的智能合約代碼從而達(dá)到消耗以太坊計(jì)算資源的目的。因此,EVM中引入了Gas的概念。以太坊節(jié)點(diǎn)在創(chuàng)建執(zhí)行智能合約代碼的消息時(shí),需要支付一定量的Gas用于“購(gòu)買”執(zhí)行智能合約所需的計(jì)算量。當(dāng)EVM執(zhí)行交易時(shí),Gas將按照一定的規(guī)則逐漸被消耗,執(zhí)行完后剩余的Gas會(huì)返還至支付節(jié)點(diǎn)。若在執(zhí)行合約代碼的過程中Gas被消耗殆盡,則EVM會(huì)觸發(fā)異常,將當(dāng)前已執(zhí)行的相關(guān)合約代碼已進(jìn)行的狀態(tài)修改回滾,而不會(huì)將Gas回退給支付節(jié)點(diǎn)。Gas可以通過以太坊購(gòu)買,類似于云計(jì)算中對(duì)提交任務(wù)所占用的計(jì)算資源進(jìn)行付費(fèi)的機(jī)制。

(3)環(huán)境隔離:EVM在節(jié)點(diǎn)上是一個(gè)隔離的環(huán)境,它保證了在其中執(zhí)行的所有智能合約代碼均不能影響以太坊節(jié)點(diǎn)中與以太坊EVM無(wú)關(guān)的狀態(tài),從而保證了運(yùn)行EVM的以太坊節(jié)點(diǎn)的安全性。