宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > 酷币下载 > 正文

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

作者:

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

来源:区块链研究实验室

以太坊存储机制

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

插槽位置

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

Bybit上的BTC期货合约持仓量达到15个月新高:金色财经报道,Glassnode最新数据显示,Bybit上的BTC期货合约持仓量刚刚达到2,642,473,920.94美元,为15个月新高。[2023/7/13 10:51:20]

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

IdleFinance:相关策略受Euler事件影响,涉及约1100万美元稳定币及630枚ETH:金色财经报道,DeFi协议Idle Finance发推称,经过调查,Euler Finance事件对协议Yield Tranches策略的敞口涉及约535万美元稳定币及320枚ETH,Best Yield策略的敞口涉及480万美元稳定币和313枚ETH。

此外Idle Finance强调实际影响将取决于Euler团队采取的行动和可能采取的缓解措施,以上数字并非实际回撤,而是锁定在Euler的实际数字。Idle Finance还表示Senior/Junior Best Yield DAI金库上周由于USDC脱锚,已将所有资金转移到Aave,因此该金库(总TVL为1120万美元)未受Euler事件影响,并且现在正在按预期运行并从Aave获得收益。[2023/3/14 13:02:42]

256位变量的简单示例

NEXTYPE与巴西最大的游戏公会DUX建立合作关系:金色财经消息,据官方推特,区块链游戏发行平台NEXTYPE正式宣布与巴西最大的游戏公会DUX建立合作关系,以提供进入Web3和元宇宙领域的可能性。[2022/7/14 2:12:58]

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

请注意,当对数字应用keccack哈希时,数字必须是0填充的64位值。

所有解码都是使用以太坊RPC调用eth_getStorageAt执行的,在本文中将其表示为GetStorageAt。可以使用任何语言打包程序来调用此RPCapi。

Nansen推出加密原生消息传递应用“Nansen Connect”:6月15日消息,区块链数据分析平台Nansen宣布推出加密原生消息传递应用“Nansen Connect”,用户可以使用自己的加密钱包登录,根据自己的Nansen钱包标签选择用户名,并根据加密货币持有量和链上行为加入群组,向其他用户发送私信(端到端加密),同时也可以实时监控关键资金收款统计和用户持有量信息,最终建立更高效的场外交易渠道。[2022/6/15 4:29:49]

下图显示了如何对智能合约的地址和传递给它的位置值进行GetStorageAt调用。图1左侧的数字是变量的位置。对于基类型,可以将此位置传递到GetStorageAt以获取变量值。对于数组,位置将返回数组的长度。

通过将Keccack哈希传递给索引为0的GetStorageAt来解码数组索引。数组的每个后续索引位于与位置求和的哈希值处。可以认为这是访问数组的指针并增加其位置以查找每个元素,类似于C或C++。

传递给每个键的GetStoragetAt的位置值是键的keccack哈希值和映射声明的位置。对于多维映射,将密钥和变量位置递归调用Keccack哈希值。参见图1中的示例进行说明。

接下来,我们来看一个发生变量打包的示例。打包要记住的是:

1.它仅按出现顺序适用于基本变量类型。EVM将按照代码中列出的顺序在256位空间中打包尽可能多的变量。

2.每个映射和数组变量将占用一个新的插槽。

3.数组变量映射将遵循打包规则。也就是说,如果一个元素小于256位,则阵列的多个索引将占用存储阵列中的单个插槽。

图2显示并提供了发生的打包的说明。当类型的长度小于256位时,EVM尝试将其他变量打包到插槽中。EVM按列出的顺序选择要打包的变量。映射和数组始终出现在新位置。但是打包规则仍适用于解码数组索引,打包规则仍适用于存储在映射中的结构。

有关这种情况下如何存储变量的说明,请参见图2。

继承

关于继承的说明。当智能合约继承其他智能合约时,基本智能合约的存储变量将按继承顺序占据存储阵列的第一个插槽。子类的存储变量将随后出现。

结论

如前所述,我们在本文介绍的规则来解码以太坊智能合约的存储机制。在接下来的,第2部分将描述的智能合约规则编写的工具。

标签:NANGETRAGETORARari Governance Tokentogetherbnb游戏解说ArbitrageCTXStorage

酷币下载热门资讯
精选 | 论 DeFi 协议的竞争,治理和责任

每天精选5篇加密货币最新优质文章。今天内容包括:1)LongHash:如何看待比特币的价格波动?2)MulticoinCapital:论DeFi协议的分叉3)治理、责任和竞争4)OurNetwork:解析稳定币链上数据5)SuZhu:.

1900/1/1 0:00:00
新三板区块链公司太一云2019年持续亏损,出售子公司缩减人员降成本

作者:LornaQ 来源:财经网链上财经 新三板挂牌上市的第一家区块链公司太一云近日发布2019年年度报告。报告显示,公司实际营业收入约650万元,同比下降近82%,为降低运营成本,取消或出售五家子公司、孙公司.

1900/1/1 0:00:00
比特币秘史:新婚夫妇90天比特币挑战,被拍成长篇纪录片

来源:哈希派 作者:LucyCheng讲述比特币早期用户起落浮沉的《寄希望于比特币》、窥探中国加密货币矿业市场发展趋势的《比特币信仰》、帮助大众解读比特币常见疑问的《神奇的比特币:比特币革命》.

1900/1/1 0:00:00
观点|ETH 2.0是否会面临与比特币闪电网络相同的命运?

有没有注意到比特币的闪电网络在2020年还没有完全走上正轨?闪电实验室首席执行官伊丽莎白?史塔克早在2018年就宣布了面向开发者的LNd0.4测试版的初始版本.

1900/1/1 0:00:00
“黑色星期四”后,Bitmex退位币安崛起,比特币期货市场将走向何方?

3月12日“黑色星期四”因许多事情而被铭记。但对于加密货币投资者来说,3月12日的崩盘已经极大地改变了比特币衍生品市场的前景。在黑色星期四那天,比特币的价格急剧下跌,极大地改变了比特币期货市场的份额分配.

1900/1/1 0:00:00
遇到交易所宕机?如何保留证据?别慌!专业律师给你支招

4月18日晚,专业互金律师火伊婕与吴说区块链进行了访谈,总结要点如下: 关于Fcoin 1:目前Fcoin在多地被刑事立案,您如何看待此事?火律师:立案是刑事案件开始的第一步,类似点外卖,客户下单后,商家的接单行为.

1900/1/1 0:00:00