您好,登錄后才能下訂單哦!
當調用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協議 許可協議。轉載請注明出處!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。