前言
在以太坊上,我們可以通過部署智能合約來實現我們需要的功能,合約代碼中我們往往需要定義一些變量,這就涉及到了智能合約變量的存儲機制。這篇文章我們將根據solidity的所有的變量命名的類型來講解智能合約的存儲機制。存儲機制
每個在以太坊虛擬機中運行的智能合約的狀態都在鏈上永久地存儲著。這些值存儲在一個巨大的數組中,數組的長度為2^256,下標從零開始且每一個數組能夠儲存32字節(256個比特)長度的值。并且存儲是稀疏的,并沒有那么密集。變量類型
Solidity的數據變量類型分為兩類:值類型-valuetype引用類型-referencetype值類型布爾型(bool)2bit(0/1)整型(int/uint)根據關鍵字的不同表示不同長度,int8表示8bits有符號數定長浮點型(fixed/ufixed)Solidity還沒有完全支持定長浮點型。可以聲明定長浮點型的變量,但不能給它們賦值或把它們賦值給其他變量定長字節數組(byte/bytes)定義數組時定義長度地址類型(adress)160bits地址類型成員變量(balance,transfer....)balanceuint256(256bits)transfer()uint256(256bits)引用類型不定長字節數組類型(bytes/byte,string,uint....)結構體(struct)映射(mapping)簡單分析
Standard與Plasm達成合作,Standard將在Plasm上構建智能合約版本:據官方消息,波卡生態的混合式抵押彈性供應穩定幣協議Standard宣布與Plasm達成合作,Standard將在Plasm上構建智能合約版本,Standard將從其平行鏈向Plasm提供預言機信息,以生成虛擬股票和虛擬大宗商品等相關合成資產。[2021/5/25 22:42:05]
寫一個簡單值類型的合約pragmasolidity^0
優化存儲原則:如果下一個變量長度和上一個變量長度加起來不超過256bits,它們就會存儲在同一個插槽里。
總結
本篇文章詳細講解了智能合約的優化存儲原則,數組類型,字符串類型,結構體類型和映射類型的存儲機制。同時提供了基于python的計算代碼,用以驗證機制分析的正確性。當然,本文設計的智能合約設計并不復雜,在實際開發過程中遠比此復雜,需要經歷一些分析,在能找到正確的存儲位置。最后,希望通過本文章可以幫助大家進一步的了解智能合約。
圖片來源:網絡作者:ChenZou萊特幣一則被沃爾瑪采用的重磅新聞在周一炸醒了尚未從美國周末平靜中蘇醒的加密市場,萊特幣憑借這條新聞在不到1個小時的時間里從174美元暴漲至225美元.
1900/1/1 0:00:009月10日,Centrifuge聯合Odaily星球日報和PolkaWorld舉辦「星際巡航——與Centrifuge一起探索波卡DeFi新范式,暨Altair平行鏈競拍發布會」.
1900/1/1 0:00:00吳說作者|ColinWu本期編輯|ColinWu本周吳說簡評:正如央行最新表態,整治工作基本完成,進入“常態化監管”.
1900/1/1 0:00:00經Odaily星球日報不完全統計,9月6日-9月12日當周公布的海內外區塊鏈融資事件共27起,和一周前持平;已披露融資總額約2億美元,較上周呈下降趨勢.
1900/1/1 0:00:009月2日,Odaily星球日報聯合36kr、CryptoArt.AI、IdleMystic、網易區塊鏈、AnimocaBrands、DeHorizon、APENFT基金會、Torum等深度合作伙.
1900/1/1 0:00:00上月回顧 7月13日,由MixMarvel孵化和發行的GameFi鏈游DeHero正式上線,24小時內NFT交易量即位居BSC排行榜第2位。其后用戶數據持續增長,卡包銷售數據連創新高.
1900/1/1 0:00:00