月亮链 月亮链
Ctrl+D收藏月亮链

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

作者:

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

来源:区块链研究实验室

以太坊存储机制

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

插槽位置

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

CFTC专员:在Ripple取得部分胜利后,美国加密货币监管明确化的道路已经铺好了:金色财经报道,商品期货交易委员会(CFTC)专员Caroline Pham认为,在Ripple取得部分胜利后,美国加密货币监管明确化的道路已经铺好了。

7月17日,Caroline Pham在彭博电视上发表讲话时表示,最近法院关于加密资产分类的重大裁决最终将导致监管的明确化。去年我说过,我们将首先在法庭上看到有关证券定义的监管清晰度,我认为我们已经通过已经发布的一些非常重要的法庭意见看到了这一点。[2023/7/18 11:01:40]

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

ETH 2.0总质押数已超1767.29万:金色财经报道,数据显示,ETH 2.0总质押数已超1767.29万,为17672874个,按当前市场价格,价值约314.30亿美元。此外,目前ETH 2.0质押总地址数已超56.84万,为568438个。[2023/3/21 13:16:03]

非洲金融科技初创公司在2022年筹集了14.5亿美元:金色财经报道,根据 Disrupt 的 2022 年非洲科技初创企业融资报告,金融科技初创企业在过去一年中获得了 14.5 亿美元的融资。该行业的总融资额比 2021 年获得的约 10.4 亿美元增长了 39.3%。尽管金融科技公司的总融资有所增加,但该行业在非洲科技初创企业融资总额中所占份额仍低于 2021 年的 48.3%到 2022 年达到 43.4%。

与 2021 年的情况一样,尼日利亚在其 180 家初创公司共筹集到 976,146,000 美元或占非洲大陆总额的 29.3% 之后再次成为资金最充足的国家。[2023/2/19 12:16:06]

256位变量的简单示例

Celsius Network创始人在公司宣布破产前曾提走1000万美元:金色财经报道,据英国媒体消息,加密借贷平台Celsius Network创始人Alex Mashinsky在公司冻结客户账户并宣布破产前几周从该公司提走1000万美元存款。(《金融时报》)[2022/10/3 18:37:51]

首先让我们看一个简单示例,所有变量都是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部分将描述的智能合约规则编写的工具。

标签:GETETSTORTORAtogetherbnb游戏v1.0.0PLANETSSEKTOR币Torah Network

币安app官方下载最新版热门资讯
比特币:为什么闪电网络的衍生品很重要?_DLC

来源:LongHash编者注:原标题为《为什么闪电网络的衍生品会很重要?》。本文作了不改变作者原意的删减。闪电网络可以通过快速、低廉且可靠的方式处理更多支付来帮助比特币实现扩展.

1900/1/1 0:00:00
RAM:律师观点 | 从Telegram禁令,看在美ICO的法律风险_Egretia Token

作者:罗滔Telegram与美国证券交易委员会的法律斗争愈演愈烈,2019年10月11日SEC以“发行非法数字资产证券Grams”为由,颁布禁止Telegram出售Gram代币的紧急禁令.

1900/1/1 0:00:00
区块链:互金协会13万字区块链报告,对金融领域应用提了哪些建议?_区块链工程专业学什么女生好

本文来源:第一财经作者:杜川4月14日晚,中国互联网金融协会区块链研究工作组正式发布《中国区块链金融应用与发展研究报告》,报告长达13万字.

1900/1/1 0:00:00
区块链:巴比特专访丨湖南公布区块链产业发展重点项目,这家何以独占公司3席?_okx

3月27日,湖南省工业和信息化厅发布《关于公布2020年湖南省大数据和区块链产业发展重点项目的通知》,这是进入2020年以来,国内首个由省级政府支持的将区块链作为重点发展项目的政策文件.

1900/1/1 0:00:00
BTC:从BCH与BSV的减半预测,BTC将步入下跌阶段?_bitkeep官网下载APP

还好BCH与BSV先行减半,给BTC的减半行情提供了很好的行情参考。下个月的BTC减半,或许会正式进入下跌阶段......BCH算力急剧下降BCH减半后的第一天,全网算力从3920.24PH/s.

1900/1/1 0:00:00
区块链:上市公司区块链周动态:22家披露应用落地进展 物流、金融、溯源遍地开花_比特币是什么时候发行的

文|互链脉搏互链脉搏统计,本周共有22家上市公司披露了区块链业务动态。各公司发展的区块链业务领域尤为多元,包括能源、社交内容、金融、政务等.

1900/1/1 0:00:00