時間:2023-06-17|瀏覽:278
虛擬機是什么?
Scry分享
這個圖是以太坊的智能合約的部署和調用結構,EVM就是虛擬機。
簡單來說,以太坊虛擬機是建立在以太坊區塊鏈上的一個代碼運行環境。虛擬機本身并沒有存儲在區塊鏈內,而是和區塊鏈一樣同時存儲于各個節點計算機上。每個參與以太坊網絡中的校驗節點都會運行虛擬機,并將其并存儲相同的數據,以確保將最權威(最真實)的結果記錄在區塊鏈內。
以太坊虛擬機是一個圖靈完備的256位虛擬機。這意味著以太坊虛擬機可以進行任何種類的計算。但為了防止惡意用戶設計無限循環代碼,使虛擬機的運行癱瘓,以太坊虛擬機中執行的代碼嚴格受到一個參數的制約,這個參數就是Gas。這規定了可運行的計算指令的數量上限,以避免產生無限循環(無限循環最終會因 Gas 耗盡而中止)。
以太坊虛擬機的構架實際上是一個簡單的堆棧式結構,每個堆棧項目為256位。即虛擬機的位寬為256位,其目的是使之能夠方便地應用于256位的Keccak散列算法和橢圓曲線計算。堆棧的存儲(storage)是一個基于字段地址的數組,其最大包含1024個元素。此外,虛擬機還包含一個獨立的基于字段地址的內存,但不同于普通的內存模型,這個獨立的內存是一個非易失性內存(non-volatile memory)。即,當虛擬機不運行時,其所存儲的數據不會丟失。該內存中的記錄作為整個以太坊系統狀態記錄的一部分。虛擬機的存儲和內存在初始時都被設置為0。