solidity智慧合約[37]-以太坊虛擬機器資料儲存
阿新 • • 發佈:2018-11-25
EVM
當呼叫solidity函式時,都會在以太坊虛擬機器當中來執行。因此瞭解以太坊虛擬機器的細節,瞭解其資料的儲存機制變得尤為重要。
以太坊虛擬機器中的空間分為3大部分。分別為storage、stack與memory。 storage空間非常特殊,其值會被礦工提交到區塊鏈上,改變區塊鏈的狀態。
下面我們將分析下面例子中,每一個變數所在以太坊evm中的位置。
下面的例子中,在執行合約中的程式碼時,變數a會儲存在以太坊evm的storage空間中。其實所有的狀態變數都會儲存在storage空間中。
add函式中的函式引數num儲存在memory空間中。
在函式中定義的變數,如在test函式中的i、j都儲存在stack空間中。
當呼叫cahngeIt函式時,會修改storage空間中的a值。
當呼叫add函式時,會將memory空間中的num值加1.
當呼叫test方法時,會在stack中開闢空間i、j。i賦值為2. j賦值為add函式的返回值3.
1 |
contract storageAndMemory{ |
總結
1 |
狀態變數總是存在於storage中 |
本文連結: https://dreamerjonson.com/2018/11/22/solidity-37-evm-datastorage/
版權宣告: 本部落格所有文章除特別宣告外,均採用 CC BY 4.0 CN協議 許可協議。轉載請註明出處!