以太坊虛擬機(jī)EVM在設(shè)計上有什么特性?最先出現(xiàn)在己任區(qū)塊鏈。
]]>(1)基于棧+區(qū)分存儲類型:EVM是一種基于棧的虛擬機(jī),其對棧的大小不做限制,但限制棧調(diào)用深度為1024;使用256比特的機(jī)器碼,用于智能合約字節(jié)碼的執(zhí)行;同時,以太坊區(qū)分為臨時存儲和永久存儲,其臨時存儲(Memory)存在于EVM的每個實例中,而其永久存儲(Storage)則存在于區(qū)塊鏈狀態(tài)層。
(2)圖靈完備+Gas限制計算量:EVM是圖靈完備的。然而,圖靈完備則會導(dǎo)致一些問題,比如某些惡意節(jié)點(diǎn)可能上傳無限執(zhí)行的智能合約代碼從而達(dá)到消耗以太坊計算資源的目的。因此,EVM中引入了Gas的概念。以太坊節(jié)點(diǎn)在創(chuàng)建執(zhí)行智能合約代碼的消息時,需要支付一定量的Gas用于“購買”執(zhí)行智能合約所需的計算量。當(dāng)EVM執(zhí)行交易時,Gas將按照一定的規(guī)則逐漸被消耗,執(zhí)行完后剩余的Gas會返還至支付節(jié)點(diǎn)。若在執(zhí)行合約代碼的過程中Gas被消耗殆盡,則EVM會觸發(fā)異常,將當(dāng)前已執(zhí)行的相關(guān)合約代碼已進(jìn)行的狀態(tài)修改回滾,而不會將Gas回退給支付節(jié)點(diǎn)。Gas可以通過以太坊購買,類似于云計算中對提交任務(wù)所占用的計算資源進(jìn)行付費(fèi)的機(jī)制。
(3)環(huán)境隔離:EVM在節(jié)點(diǎn)上是一個隔離的環(huán)境,它保證了在其中執(zhí)行的所有智能合約代碼均不能影響以太坊節(jié)點(diǎn)中與以太坊EVM無關(guān)的狀態(tài),從而保證了運(yùn)行EVM的以太坊節(jié)點(diǎn)的安全性。
以太坊虛擬機(jī)EVM在設(shè)計上有什么特性?最先出現(xiàn)在己任區(qū)塊鏈。
]]>