以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads
首頁 > SOL > Info

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

Author:

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

前言

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

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

存儲機制

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

變量類型

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

BCH將于今晚進行硬分叉升級并將支持智能合約:5月15日消息,Bitcoin Cash(BCH)將于北京時間今晚進行硬分叉升級,升級內容包括推出代幣發行功能CashTokens以及支持智能合約,允許開發者在 BCH 上開發 DApp。[2023/5/15 15:03:51]

值類型-valuetype

引用類型-referencetype

值類型

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

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

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

智能合約中的USDT供應百分比達到1個月高點:金色財經報道,據Glassnode數據顯示,智能合約中的美元 USDT供應百分比剛剛達到1個月高點 ,數值為20.617%。[2022/1/4 8:23:25]

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

地址類型(adress)160bits

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

balanceuint256(256bits)?

transfer()uint256(256bits)

引用類型

聲音 | 孫宇晨:愿在智能合約中支持TRC-10/20代幣及DPOS機制:孫宇晨發布推特稱,波場愿意為zk-SNARK做出努力,并在智能合約中支持TRC-10、TRC-20代幣和DPOS機制。12月17日消息,波場宣布即將進行匿名交易公測。[2019/12/18]

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

結構體(struct)

映射(mapping)

簡單分析

寫一個簡單值類型的合約

pragmasolidity^0

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

動態 | CyberCode Twins 將在奧克蘭舉行 EOS 智能合約研討會:據 IMEOS 報道,CyberCode Twins 發推宣布在 EOS 黑客馬拉松舊金山站前一天,也就是11 月 9 日將在美國奧克蘭舉行 EOS 智能合約研討會,旨在向參會者講解如何設置開發環境,EOS 智能合約,以及幫助以太坊token 遷移至 EOS 主網的 EOS21 協議。[2018/10/28]

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

變長數組

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:INTWORLOCKPINpoint幣叫什么WORMS價格blockchain錢包登錄不上pinksale幣前景

SOL
ETA:DAOrayaki|MetaCartel——一個由創建者和運營商構建去中心化應用的生態系統

DAOrayakiDAOResearchGrant:FundAddress:0xCd7da526f5C943126fa9E6f63b7774fA89E88d71VotingResult:DAOC.

1900/1/1 0:00:00
ITA:去中心化房地產融資平臺 CitaDAO 完成 100 萬美元融資,Sora Ventures、SNZ Capital 等參投

鏈聞消息,去中心化房地產融資平臺CitaDAO完成100萬美元融資,風險投資機構SoraVentures、SNZCapital、TurnCapital、OriginCapital及區塊鏈和DeF.

1900/1/1 0:00:00
KEX:BKEX Global 關于ETP專區“元宇宙中秋福利”活動結果的公告

尊敬的用戶:BKEXGlobal舉辦的ETP專區“元宇宙中秋福利”活動已于2021年9月26日23:59圓滿結束,感謝用戶的大力支持!活動獎勵將于活動結果公示后3個工作日內發放.

1900/1/1 0:00:00
KING:“AOFEX理財挖礦—Staking”超燃收益全民嗨領,最高年化26.3%

尊敬的用戶: 十月起航,燃情不止,收益無限。AOFEX現開啟第十期Staking“超燃收益全民嗨領,最高年化26.3%”,共開放九款質押產品,其中五款鎖倉質押產品,週期豐富,收益更高;四款長期開.

1900/1/1 0:00:00
DNA:中幣關于上線Perpetual Protocol(PERP)的公告

尊敬的中幣用戶: ????中幣將于香港時間2021年9月27日上線PerpetualProtocol.

1900/1/1 0:00:00
DEFI:DeFi 巨鯨 0xb1 地址背后團隊將推出新 DeFi 應用 Fodl Finance

鏈聞消息,DeFi巨鯨0xb1地址背后團隊「0xb1.484|四八四」宣布將在接下來幾周推出一個新的DeFi應用FodlFinance.

1900/1/1 0:00:00
ads