前言
在以太坊上,我們可以通過部署智能合約來實現我們需要的功能,合約代碼中我們往往需要定義一些變量,這就涉及到了智能合約變量的存儲機制。這篇文章我們將根據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)簡單分析
Vitalik Buterin:基于MPC的EOA錢包有根本缺陷,智能合約錢包是唯一選擇:6月29日消息,以太坊創始Vitalik Buterin發推回應如何看待基于MPC(EOA)的錢包與智能合約錢包的優缺點時表示,基于MPC的EOA錢包存在根本缺陷,因為它們無法撤銷密鑰(重新共享不算在內;舊持有者仍然可以恢復密鑰),智能合約錢包是唯一的選擇。[2023/6/29 22:07:37]
寫一個簡單值類型的合約pragmasolidity^0
優化存儲原則:如果下一個變量長度和上一個變量長度加起來不超過256bits,它們就會存儲在同一個插槽里。
總結
本篇文章詳細講解了智能合約的優化存儲原則,數組類型,字符串類型,結構體類型和映射類型的存儲機制。同時提供了基于python的計算代碼,用以驗證機制分析的正確性。當然,本文設計的智能合約設計并不復雜,在實際開發過程中遠比此復雜,需要經歷一些分析,在能找到正確的存儲位置。最后,希望通過本文章可以幫助大家進一步的了解智能合約。
Tags:BITINTITSBITSbitkeeporg錢包app下載int幣最新消息bitstamp交易平臺凍結賬號bitstamp交易所怎么樣
為了讓全球用戶更好地了解基于Flow的前沿技術,身臨其境地感受數字生活的魅力,從10月15日起,Flow官方策劃了為期1個半月的FlowFest虛擬生態狂歡節,從收藏品到游戲.
1900/1/1 0:00:00GameFi持續火爆,新老玩家正加速涌入。據DappRadar統計,鏈游玩家數量在9月6日超過66萬,近半年增幅超1120%。 近半年鏈游玩家數量統計與此同時,越來越多的資金正流入這一賽道.
1900/1/1 0:00:00上一期結合8月Liquid和Bilaxy兩個交易所熱錢包被攻擊事件,艾貝鏈動CTONeilson主要分析了金融級安全芯片軟硬件設計如何保護機構錢包私鑰的全生命周期安全.
1900/1/1 0:00:00分析師|Carol編輯|Tong出品|PANews如果縱觀DeFi的發展,可以看到一條較為清晰的路徑。DeFi從去年下半年開始,在流動性挖礦的激勵下,率先在以太坊上爆發.
1900/1/1 0:00:00本報告中,我們將分析資金是如何進入區塊鏈行業以及進入后遵循的路徑,我們將選取市值排名前四的加密貨幣進行分析,分別是比特幣、以太坊、USDT、ADA.
1900/1/1 0:00:00圖片來源:網絡作者:ChenZou萊特幣一則被沃爾瑪采用的重磅新聞在周一炸醒了尚未從美國周末平靜中蘇醒的加密市場,萊特幣憑借這條新聞在不到1個小時的時間里從174美元暴漲至225美元.
1900/1/1 0:00:00