比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > 瑞波幣 > Info

詳解以太坊虛擬機(EVM)的數據存儲機制_以太坊

Author:

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

來源:區塊鏈研究實驗室

以太坊存儲機制

在EVM中允許執行智能合約代碼。合約狀態或內存存儲在智能合約地址中。可以將這種存儲視為位于智能合約地址的無限長度的數據結構數組。存儲機制確保存儲位置沒有沖突,并遵循一組規則。使用這些規則,我們可以解碼任何合約的狀態。解碼存儲在映射中的數據需要知道所使用的密鑰。合約數據的解碼使用RPC調用eth_getStorageAt進行。

插槽位置

變量在智能合約的存儲陣列中的位置由代碼中出現的順序以及變量的大小決定。此位置稱為插槽。如果一個變量小于256位,則EVM會嘗試在空間中容納一個以上的變量,因此一個以上的變量可能會占用存儲陣列中單個插槽的空間。映射或數組將始終占據一個插槽。數組和映射元素的位置遵循一組特殊的哈希規則,本文將對此進行介紹,這些規則在以太坊文檔中也有描述。

以太坊L2網絡總鎖倉量為42.3億美元:金色財經報道,L2BEAT數據顯示,截至12月24日,以太坊Layer2上總鎖倉量為42.3億美元。其中鎖倉量最高的為擴容方案Arbitrum,約22.9億美元,占比54.28%;其次是Optimism,鎖倉量為11.3億美元,占比26.79%;第三為dYdX,鎖倉量為3.92億美元,占比9.27%[2022/12/25 22:06:02]

下表提供了EVM遵循的分配規則的摘要。我們將看兩個智能合約的示例,并使用表1中提供的規則對其進行解碼

以太坊客戶端Akula開發人員將不再維護或運行該項目:金色財經報道,以太坊客戶端項目Akula開發人員宣布將不再維護或運行該項目,因為他們無法與新宣布的具有類似功能且由知名加密風險投資公司 Paradigm 運營的競爭對手項目Reth競爭。但Akula代碼仍然可用,因為它是開源的。

據悉,Akula 是一個用 Rust 編寫的高性能以太坊客戶端。以太坊客戶端是允許節點讀取網絡上的塊并與智能合約交互的軟件應用程序。以太坊核心開發人員 Artem Vorotnikov 于 2021 年開始與一小群開發人員將該項目構建為開源客戶端實現。(the block)[2022/11/24 8:05:15]

Galaxy Digital CEO:受合并驅動,以太坊價格區間上限或達到2200美元或更高:8月9日消息,Galaxy Digital CEO Mike Novogratz在接受采訪時表示,考慮到即將到來的合并,以太坊價格區間上限可能達到2200美元或更高。[2022/8/9 12:11:53]

256位變量的簡單示例

首先讓我們看一個簡單示例,所有變量都是256bit。這樣做使我們無需考慮可變變量即可查看分配。

請注意,當對數字應用keccack哈希時,數字必須是0填充的64位值。

新西蘭聯儲加息50個基點至2.50%:7月13日消息,新西蘭聯儲加息50個基點至2.50%,符合市場預期,為連續第6次加息。(金十)[2022/7/13 2:09:21]

所有解碼都是使用以太坊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:以太坊GETETSSTOada幣和以太坊幣誰有價值點下載BitGet官方網站Puppets CoinBaostongzg

瑞波幣
巴比特專欄 | 從交互的角度,理解資產數字化_CRY

一、資產數字化 隨著央行DECP的試運行,資產數字化這個詞好像又開始重新被媒體提起了,因為央行的DECP本質上是貨幣的數字化,除了貨幣的數字化之外,未來我們還會有證券的數字化、積分的數字化等等.

1900/1/1 0:00:00
定了,“518囤幣日”來了!囤幣者,永不孤單!_EOS

在加密貨幣的世界里闖蕩,難度最大的事情是什么? 99%的人會說:囤幣。 最容易做的事情又是什么?99%的人會捶胸頓足:追漲殺跌.

1900/1/1 0:00:00
Solana流通盤“忘記”計入1100萬做市代幣,陷信任危機_SOLA

文:王也?? 出品:Odaily星球日報Solana“隱瞞”1100?萬做市代幣流通盤,團隊稱“絕對不是有意的”.

1900/1/1 0:00:00
比特幣信任難題:只有26%的人信任去中心化的加密貨幣_加密貨幣

原文來源:decrypt&cryptonews; 編譯:Masaka; 來源:區塊印象 最近《經濟學人》的一項民意調查發現,只有26%的人信任去中心化的加密貨幣.

1900/1/1 0:00:00
研究 | Token流通量的變化到底會影響什么?_TOKE

小結 本文試圖從貨幣流通理論出發構建代幣經濟體價值及代幣”內在價值”的評估框架。根據貨幣流通理論,銷毀不能直接提高代幣的理論價格.

1900/1/1 0:00:00
Kik欲借SAFT豁免,結局恐與Telegram相同_KIN

來源:財經網·鏈上財經 作者:LornaQ 近期,繼Telegram之后,拖了一年的Kik案件到了最后一搏之時,Kik堅稱SEC無法用豪威測試證明其所發行的加密貨幣Kin是證券,另一方面.

1900/1/1 0:00:00
ads