火星链 火星链
Ctrl+D收藏火星链
首页 > Pol币 > 正文

STO:详解以太坊虚拟机(EVM)的数据存储机制

作者:

时间:1900/1/1 0:00:00

来源:区块链研究实验室

以太坊存储机制

在EVM中允许执行智能合约代码。合约状态或内存存储在智能合约地址中。可以将这种存储视为位于智能合约地址的无限长度的数据结构数组。存储机制确保存储位置没有冲突,并遵循一组规则。使用这些规则,我们可以解码任何合约的状态。解码存储在映射中的数据需要知道所使用的密钥。合约数据的解码使用RPC调用eth_getStorageAt进行。

插槽位置

变量在智能合约的存储阵列中的位置由代码中出现的顺序以及变量的大小决定。此位置称为插槽。如果一个变量小于256位,则EVM会尝试在空间中容纳一个以上的变量,因此一个以上的变量可能会占用存储阵列中单个插槽的空间。映射或数组将始终占据一个插槽。数组和映射元素的位置遵循一组特殊的哈希规则,本文将对此进行介绍,这些规则在以太坊文档中也有描述。

报告:ProShares的比特币期货ETF今年的表现越来越逊于BTC:金色财经报道,根据数字资产研究公司K33 Research的报告,ProShares的比特币(BTC)期货交易所交易基金(ETF)今年的表现越来越差于BTC,削弱了其作为押注BTC价格上涨工具的吸引力。

K33 Research指出,ProShares的比特币策略ETF(BITO)的价格今年迄今已上涨47%,落后于BTC同期60%的涨幅。表现不佳源于与基金结构相关的成本。BITO不购买代币,而是持有芝加哥商品交易所(CME)的BTC期货合约。该基金必须在合约到期时每月展期,使其容易受到条款之间价格差异的影响。如果下个月的合约交易价格高于最近的到期日,这种现象称为期货溢价,在牛市中很典型,在一段可持续的时间内,该基金将因“期货溢价流失”而加剧损失。[2023/5/31 11:49:21]

下表提供了EVM遵循的分配规则的摘要。我们将看两个智能合约的示例,并使用表1中提供的规则对其进行解码

为链游提供开发者工具的公司Stardust已集成至Avalanche:1月20日消息,为链游提供开发者工具的公司 Stardust 宣布已添加了 Avalanche C 链与即将推出的子网的兼容性,将为 Avalache 上游戏开发者提供钱包、NFT 等开发工具。此外,Stardust 还将与 Ava Labs 合作推出加速器计划,以推动 Web2 游戏开发人员和新的 Web3 原生工作室的游戏开发。[2023/1/20 11:23:42]

CZ:Binance SAFU保险基金大致分为BTC、BUSD和BNB:金色财经报道,CZ在社交平台回应SAFU保险基金构成问题时表示,Binance SAFU保险基金(10亿美元等值金额)大致分为BTC、BUSD和BNB。而自上次再平衡之后,BNB价格的上涨速度快于BTC。

此外,10亿美元行业复苏基金将全部为BUSD。SAFU保险基金和行业复苏基金的持仓均在区块链上完全公开。

此前报道,11月24日,CZ在接受彭博社直播采访中表示,Binance将设立一个约10亿美元规模的基金,用于购买加密领域不良资产。[2022/11/25 20:44:51]

256位变量的简单示例

STEPN :在APE REALM强化Sneaker将有50%几率强化成为创世Sneaker:8月6日消息,STEPN公布APE REALM中的创世Sneaker获取规则: 8月6日20:00到8月13日20:00在APE REALM进行Sneaker强化,将有50%几率使强化后的Sneaker变成创世Sneaker(APE Genesis Sneaker)。

创世Sneaker强化上限200双,奖励将立刻生效,同时Genesis Sneaker ID将从未使用的Genesis ID编号(G1 - 20,000 之间)随机抽取。此外,一旦生成200个创世Sneaker后,活动将提前结束。[2022/8/6 12:06:31]

首先让我们看一个简单示例,所有变量都是256bit。这样做使我们无需考虑可变变量即可查看分配。

请注意,当对数字应用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部分将描述的智能合约规则编写的工具。

标签:BTCGETTSTSTOLFBTC币BITGET交易所中文名字bitstamp交易平台中文叫什么onston币价格

Pol币热门资讯
DGE:区块链初创公司Dltledgers处理超过30亿美元的贸易融资

18个月前以来,新加坡的初创公司Dltledgers通过其区块链平台处理了超过33亿美元的贸易融资。Dltledger的核心解决方案是供应链可追溯性区块链,可链接到银行、运输公司以及保险公司.

1900/1/1 0:00:00
COV:矿企:比特币挖矿基本上不受疫情影响,价格最让人担忧

近日,全球一些大型挖矿公司称,比特币矿业活动基本上未受COVID-19的影响——除了比特币的价格下跌之外.

1900/1/1 0:00:00
比特币:比特币秘史:以为只是丢了几百块,最后却悔不当初

来源:哈希派作者:LucyCheng一个普通的电脑硬盘多少钱?大概就是丢了也不至于太心疼的价格吧。但一个存有7500枚比特币的硬盘就不一样了,在BTC价格达到最高峰的时候,那价值可是一亿多美元.

1900/1/1 0:00:00
CRYP:巴比特专栏 | 币圈,买币者资金追缴还是返还?

原文:肖飒lawyer,作者:郭谭浩,肖飒本想买币赚一笔,但不想发币方竟成了组织,涉嫌违法、犯罪;参与资金都将面临收缴。这时,买币款能否追回,就成了买币人最关心的问题.

1900/1/1 0:00:00
比特币:暴跌中的套利之道:Coinbase发现了这3种不同寻常的方法

Coinbase发现了衍生品套利和稳定币投机机会,这些机会是在最近的崩盘中创造的。 Silvergate Bank可能面临美司法部、国会和银行监管机构的调查,导致其股票暴跌:金色财经报道,Sil.

1900/1/1 0:00:00
ARI:通过Messari的链上数据来选币,我们发现哪些投资标的?

前言我们币圈很多投资逻辑来自大机构,我们很多币圈媒体欢喜的项目也来自这些大机构的投资组合。这些投资逻辑、这些投资组合坏吗?不见得。但好吗?也并不见得.

1900/1/1 0:00:00