區塊鏈知識分享——虛擬機(1)

區塊鏈知識分享——虛擬機(1)

scry無域

虛擬機是什麼?

區塊鏈知識分享——虛擬機(1)

scry分享

這個圖是以太坊的智能合約的部署和調用結構,EVM 就是虛擬機。

簡單來說,以太坊虛擬機是建立在以太坊區塊鏈上的一個代碼運行環境,但虛擬機本身並沒有存儲在區塊鏈內,而是和區塊鏈一樣同時存儲於各個節點計算機上。每個參與以太坊網絡中的校驗節點都會運行虛擬機,並將其作為區塊有效性校驗協議的一部分。每個節點都會對合約的部署和調用進行相同的計算,並存儲相同的數據,以確保將最權威(最真實)的結果記錄在區塊鏈內。

以太坊虛擬機是一個圖靈完備的 256 位虛擬機,這說明以太坊虛擬機可以進行任何種類的計算。但為了防止惡意用戶設計無限循環代碼使虛擬機的運行癱瘓,以太坊虛擬機中執行的代碼嚴格受到一個參數的制約,這個參數就是 Gas。這規定了可運行的計算指令的數量上限,從而不會產生無限循環(無限循環最終會因耗盡 Gas 而中止)。

以太坊虛擬機的構架實際上是一個簡單的堆棧式結構,每個堆棧項目為 256 位,即虛擬機的位寬為 256 位,其目的是使之能夠方便地應用於256位的Keccak散列算法和橢圓曲線計算。堆棧的存儲(storage)是一個基於字段地址的數組,其最大包含 1024 個元素。此外,虛擬機還包含一個獨立的基於字段地址的內存,但不同於普通的內存模型,這個獨立的內存是一個非易失性內存(non-volatile memory),即當虛擬機不運行時,其所存儲的數據不會丟失。該內存中的記錄作為整個以太坊系統狀態記錄的一部分。虛擬機的存儲和內存在初始時都被設置為 0。


分享到:


相關文章: