91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

solidity智能合約[37]-以太坊虛擬機數據存儲

發布時間:2020-07-19 21:37:41 來源:網絡 閱讀:368 作者:jonson_jackson 欄目:開發技術

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
contract storageAndMemory{

   uint  a = 5;

   function changeIt() public {
       a  = 1000;
   }

   function add(uint num) public  returns(uint){
       num = num +1;
       return num;
   }

   function test() public   returns(uint,uint){
        uint i  = 2;
        uint j = add(i);
        return(i,j);
   }

}

總結

1
2
3
4
5
6
7
狀態變量總是存在于storage中

函數的參數默認在memory中

函數中的本地變量默認是在stack中

storage與memory都需要消耗gas,但是storage更貴
  • 本文鏈接: https://dreamerjonson.com/2018/11/22/solidity-37-evm-datastorage/

  • 版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY 4.0 CN協議 許可協議。轉載請注明出處!

solidity智能合約[37]-以太坊虛擬機數據存儲

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

木兰县| 朝阳市| 加查县| 阿克苏市| 攀枝花市| 团风县| 拜城县| 方正县| 内黄县| 广水市| 彝良县| 甘谷县| 巨鹿县| 西峡县| 麻城市| 喜德县| 共和县| 大理市| 阿坝县| 习水县| 清新县| 朝阳市| 泸西县| 邵东县| 白沙| 米易县| 溧阳市| 新营市| 德保县| 阜南县| 密云县| 德庆县| 麻栗坡县| 乐清市| 自治县| 内黄县| 永寿县| 江阴市| 涡阳县| 饶平县| 大足县|