來源:區塊鏈研究實驗室
以太坊存儲機制
在EVM中允許執行智能合約代碼。合約狀態或內存存儲在智能合約地址中。可以將這種存儲視為位于智能合約地址的無限長度的數據結構數組。存儲機制確保存儲位置沒有沖突,并遵循一組規則。使用這些規則,我們可以解碼任何合約的狀態。解碼存儲在映射中的數據需要知道所使用的密鑰。合約數據的解碼使用RPC調用eth_getStorageAt進行。
插槽位置
變量在智能合約的存儲陣列中的位置由代碼中出現的順序以及變量的大小決定。此位置稱為插槽。如果一個變量小于256位,則EVM會嘗試在空間中容納一個以上的變量,因此一個以上的變量可能會占用存儲陣列中單個插槽的空間。映射或數組將始終占據一個插槽。數組和映射元素的位置遵循一組特殊的哈希規則,本文將對此進行介紹,這些規則在以太坊文檔中也有描述。
Compound III已部署 Arbitrum,支持ARB、GMX、WETH和WBTC作為抵押品:5月16日消息,Compound III現已部署至Arbitrum上,允許使用ARB、GMX、WETH和WBTC作為抵押品借入USDC。[2023/5/16 15:05:21]
下表提供了EVM遵循的分配規則的摘要。我們將看兩個智能合約的示例,并使用表1中提供的規則對其進行解碼
在SEC調查Yuga Labs的消息后,MAYC NFT交易量飆升超過300%:金色財經報道,Yuga Labs 的 NFT 系列 Mutant Ape Yacht Club (MAYC) 和 Bored Ape Yacht Club (BAYC) 的交易量在過去 24 小時內飆升。數據顯示,MAYC NFT的交易量為102萬美元,不同交易所的交易量增長超過 300%?。BAYC 也出現了類似的趨勢,日交易量增長86%,達到180萬美元。
The Block Research 的研究分析師 Thomas Bialek 表示,?在美國證券交易委員會調查 Yuga Labs 的消息傳出后,這些收藏品的數量激增可能表明出現恐慌性拋售。[2022/10/13 10:32:58]
256位變量的簡單示例
德國外長:歐盟將對俄羅斯提出第8輪制裁方案:9月1日消息,自俄烏沖突發生以來,歐盟已經對俄羅斯實施了7輪制裁措施。當地時間8月31日,德國聯邦外交部長貝爾伯克表示,歐盟正在就第8輪制裁方案進行磋商,俄羅斯石油出口可能成為制裁的重點。貝爾伯克當天在布拉格舉行的歐盟外長會議上透露稱,德國政府正努力推動對俄羅斯實施第8輪制裁措施,并已就此向歐盟提出了建議。雖然貝爾伯克沒有透露具體制裁的內容,但她強調,能夠長期維持對俄羅斯的制裁非常重要。(央視新聞)[2022/9/1 13:00:54]
首先讓我們看一個簡單示例,所有變量都是256bit。這樣做使我們無需考慮可變變量即可查看分配。
美國眾議員:XRP是一種證券,相信SEC將贏得Ripple訴訟案:7月21日消息,美國眾議員Brad Sherman在接受FOX Business采訪時表示,他有信心美國證券交易委員會(SEC)將贏得針對Ripple的訴訟,因為XRP是一種證券。他補充說,他一直在與SEC主席Gary Gensler和SEC執法部門主管Gurbir Grewal聯系,以將Ripple訴訟范圍擴大到包括促進XRP交易的交易所。
據此前報道,在國會聽證會上,美國眾議員Brad Sherman敦促美國證券交易委員會“追查”進行XRP交易的加密貨幣交易所,并推動對加密貨幣交易所采取更多法律行動。(The Crypto Basic)[2022/7/21 2:28:45]
請注意,當對數字應用keccack哈希時,數字必須是0填充的64位值。
所有解碼都是使用以太坊RPC調用eth_getStorageAt執行的,在本文中將其表示為GetStorageAt。可以使用任何語言打包程序來調用此RPCapi。
下圖顯示了如何對智能合約的地址和傳遞給它的位置值進行GetStorageAt調用。圖1左側的數字是變量的位置。對于基類型,可以將此位置傳遞到GetStorageAt以獲取變量值。對于數組,位置將返回數組的長度。
通過將Keccack哈希傳遞給索引為0的GetStorageAt來解碼數組索引。數組的每個后續索引位于與位置求和的哈希值處。可以認為這是訪問數組的指針并增加其位置以查找每個元素,類似于C或C++。
傳遞給每個鍵的GetStoragetAt的位置值是鍵的keccack哈希值和映射聲明的位置。對于多維映射,將密鑰和變量位置遞歸調用Keccack哈希值。參見圖1中的示例進行說明。
接下來,我們來看一個發生變量打包的示例。打包要記住的是:
1.它僅按出現順序適用于基本變量類型。EVM將按照代碼中列出的順序在256位空間中打包盡可能多的變量。
2.每個映射和數組變量將占用一個新的插槽。
3.數組變量映射將遵循打包規則。也就是說,如果一個元素小于256位,則陣列的多個索引將占用存儲陣列中的單個插槽。
圖2顯示并提供了發生的打包的說明。當類型的長度小于256位時,EVM嘗試將其他變量打包到插槽中。EVM按列出的順序選擇要打包的變量。映射和數組始終出現在新位置。但是打包規則仍適用于解碼數組索引,打包規則仍適用于存儲在映射中的結構。
有關這種情況下如何存儲變量的說明,請參見圖2。
繼承
關于繼承的說明。當智能合約繼承其他智能合約時,基本智能合約的存儲變量將按繼承順序占據存儲陣列的第一個插槽。子類的存儲變量將隨后出現。
結論
如前所述,我們在本文介紹的規則來解碼以太坊智能合約的存儲機制。在接下來的,第2部分將描述的智能合約規則編寫的工具。
Tags:GETTORRAGETORABitGet交易平臺錢退不出來Guvectorrage幣是什么時候發行的Storage Coin
本文來源:重慶日報 作者:湯艷娟 2020年被業界稱為區塊鏈產業爆發的元年。4月14日,全國首個省級區塊鏈應用創新產業聯盟——重慶市區塊鏈應用創新產業聯盟成立.
1900/1/1 0:00:004月20日上午10時,國家發改委召開4月份例行新聞發布會,明確了新型基礎設施的范圍:主要是指基于新一代信息技術演化生成的基礎設施,比如.
1900/1/1 0:00:00有一個詞或許最能描述2020年第一季度的加密市場:史無前例。 圖片來源:pixabay為了理解這種瘋狂,投資平臺eToro近日發布了其2020年第一季度數字資產狀況報告.
1900/1/1 0:00:00本文翻譯自AvivZohar的博文《TheIncredibleMachine》。這是小編看過的最接地氣、最好理解的“零知識證明”解釋.
1900/1/1 0:00:00摘要:美股大漲,但比特幣聯動后遇阻,市場觀望情緒漸增,短時不確定性較大。央行數字貨幣DC/EP又爆出新進展,農行內測APP來了,“現鈔版”數字貨幣用手機“碰一碰”就完成支付.
1900/1/1 0:00:00作者:?GuillaumeBallet翻譯&校對:?裴奇?&阿劍 來源:以太坊愛好者 賬戶和合約存儲數據的方式是影響以太坊的眾多問題之一.
1900/1/1 0:00:00