您好,登錄后才能下訂單哦!
當調用solidity函數(shù)時,都會在以太坊虛擬機當中來執(zhí)行。因此了解以太坊虛擬機的細節(jié),了解其數(shù)據(jù)的存儲機制變得尤為重要。
以太坊虛擬機中的空間分為3大部分。分別為storage、stack與memory。 storage空間非常特殊,其值會被礦工提交到區(qū)塊鏈上,改變區(qū)塊鏈的狀態(tài)。
下面我們將分析下面例子中,每一個變量所在以太坊evm中的位置。
下面的例子中,在運行合約中的代碼時,變量a會存儲在以太坊evm的storage空間中。其實所有的狀態(tài)變量都會存儲在storage空間中。
add函數(shù)中的函數(shù)參數(shù)num存儲在memory空間中。
在函數(shù)中定義的變量,如在test函數(shù)中的i、j都存儲在stack空間中。
當調用cahngeIt函數(shù)時,會修改storage空間中的a值。
當調用add函數(shù)時,會將memory空間中的num值加1.
當調用test方法時,會在stack中開辟空間i、j。i賦值為2. j賦值為add函數(shù)的返回值3.
1 | contract storageAndMemory{ |
1 | 狀態(tài)變量總是存在于storage中 |
本文鏈接: https://dreamerjonson.com/2018/11/22/solidity-37-evm-datastorage/
版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY 4.0 CN協(xié)議 許可協(xié)議。轉載請注明出處!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。