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

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

译文出自:登链翻译计划[1] 译者:翻译小组[2] 校对:Tiny 熊[3] 这是深入 Solidity 数据存储位置[4]系列的另一篇。...在今天的文章中,我们将更详细地介绍 EVM 中的一个重要数据位置存储(Storage)。 我们将看到合约存储的布局是如何工作的,storage引用。...存储的基本原理 智能合约的存储是一个持久的可读可写的数据位置。意思是说,如果数据在一次交易中被写入合约存储,一旦交易完成,它就会持久存在。...这意味着变量_owner可以被改变为同一类型(在我们的例子中为地址)的任何有效值。然而,槽0是为这个变量保留的,并将永远在那里。...因此,它们的 "地址 "是由一个槽和该槽内的一个字节偏移量组成。 因此,一个变量的 "地址"由两个部分组成。 槽号:变量所在的位置。 变量开始的字节偏移量(在该槽内)。

1.8K30

Solidity:数据存储位置

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

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

    深入Solidity数据存储位置

    学习每个数据位置是如何工作的,需要学习很多东西,比如 "存储"、"内存 "和 "calldata"的结构和布局,或者 "什么内容可以存储在哪里"。...数据位置 → 概述 本文旨在对这些不同的数据位置做一个很好的概述,数据可以被写入和读出。我们将看到,有些位置是只读的,不能写入,而其他位置是可变的,里面存储的值可以被编辑。...主要 EVM 数据位置的基础知识也在以太坊黄皮书 第 9 章节中有说明[10] 存储 智能合约的存储相当于工业机库上的存储架单元,Petrebels[11] on Unsplash 在以太坊中,每个特定地址的智能合约都有自己的...对于存储和 calldata = 我们只能分配来自指定数据位置的值(无论是直接类型还是通过相同类型的引用)。...这个合约在存储中持有一个结构体的映射。为了比较每个数据位置的行为,我们将使用不同的函数,使用不同的数据位置关键字。 使用存储 "storage"的 getter。

    1K10

    一个链接地址获取对方IP地址位置教程

    以前出现过使用文章获取地址的方法,当时没留意,具体方法也找不到 之前也分享过一些获取IP的方法和资源,今天分享的方法,更加简单方便。...2、在右上角处,点击生成探测地址。 ? 3、使用此功能需要安装 探测地址扩展插件,点击下载。 ?...4、下载完插件打开压缩包双击  Dingwei.tv.crx 安装插件 5、再次打开 www.dingwei.tv 页面 ,在右上角就会展现出带有自己唯一标识的探测地址。...6、把探测地址发给对方,只要对方打开后,你这里就会显示打开者相关信息 (相关信息包括:IP、地址、2D地图、实景地图、分辨率、浏览器、访客系统、网络接入商) 注:本教程仅用于技术交流学习和紧急用途

    19.9K50

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

    译文出自:登链翻译计划[1] 译者:翻译小组[2] 校对:Tiny 熊[3] 图片来源: Mech Mind[4] on Unsplash[5] 这是深入 Solidity 数据存储位置[6]系列的另一篇...在检查空闲内存指针所指向的内存位置上实际存储的内容之前,向空闲内存指针写入可能不是一个好的做法。...Solidity 文档对此有很好的描述: 指向内存的局部变量,表示的是内存中变量的地址而不是值本身。...然后,要发送的 calldata 有效载荷被存储在内存中,即位于由空闲内存指针检索到的位置。...最后,CALL操作码将调用外部合约地址,最初从合约存储中获取(指令号为057),并通过从内存中获取 calldata(之前被写入的地方)来发送。

    1.8K40

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

    geo server做图层和位置信息展示,而pg则用来存储地理位置数据。一转眼至今已有十年光景,真是让人感慨,十年,弹指一挥间。...二 GEO存储方案与空间索引2.1 存储方案 目前支持空间数据存储的方案很多,Esri公司的ArcSDE(Spatial Database Engine,空间数据库引擎),包括Oracle,SQL...三 Redis GEO3.1 命令 Redis 3.2 版本新增了geo相关命令,用于存储和操作地理位置信息。...2、redis geo中存储的信息是否完整?是否还需要存储其他辅助信息?3、可能会有多类位置点,实际需求会要求根据类别查询?4、当发生数据迁移时,怎样保证redis geo中的数据完整?...最多支持存储多少个空间数据?.... 一些比较容易想到的可能方案,比如结合其他持久化存储使用,做好一致性保障;member中包含id信息,用于查询明细信息;通过多个key对位置数据分类存储等等。

    2.6K10

    tracker服务器地址_rack服务器

    详细信息主要包括追踪器名称,用于存储操作事件的OBS桶名称和OBS桶中的事件文件前缀。GET /v1.0/{project_id}/tracker无状态码: 200状态码: 200请求成功。...详细信息主要包括追踪器名称,用于存储操作事件的OBS桶名称和OBS桶中的事件文件前缀。...简要介绍FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。...云服务器组支持以下操作:创建云服务器组添加云服务器到云服 停止服务器,即对裸金属服务器执行关机操作。停止服务器的前提条件是裸金属服务器必须处于“运行中”状态。...停止服务器为“强制关机”方式,会中断您的业务,请确保服务器 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

    14.9K30

    如何登录云服务器地址?云服务器地址从哪里获取?

    服务器地址从哪里获取呢? 如何登录云服务器地址 很多人由于对云服务器不是十分理解,不知道云服务器地址到底是什么?...其实云服务器本身就是建立在网络中的虚拟服务器,只要通过其在互联网上的IP地址才能够进行访问。...一般来说云服务器地址登录会在用户首次购买云服务时由云服务器服务商提供,用户一定要牢牢记住登录地址,这是未来使用云服务器时非常重要的内容。...云服务器地址如何获取 云服务器的服务是需要通过付费才能获得的,因此想要获取到云服务器地址,就需要用户首先选择一家云服务器服务商,并根据自己的需要来向其购买所需要的云服务器资源,当购买成功后云服务器商会为用户提供一个登录地址...如何登录云服务器地址?云服务器地址是用户使用云服务时必须要了解的,也是云服务器登录时的关键所在,一般云服务器地址都是由云服务器商来提供的,一般这样的地址都是唯一的,用户一定要记得保存。

    43.2K30

    变量,常量,静态变量存储位置

    常见的存储区域可分为: 1、栈 由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。...5、常量存储区 这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改(当然,你要通过非正当手段也可以修改)。...例1:C语言程序 int x; void main() { } 变量x存储在内存哪个区域?...BSS段属于静态存储区。 例2:static全局变量与普通全局变量有什么区别?...答:static局部变量的存储区为静态存储区,普通局部变量的存储区为栈; static局部变量生存周期为整个源程序,但是只能在声明其的函数中调用,并且其值与上一次的结果有关;而普通局部变量的生存周期为声明其函数的周期

    1.2K10

    keras离线下载模型的存储位置

    但是在服务器上运行的时候遇到一个问题,因为这个模型第一次使用时需要去下载,而服务器连接下载的url超时。。。那就只能手动离线下载然后放到路径里去供调用了。...首先keras提供的模型下载地址是:https://github.com/fchollet/deep-learning-models/releases 其中我们找到vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5...从这个命名也可以看出很多信息了,比如从tf看出这是基于tensorflow的(th是基于Theano ),notop也就是我们上面说的不要顶层的分类器部分,h5后缀表示keras使用HDF5格式存储的,...data_utils.py 这时候离我们要的东西就不远了,这时候都不用详细看代码,我们看下注释: 注释说,这个函数会先检查cache中是否有文件,如果没有就从url下载,而这个cache的路径在~/.keras,默认存储文件是...datasets,说明默认是下载数据集的,还记得vgg16那边传的参数么,cache_subdir='models',所以这个文件应该在的位置就是~/.keras/models,这时候我们直接进入该目录

    1.8K10

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

    Solidity教程系列第4篇 - Solidity数据位置分析。...引用类型是一个复杂类型,占用的空间通常超过256位, 拷贝时开销很大,因此我们需要考虑将它们存储在什么位置,是memory(内存中,数据不是永久存在)还是storage(永久存储在区块链中) 所有的复杂类型如数组...(arrays)和数据结构(struct)有一个额外的属性:数据的存储位置(data location)。...状态变量:合约内声明的公有变量 还有一个存储位置是:calldata,用来存储函数参数,是只读的,不会永久存储的一个数据位置。外部函数的参数(不包括返回参数)被强制指定为calldata。...下面看一段代码: pragma solidity ^0.4.0; contract C { uint[] x; // x的存储位置是storage // memoryArray的存储位置

    1.3K30

    修改 Docker 镜像默认存储位置的方法

    # 默认存放位置 $ sudo docker info | grep "Docker Root Dir" Bash Copy 解决默认存储容量不足的情况,最直接且最有效的方法就是挂载新的分区到该目录。...机制 OPTIONS=--graph="/data/docker" --selinux-enabled -H fd:// # CentOS7 # 修改docker.service文件,使用-g参数指定存储位置...# 定义新的存储位置 $ sudo vi /etc/systemd/system/docker.service.d/docker.conf [Service] ExecStart=/usr/bin/dockerd...--graph="/data/docker" --storage-driver=devicemapper Bash Copy 保存并退出 vim 编辑器 /data/docker 就是新的存储位置,而...如果你的存储驱动有所不同,请输入之前第一步查看并记下的值。现在,你可以重新加载服务守护程序,并启动 Docker 服务了,这将改变新的镜像和容器的存储位置

    21.6K21

    2.3存储器分段和地址空间

    2.3存储器分段和地址空间 1)为什么要分段 8086/8088有20位地址线,能够寻址 1MB 的内存空间,但寄存器是16位,只能寻址 64KB 存储空间,所以要分段,把1MB的存储空间分成若干逻辑段...,每个逻辑段最大具有64KB的存储空间。...2)分段概念 把 1MB 的存储空间分成若干逻辑段,每个逻辑段最大具有 64KB 的存储空间。 3)物理地址形成 物理地址:即实际地址,例如00000H。...一个存储单元的物理地址是唯一的,而逻辑地址是可以不唯一的。 段基址:段首址的高16位。段基址表明这个段的开始,存放在段寄存器DS、ES、SS或CS中。...偏移地址:段内存储单元距离段首地址的偏移量,也称有效地址EA,存放在IP、BP、SI、DI或BX中。偏移地址范围:0000H~FFFFH。

    5210

    利用本地存储,记录滚动条的位置

    2、功能分析 这个功能的实现并不是很难,当页面滚动时记录页面滚动条的位置并保存到本地存储里面,当你再次打开页面的时候读取本地存储里面的值来设置页面滚动条的位置。具体我们来分析一下。...分析: 1、监听页面滚动条的状态(是否滚动) 2、滚动时获取页面滚动条的位置 3、滚动条的位置保存到本地存储里面 4、页面每次加载的时候获取本地存储里面的值 5、获取到的值来设置页面滚动条的位置 3、知识要点...使用本地存储的setItem方法设置本地存储的值。...DOCTYPE html> HTML5Course - 利用本地存储,记录页面浏览器的位置</...5、总结 利用本地存储,记录滚动条的位置,主要涉及了两个主要技术点,一个点是滚动条的操作,另外一个点是本地存储的操作。

    2.7K70
    领券