比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads
首頁 > PEPE幣 > Info

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

Author:

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

前言

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

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

存儲機制

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

變量類型

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

銀聯商務與上海文交所合作積極探索數字資產智能合約交易模式:4月9日消息,近日銀聯商務股份有限公司與上海文化產權交易所股份有限公司(簡稱上海文交所)簽署戰略合作協議,銀聯商務正式接入“國家級版權交易保護聯盟鏈”,加入國家級數字文創規范治理生態矩陣。

雙方在數字人民幣領域的合作將持續強化“國家級版權交易保護聯盟鏈”的服務功能,同時將共同推動和強化行業規范治理,引導數字文創、數字藝術、數字版權、虛擬世界與現實交互產業合理有序發展。  

此次合作,雙方將充分發揮各自擅長的技術研發、渠道、資源等相關優勢,圍繞可追溯、實名性、透明公開的創新交易模式不斷探索優化,通過區塊鏈、智能合約等創新技術應用,共同打造穩定、合規、安全的數字資產交易環境,推動國家級數字文創規范治理生態矩陣內交易相關技術標準、安全規范的制定,為中國數字文化產業發展提供堅實保障。 

銀聯商務此次不僅將自主研發的區塊鏈平臺接入國家級版權交易保護聯盟鏈,積極探索數字資產智能合約交易模式,為數字資產交易提供不可篡改、安全可信的技術保障,還將為聯盟鏈賦予完備的全渠道綜合支付受理能力,提升結算效能,助力數字資產交易體系建設。[2022/4/9 14:15:01]

值類型-valuetype

智能合約錢包Argent Layer2版本正式上線zkSync:12月24日,智能合約錢包Argent宣布其Layer2版本正式上線zkSync,目前已與zkSync網絡內DEX平臺ZigZag完成集成,用戶現可通過1美元的固定費用使用Argent在Layer2上的交易服務。該服務目前僅支持ETH、USDT、USDC、WBTC、DAI和FRAX。[2021/12/24 8:02:18]

引用類型-referencetype

值類型

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

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

智能合約平臺Matic Network推出LINK喂價工具:智能合約平臺Matic Network 19日宣布,將全面推出五種LINK喂價工具(Price Feeds):Matic /USD、USDC/USD、ETH/USD、USDT/USD和DAI/USD。雖然在以太坊之外有很多Chainlink集成,但其中大多數仍在開發中或間接使用以太坊feed。(Cointelegraph)[2020/11/19 21:24:19]

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

庫幣安全事件更新:AKRO已暫停代幣轉賬,將升級智能合約:Akropolis于推特上表示,針對此次庫幣熱錢包異常轉賬事件涉及的AKRO代幣,Akropolis已對黑客地址進行封鎖,并全面暫停AKRO代幣轉賬,將對智能合約進行升級。[2020/9/28]

定長字節數組(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:WORUSDINTPINMOOI Networkusdm幣能換人民幣嗎cointiger官網下載最新版本ALPINE價格

PEPE幣
NBS:【注冊認證送】約好友共享價值15萬U - FTM、SOL、AVAX、NEAR、AR、DOGE代幣大禮包

親愛的用戶: ????十一黃金周將至,ZT將對平臺新注冊認證用戶及參與邀請認證活動用戶進行總計價值15萬U代幣大禮包空投獎勵.

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

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

1900/1/1 0:00:00
GATE:Gate.io動態互動樂不停 周邊、限時點卡、代幣等你拿活動結束公告

本月動態互動活動:Gate.io動態互動樂不停周邊、限時點卡、代幣等你拿已經圓滿結束,感謝所有用戶對本次活動的積極參與和支持,本次活動中獎名單如下:以上所有中獎用戶獲得周邊獎勵后續將陸續發出.

1900/1/1 0:00:00
虛擬資產:一文深入了解將比特幣合法化后的烏克蘭現狀

原文來源|BitcoinMagazine 編譯整理|白澤研究院 2021年9月10日,烏克蘭將比特幣合法化,明確了比特幣在該國是合法資產.

1900/1/1 0:00:00
加密貨幣:新禁令無死角監管,中國「去幣圈化」已成長久趨勢

9月24日,中國人民銀行等十部委聯合發布《關于進一步防范和處置虛擬貨幣交易炒作風險的通知》,其中再次重申虛擬貨幣不具有法償性.

1900/1/1 0:00:00
USDT:【理幣開啟】USDT、SRM、RAY、CELO、FTM、SOL、NEAR、AVAX、DYDX 理幣上線

親愛的用戶: ????ZT理幣寶于2021年9月28日20:00-2021年10月1日00:00陸續開放USDT、SRM、RAY、CELO、FTM、SOL、NEAR、AVAX、DYDX理幣活動.

1900/1/1 0:00:00
ads