來源:區塊鏈研究實驗室
以太坊存儲機制
在EVM中允許執行智能合約代碼。合約狀態或內存存儲在智能合約地址中。可以將這種存儲視為位于智能合約地址的無限長度的數據結構數組。存儲機制確保存儲位置沒有沖突,并遵循一組規則。使用這些規則,我們可以解碼任何合約的狀態。解碼存儲在映射中的數據需要知道所使用的密鑰。合約數據的解碼使用RPC調用eth_getStorageAt進行。
插槽位置
變量在智能合約的存儲陣列中的位置由代碼中出現的順序以及變量的大小決定。此位置稱為插槽。如果一個變量小于256位,則EVM會嘗試在空間中容納一個以上的變量,因此一個以上的變量可能會占用存儲陣列中單個插槽的空間。映射或數組將始終占據一個插槽。數組和映射元素的位置遵循一組特殊的哈希規則,本文將對此進行介紹,這些規則在以太坊文檔中也有描述。
FTX黑客將約3萬枚BNB兌換為ETH和BSC-USD,并跨鏈至以太坊網絡:11月17日消息,據派盾預警監測數據,被標記為FTX Accounts Drainer 1的FTX黑客地址已經收到約6,079.22枚ETH(約724萬美元)。該地址目前持有241,471.67枚ETH(約2.87億美元),成為第31大ETH持有人。
此外,FTX Accounts Drainer地址在BSC上持有44,288.93枚BNB(約1170萬美元)和約168萬枚DAI。FTX Accounts Drainer 0xd73aC地址已將約3萬枚BNB兌換為2,001.5枚ETH和約500萬枚BSC-USD,并將約1,900枚ETH和約499.9萬枚BSC-USD跨鏈至以太坊網絡。[2022/11/17 13:17:39]
下表提供了EVM遵循的分配規則的摘要。我們將看兩個智能合約的示例,并使用表1中提供的規則對其進行解碼
數據:ETH完成合并以來,ETC算力已下跌逾51%:10月5日消息,數據顯示,自9月15日以太坊完成合并以來,ETC 全網算力持續走低,已下跌逾51%至152.78TH/s。[2022/10/6 18:40:23]
256位變量的簡單示例
首先讓我們看一個簡單示例,所有變量都是256bit。這樣做使我們無需考慮可變變量即可查看分配。
韓國娛樂業巨頭CJ ENM入駐The Sandbox元宇宙:7月4日消息,韓國娛樂業巨頭CJ ENM宣布與The Sandbox達成合作。通過此次合作,CJ ENM的元宇宙空間將在The Sandbox的虛擬房地產“Land”中創建。
CJ ENM計劃打造面向全球市場的K內容元宇宙,并計劃繼續嘗試融合現實世界和虛擬世界,例如將用戶在虛擬世界中的活動與廣播節目聯系起來。(TechM)[2022/7/4 1:49:12]
請注意,當對數字應用keccack哈希時,數字必須是0填充的64位值。
美國政府可能在年底前通過穩定幣立法:金色財經消息,一位美國政府官員表示,美國聯邦政府正在與國會合作制定穩定幣立法,該立法可能在今年年底成為法律。美國官員表示,總統金融市場工作組周四開會討論了最近的穩定幣市場和未來的立法,這項立法將由眾議院金融服務委員會提出,穩定幣的發行方式是與會者討論的另一個細節。這位官員還表示,監管機構認為立法需要兩黨支持,雖然他們沒有在參議院討論立法,但參議院銀行委員會高級成員Pat Toomey(R-Pa.)已經暗示,到2022年底可能會有一部穩定幣法出臺。(CoinDesk)[2022/7/1 1:43:24]
所有解碼都是使用以太坊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部分將描述的智能合約規則編寫的工具。
編者注:原標題為《央行數字貨幣都要來了,你竟然還不懂如何跟小姐姐解釋區塊鏈?》農行開測央行數字貨幣了知道嗎?DC/EP的發行正式進入倒計時! 對于區塊鏈行業來說, 這無疑是一個巨大的好消息.
1900/1/1 0:00:00AtomicLoans宣布已經獲得了新的資本注入,用于為比特幣開發一種去中心化貸款協議。 圖片來源:AtomicLoans非托管并且由比特幣支持的貸款服務即將推出AtomicLoans是一家專注.
1900/1/1 0:00:00在過去的幾周中,穩定幣對加密貨幣市場變得越來越重要。穩定幣現在占加密市場市值的百分比不斷增長。 圖片來源:圖蟲 事實上,根據4月20日區塊鏈分析公司CoinMetrics的數據,所有流通中的穩定.
1900/1/1 0:00:00來源:LongHash 普遍意見認為價格波動性是比特幣無法在主流大眾間獲得更高的采用率的主要原因之一。然而,真相或許很不一樣。許多人恰恰是因為比特幣極端的價格波動才被它吸引的。想想看.
1900/1/1 0:00:004月26日消息,以太坊聯合創始人Vitalik在接受外媒cointelegraph采訪時,談到了即將到來的以太坊2.0,其表示將被淘汰的以太坊挖礦設備可能會轉向零知識證明.
1900/1/1 0:00:00作者:XiuMu 來源:比推bitpush.newsLibra協會副主席DanteDisparte認為,Libra項目的核心是區塊鏈而非加密貨幣.
1900/1/1 0:00:00