首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Solidity:数据存储位置

在 Solidity 中,有三种数据存储位置:storage、memory 和 calldata。这三者的差异主要在于它们的数据保存位置和存储周期。...2.Memory: Memory 数据在临时内存中存储,当前函数执行完毕后,这部分数据就会被清除。Memory 数据不会被永久写入区块链,使用 Memory 比 Storage 成本低。...下面的示例中展示了三种数据存储位置: // SPDX-License-Identifier: MIT pragma solidity ^0.8.25; contract DataLactionsTest...理解这三种数据存储位置之间的差异以及它们如何影响合约的成本,能帮助我们更有效地编写和优化智能合约。...如果需要长期存储数据,那么数据应被存储在 storage;否则,如果数据是临时的,它应在 memory 中存储。对于外部函数参数,应优先考虑使用 calldata 来降低 gas 成本。

20410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入Solidity数据存储位置

    数据位置 → 概述 数据位置 → 规则 函数参数的规则 函数主体的规则 数据位置 → 行为 映射的(边缘)情况 总结 参考文献 简介 作为一个对自己事业充满热情的人,一个工业炉的建造者和翻新者,我的父亲决定把我送到工业工厂去工作...其中一些操作码指示 EVM 从/向不同的位置读写数据。EVM 需要这些多个数据位置来正确完成其工作。 在一个工厂里,操作工作和材料可以在多个地方找到。...数据位置 → 概述 本文旨在对这些不同的数据位置做一个很好的概述,数据可以被写入和读出。我们将看到,有些位置是只读的,不能写入,而其他位置是可变的,里面存储的值可以被编辑。...数据位置 - 行为 本节借鉴了 Forest Fang 的文章[16] 我强烈推荐你阅读它! 我曾用它来分析更多的底层 EVM 操作代码,以了解在背后发生了什么。...Solidity 文档中提到了以下内容: "数据位置不仅与数据的持久性有关,而且还与赋值的语义有关"。 在指定函数体内部的数据位置时,必须考虑两个主要问题:效果和 Gas 消耗。

    1.1K10

    时空位置与大数据

    (来源,ZDNET《数据中心2013:硬件重构与软件定义》年度技术报告) 在这些数据中,除了人们日常消费、生活、交通产生的数据之外,基于位置数据正在其中发挥着越来越重要的作用,基于位置数据挖掘成果丰硕...截止至2020年1月5日,高德位置开放平台日均处理近1000亿次的定位及路线规划请求,百度地图开放平台日均处理1,200亿次位置服务请求,腾讯位置数据日均定位量超过1100亿。...比如人们可以在 腾讯位置数据 看到位置流量趋势、区域热力图以及人口迁徙图。 ?...参考文献 盘点中国2013行业数据量 大数据史记2013:盘点中国2013行业数据量(上) 2019年第三季度中国城市活力研究报告 高德位置开放平台 百度地图开放平台 腾讯位置数据 Author:...Frytea Title: 时空位置与大数据 Link: https://blog.frytea.com/archives/289/ Copyright: This work by TL-Song

    1.1K20

    深入Solidity数据存储位置 - 内存

    译文出自:登链翻译计划[1] 译者:翻译小组[2] 校对:Tiny 熊[3] 图片来源: Mech Mind[4] on Unsplash[5] 这是深入 Solidity 数据存储位置[6]系列的另一篇...空闲内存指针 作为函数参数的memory引用 在函数内部"内存"(memory) 引用 扩展内存成本 合约调用之间的内存 总结 介绍 在介绍性文章深入 Solidity 数据存储位置[8]中,我把 EVM...它能够知道在内存中的哪个位置(哪个偏移量)有空闲的空间可以写入数据。这是为了避免覆盖已经存在于内存中的数据。 空闲内存指针是 EVM 最重要和最关键的东西之一,需要了解。...当一个字符串或一些数据在 Solidity 中被写入内存时,EVM 总是执行以下最初的两个步骤。 步骤 1:获取空闲内存指针 EVM 首先从内存位置0x40加载空闲内存指针。...让我们回顾一下,在介绍文章 "关于数据位置"中,我们描述了带有关键字 "storage"、"memory"或 "calldata"的变量被称为引用型变量。

    1.8K40

    深入Solidity数据存储位置 - 存储

    译文出自:登链翻译计划[1] 译者:翻译小组[2] 校对:Tiny 熊[3] 这是深入 Solidity 数据存储位置[4]系列的另一篇。...在今天的文章中,我们将更详细地介绍 EVM 中的一个重要数据位置:存储(Storage)。 我们将看到合约存储的布局是如何工作的,storage引用。...存储的基本原理 智能合约的存储是一个持久的可读可写的数据位置。意思是说,如果数据在一次交易中被写入合约存储,一旦交易完成,它就会持久存在。...这与内存或调用数据相反,后者是线性数据位置(增长的字节数组),你通过偏移量(字节数组中的索引)访问数据。...由于newProposal变量是一个结构体(复杂类型),我们必须指定之后 EVM 操作和编辑这个变量时操作的数据位置,这里使用一个storage(存储)引用。 是什么意思呢?

    1.9K30

    修改Mysql数据库的数据存储位置

    关键词: Mysql数据存储位置 | win10 + MySQL Server 8.0 | 环境:win10 + MySQL Server 8.0.15` | 修改数据存储位置 俗话说:要想下班早,代码得敲好...#查看数据数据存储位置 SHOW GLOBAL VARIABLES LIKE "%datadir%"; #查看数据库安装位置 SHOW VARIABLES LIKE "%char%"; 一、自己电脑...环境:win10 + MySQL Server 8.0 第一步:cmd下 net stop mysql #停止MySQL服务 第二步:在其他盘创建一个文件夹mySqlData 第三步:把原mysql数据存储位置下的文件和文件夹...统一复制到刚刚新建的文件夹mySqlData下 #查看数据数据存储位置 SHOW GLOBAL VARIABLES LIKE "%datadir%"; 第四步:在安装目录下找到配置文件my.ini..., #查看数据库安装位置 SHOW VARIABLES LIKE "%char%"; 记事本/notepad++打开并修改: #Path to the database root datadir

    4.1K10

    地理位置数据存储方案——Redis GEO

    geo server做图层和位置信息展示,而pg则用来存储地理位置数据。一转眼至今已有十年光景,真是让人感慨,十年,弹指一挥间。...GeoHash也是空间索引的一种方式,并且特别适合点数据,而对线、面数据采用R树索引更有优势。...提供的命令包括添加、计算位置之间距离、根据中心点坐标和距离范围来查询地理位置集合等,说明如下:geoadd:添加地理位置的坐标。geopos:获取地理位置的坐标。...3、可能会有多类位置点,实际需求会要求根据类别查询?4、当发生数据迁移时,怎样保证redis geo中的数据完整?最多支持存储多少个空间数据?.......一些比较容易想到的可能方案,比如结合其他持久化存储使用,做好一致性保障;member中包含id信息,用于查询明细信息;通过多个key对位置数据分类存储等等。

    2.7K10

    修改Mysql数据库的数据存储位置(二)

    修改Mysql数据库的数据存储位置 经过一年的努力奋斗!...终于我这个电脑也满了,加了一个T的硬盘扩容 但是需要把Mysql的数据存储位置修改到E盘 每天打开这台电脑执行爬虫,都有一股凉意从脖颈处起来,生怕直接爆了 由于最近双十一刚结束,数据库一直在频繁使用中...,而且没有把握一次迁移完成,就一直没敢动 主要步骤跟前文一致:修改Mysql数据库的数据存储位置 不同的是,其实这台电脑第一次拿到装好Mysql时候,我就修改了,但是没成功,还整的不能用了,还好没啥数据...,瞎折腾几天搞好了,但是mysql的datadir还是在C盘,这就是前面说的没有把握一次迁移成功的原因,毕竟也改了四五台了,一般的直接就改了 所以对于这次数据存储修改真的是捏了一大把汗 还好对于这一年不是干吃饭的

    2.1K30

    Solidity 教程系列4 - 数据存储位置分析

    Solidity教程系列第4篇 - Solidity数据位置分析。...(arrays)和数据结构(struct)有一个额外的属性:数据的存储位置(data location)。...根据上下文的不同,大多数时候数据位置有默认值,也通过指定关键字storage和memory修改它。 函数参数(包含返回的参数)默认是memory。...状态变量:合约内声明的公有变量 还有一个存储位置是:calldata,用来存储函数参数,是只读的,不会永久存储的一个数据位置。外部函数的参数(不包括返回参数)被强制指定为calldata。...数据位置指定非常重要,因为他们影响着赋值行为。 在memory和storage之间或与状态变量之间相互赋值,总是会创建一个完全独立的拷贝。

    1.3K30

    解决Python Matplotlib绘图数据位置错乱问题

    问题具体表现为: 1.几个负样本的数据位置倒错 2.X轴刻度变成了乱七八糟一团鬼东西 最终解决办法 造成上述情况的原因其实是由于输入matplotlib.plot()函数的数据x_data和y_data...从CSV文件中直接导入后格式为string,因此才会导致所有数据点的x坐标都被直接刻在了x轴上,且由于坐标数据格式错误,部分点也就表现为“乱点”。...解决办法就是导入x,y数据后先将其转化为float型数据,然后输入plot()函数,问题即解决。 ?...,下为去掉无数据间隔区间 ?...#优化label显示,非必须 fig.autofmt_xdate() PLT.show() 很多时候乱翻google还不如好好通读官方manual… 以上这篇解决Python Matplotlib绘图数据位置错乱问题就是小编分享给大家的全部内容了

    2.6K20

    RMAN 数据库克隆文件位置转换方法

    在使用RMAN克隆数据库时,如果辅助数据库(新数据库)使用了与目标数据库(原数据库)使用了不同的路径,那么就存在位置转换的问题。...在Oracle中,控制文件用于定位数据文件以及联机重做日志文件,如果没有正确的转换,控制文件压根就找不到相应的数据文件,日志文件。对此Oralce为我们提供了三种文件位置的转换方法。...1、使用db_file_name_convert与log_file_name_convert参数 --我们可以在辅助数据库参数文件spfile/pfile中定义这两个参数用于Oracle来根据这个值进行自动转换文件位置...--该参数也可以用于配置dataguard是主数据库与standby数据库文件位置转换 --第一个字符串用于定义目标数据库文件位置,第二个字符串用于定义辅助数据库文件位置 --如下面的示例 *.db_file_name_convert...reset log_file_name_convert; System altered. 2、使用RMAN set newname子句 RMAN 为我们提供了set newname 子句用于指定辅助数据数据文件以及临时表空间数据文件的位置

    1.1K10

    推荐】更多数据……巨多数据……大数据

    今天,数据格式往往呈现新颖化的趋势,分析手段往往呈现多样化的趋势。大数据正是在这个趋势上打的标签,它带来的是更大的数据挑战,更多的数据源,以及不同的数据格式。...一旦我们能掌握哪些是必要数据,我们需要做的就是想清楚怎样才能收集到数据,整理好数据,并且把这些数据融合到数据分析当中。但下面这个问题才是要点。第一个问题是,“这份数据对业务有价值吗?”...同样,当我们面对数据和分析时,门外汉经常会认为不就是采采数据、存存数据,然后再用个工具分析分析数据嘛。但理解分析的人会认为存取数据以及执行数据分析会用到很多不同种类的工具和平台。...例如,传感器吐出的信息格式是很特殊的,GPS数据描述的则是人和物在空间中的位置信息,人或企业之间的关系强度往往也是重要数据。从数据格式和数据分析方法看,这些数据的类型完全不同。...对于那些希望从大数据中获得深入营销价值的读者,推荐阅读我的同事Lisa Arthur所撰写的《大数据营销:如何让营销更具吸引力》一书。

    89060
    领券