以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads
首頁 > Gateio > Info

智能合約變量儲存機制詳解_WOR:BYTE

Author:

Time:1900/1/1 0:00:00

前言

在以太坊上,我們可以通過部署智能合約來實現我們需要的功能,合約代碼中我們往往需要定義一些變量,這就涉及到了智能合約變量的存儲機制。

這篇文章我們將根據solidity的所有的變量命名的類型來講解智能合約的存儲機制。

存儲機制

每個在以太坊虛擬機中運行的智能合約的狀態都在鏈上永久地存儲著。這些值存儲在一個巨大的數組中,數組的長度為2^256,下標從零開始且每一個數組能夠儲存32字節(256個比特)長度的值。并且存儲是稀疏的,并沒有那么密集。

變量類型

Solidity的數據變量類型分為兩類:

Mina Protocol計劃將ZK智能合約引入主網:金色財經報道,Mina Protocol在社交媒體宣布該協議將迎來重大升級,計劃將ZK智能合約引入主網,旨在大幅增加使用Mina構建的社區活動和產品。

升級的主要特點包括:使用o1js更輕松地實現zkApp可編程性;新的證明系統Kimchi增強安全性和效率;取消超額獎勵,在主網早期階段增加質押采用的臨時激勵措施。

Testworld Mission 2.0.正在進行升級準備工作。[2023/9/9 13:27:52]

值類型-valuetype

引用類型-referencetype

神話起源CEO談毅:以太坊GAS和速度以及智能合約是未來突破的方向:金色財經現場報道,在8月8日由金色財經主辦的金色沙龍活動中,神話起源CEO談毅在主題《哪些Web3敘事將引領下輪牛市》的圓桌會議中表示,以太坊有三個大家可以關注的點,以及存在的核心價值。一個是GAS,一個是速度,一個是智能合約,這是以太坊做這么大的核心。換句話說,未來的突破也在這三個方向上。

以GAS和速度為例,一個是2.0的升級,今年下半年能不能如期推出,推出以后的效果,能不能像人們預期的那樣。這有可能是一下子給加密資產帶來一個新的臺階。做L2的團隊,也在L2層面上解決這個問題,一個是速度,一個是GAS。第三個是智能合約,以太坊就是行業標準。它從NFT開始,ERC-721以后,還有EIP-1159,今年好像也有新的智能合約的協議會提交出來做審核。所以如果從這三個點上突破的話,以太坊的價值和生態能進一步的擴大和提升。尤其是智能合約。今年可以看到有很多創新想法,隨著NFT往下發展,在用新的智能合約做,這都是以太坊可以關注的點。

此外,他還表示,游戲資產能天然跟區塊鏈做融合,既符合有非常大的資產價格波動性,又是可觸及的。通過可觸及的方式,讓更多的圈外人進來。[2023/8/8 21:32:31]

值類型

波卡生態智能合約平臺Moonbeam Network已集成Chainlink喂價:6月15日消息,波卡生態智能合約平臺Moonbeam Network已集成Chainlink喂價,如DOT價格等。Moonbeam開發者可以通過Moonbeam的開發者文檔在Polkadot上開始使用Chainlink喂價服務,從而構建DeFi和其他用例。(CoinDesk)[2022/6/15 4:29:43]

布爾型(bool)2bit(0/1)

整型(int/uint)根據關鍵字的不同表示不同長度,int8表示8bits有符號數

定長浮點型(fixed/ufixed)Solidity還沒有完全支持定長浮點型。可以聲明定長浮點型的變量,但不能給它們賦值或把它們賦值給其他變量

MerchDAO公布MRCH代幣智能合約地址,今晚將上線Uniswap:MerchDAO公布MRCH代幣智能合約,地址為0xbed4ab0019ff361d83ddeb74883dac8a70f5ea1e。根據官方此前公布的推文,北京時間3月27日20點開啟Poolz IDO,21:30將上線Uniswap。

根據官網介紹,MerchDAO利用去中心化治理和NFT技術,為用戶的稀有和獨特物品提供市場。[2021/3/27 19:23:07]

定長字節數組(byte/bytes)定義數組時定義長度

地址類型(adress)160bits

地址類型成員變量(balance,transfer....)?

balanceuint256(256bits)?

transfer()uint256(256bits)

引用類型

不定長字節數組類型(bytes/byte,string,uint....)

結構體(struct)

映射(mapping)

簡單分析

寫一個簡單值類型的合約

pragmasolidity^0

可以看到雖然規定了了長度為5,但是實際上只用了4個,所以就只是用了四個bytes8的空間。

是不是可以加一個,編譯器會報錯。

變長數組

pragmasolidity^0

functionunlock(bytes32_password)public{?if(password==_password){??locked=false;?}}}

定義為私有變量只能組織其他合約訪問,但是無法阻止公開訪問

按照其代碼,可以知道password的存儲位置是1

web3.eth.getStorageAt(contract.address,1)

直接使用

contract.unlock("Averystrongsecretpassword:)")//密碼錯誤

contract.unlock(web3.utils.hexToBytes('0x412076657279207374726f6e67207365637265742070617373776f7264203a29'))

題目二--LockBox

pragmasolidity0.4.24;import"../CtfFramework.sol";contractLockbox1isCtfFramework{?uint256privatepin;?constructor(address_ctfLauncher,address_player)publicpayable???CtfFramework(_ctfLauncher,_player)?{???pin=now000;?}??functionunlock(uint256_pin)externalctf{???require(pin==_pin,"IncorrectPIN");???msg.sender.transfer(address(this).balance);?}}

讀取私有變量

constructor只在構造的時候執行一次

總結

本篇文章詳細講解了智能合約的優化存儲原則,數組類型,字符串類型,結構體類型和映射類型的存儲機制。同時提供了基于python的計算代碼,用以驗證機制分析的正確性。

當然,本文設計的智能合約設計并不復雜,在實際開發過程中遠比此復雜,需要經歷一些分析,在能找到正確的存儲位置。最后,希望通過本文章可以幫助大家進一步的了解智能合約。

Tags:WOR以太坊INTBYTEMorpheus.Network以太坊幣價格今日行情價格Bali Social IntegratedGBYTE幣

Gateio
Gate.io 已開啟HMT/USDT、HMT/ETH新版流動性礦池獎勵(自動做市商AMM模式),各新增額外限時獎勵5,335 HMT_GATE:gate.io官網下載蘋果手機

HMT/USDT、HMT/ETH新版流動性礦池模式)已正式上線,交易市場50%手續費收益將新增投入到流動獎金池中;Taker和Maker手續費即日起調整至0.3%.

1900/1/1 0:00:00
ZBG關于部分幣種恢復充提幣的公告_XBT:WXBTC

公告編號2021092801各位關心ZBG的投資者們和項目方:ZBG平臺現已恢復HT(HECO),DOG,MDX的充提幣.

1900/1/1 0:00:00
報告:中歐、北歐和西歐地區在過去一年已成為全球最大加密經濟體_加密貨幣:數字貨幣和加密貨幣的區別和聯系

本文來自?Decrypt,原文作者:LiamFrostOdaily星球日報譯者?|念銀思唐 摘要: -據Chainlaysis稱,中歐、北歐和西歐地區在過去一年已經成為全球最大的加密經濟體.

1900/1/1 0:00:00
XT關于暫停 FTM充提的公告_TPS:COM

尊敬的XT用戶: FTM錢包升級維護,XT現已暫停FTM充值與提現業務。暫停期間給您帶來的不便,請您諒解。感謝您對XT.COM的支持與信任.

1900/1/1 0:00:00
關于逐步有序清退中國大陸地區存量用戶的公告_Kucoin:kucoinpro介紹

親愛的KuCoin用戶,?自2017年成立以來,KuCoin始終遵守各國法律法規,堅持合規經營.

1900/1/1 0:00:00
失主在 imtoken 發生事件 以被盜金額 30% 懸賞_NFT:etha幣最新動態

吳說區塊鏈獲悉,北京時間9月25日下午3點,Imtoken錢包發生盜幣事件。969.48個ETH與46527個USDT被轉入一個ERC20地址,截至9月29日晚上11點還未被轉出.

1900/1/1 0:00:00
ads