`

solidity数据位置

 
阅读更多
Solidity 提供4种类型的数据位置。

Storage
Memory
Calldata
Stack

Storage:要永久性存储,可以保存在存储区(Storage)。
该存储位置存储永久数据,这意味着该数据可以被合约中的所有函数访问。可以把它视为计算机的硬盘数据,所有数据都永久存储。
保存在存储区(Storage)中的变量,以智能合约的状态存储,并且在函数调用之间保持持久性。与其他数据位置相比,存储区数据位置的成本较高。

Memory
内存位置是临时数据,比存储位置便宜。它只能在函数中访问。
通常,内存数据用于保存临时变量,以便在函数执行期间进行计算。一旦函数执行完毕,它的内容就会被丢弃。你可以把它想象成每个单独函数的内存(RAM)。


Calldata
Calldata是不可修改的非持久性数据位置,所有传递给函数的值,都存储在这里。此外,Calldata是外部函数的参数(而不是返回参数)的默认位置。

Stack
堆栈是由EVM (Ethereum虚拟机)维护的非持久性数据。EVM使用堆栈数据位置在执行期间加载变量。堆栈位置最多有1024个级别的限制。



分享到:
评论

相关推荐

    人工智能-项目实践-数据预处理-java后台 预处理 solidity数据,签名,验证,查询,ens解析

    java后台 预处理 solidity数据,签名,验证,查询,ens解析

    dccmmtop#blogs#Solidity的数据位置特性深入详解1

    1. 数据位置的类型 2. 默认数据位置 3. 数据位置间相互转换

    solidity2.pdf

    数据位置指定了数据存储的位置(如内存、存储或调用数据),对于智能合约的性能和安全有重要影响。 ### 映射 映射是键值对集合,使用哈希函数存储和检索数据,是Solidity中一种特殊的数据结构。 ### LValues与...

    以太坊solidity字符串拼接实现

    在以太坊智能合约开发中,处理字符串拼接是一个常见的...通过理解Solidity的数据类型和内存管理,结合适当的第三方库和最新版本的Solidity特性,开发者可以有效地实现字符串拼接,并编写出安全、高效的智能合约代码。

    Solidity开发基础

    3. **Solidity数据类型** 4. **Solidity函数定义** 5. **Solidity合约示例** 6. **Solidity中的变量声明** 7. **Solidity高级功能** #### 详细解释 **1. Solidity语言介绍与历史** Solidity是一种专门为以太坊...

    Solidity 官方文档中文版

    Solidity提供了一系列的数据类型,包括基本类型(如uint、int、bool等)、地址类型(address)、固定大小的数组和动态数组、映射(mapping)以及合约类型。映射是一种非常特殊的类型,它允许键值对的存储,但不支持...

    Introducing.Ethereum.and.Solidity

    在Solidity部分,你将学习到如何定义和操作基本数据类型,如 uint、int、bool、address,以及更复杂的数据结构如数组和映射。文档还会介绍如何编写智能合约的控制流语句,如if-else、for循环,以及如何处理异常。 ...

    Solidity编程基础(英文epub版)

    Solidity是一种面向合约的语言,其语法受JavaScript高度影响,旨在为以太坊虚拟机编译代码。 《Solidity编程基础》会是一本您理解Solidity编程的指南,让您从以下方面为Ethereum和区块链构建智能合约。 我们首先简要...

    Python-Slither一个Solidity静态分析框架提供了一个API来轻松操作Solidity代码

    通过API,可以实现自定义规则、检查特定合约功能或数据结构,以及获取关于合约的详细信息。例如,可以使用API来获取合约中的函数信息、事件、状态变量、继承关系等,进一步进行定制化的代码分析。 **3. 功能特性** ...

    智能合约投票系统Dapp(truffle + react + solidity)编程作业

    在Dapp中,React作为前端框架,负责展示投票系统的用户界面,处理用户交互,与后端的智能合约进行数据交换。React的组件化开发模式使得代码结构清晰,易于维护。 这个项目中的“Truffle-Ballot-Dapp”可能包含了...

    Solidity基础1

    Solidity基础知识点包括变量声明、数据类型、控制结构、函数、合约结构、事件、 Modifier和Library等。 9. 智能合约安全 智能合约安全是 Solidity语言的重要方面,需要了解 Solidity语言的安全特性和潜在的安全...

    基于FISCO BCOS 开发的solidity 智能合约DEMO

    通过这些DEMO合约,开发者可以学习到如何在FISCO BCOS平台上进行Solidity合约的编写、部署和测试,了解如何处理不同类型的业务逻辑和数据操作。同时,它们也可以作为实际项目开发的参考,帮助解决实际问题。在实践中...

    solidity-linked-list:一个实用程序库,用于在Solidity项目中使用排序的链表数据结构

    团结链表 一个实用程序库,用于在Solidity项目中使用排序的链表数据结构。安装npm install solidity-linked-list用法pragma solidity ^ 0 . 8 . 0 ;import "solidity-linked-list/contracts/StructuredLinkedList....

    Solidity中的事件和日志

    索引参数通常是有限的,最多可以有三个,它们在日志中占据特殊位置,使查找和过滤事件变得高效。例如,在上面的例子中,`oldNumber` 和 `newNumber` 被标记为索引参数,使得在查询历史记录时,可以快速定位到特定的...

    智能合约编写之Solidity的高级特性

    同时,正确地修饰函数和变量的类型,可给合约内部数据提供不同级别的保护,以防止程序中非预期的操作导致数据产生错误;还能提升代码的可读性与质量,减少误解和bug;更有利于优化合约执行的成本,提升链上资源的...

    solidity

    3. **类型系统**:Solidity支持多种数据类型,如`uint`(无符号整数)、`int`(有符号整数)、`address`(账户地址)、`bool`(布尔值)等,以及固定大小的数组和动态数组。 4. **事件(Events)**:用于与前端应用...

    solidity基础学习材料

    对solidity的编译环境、基础语法进行介绍,包括数据类型、状态变量与临时变量、block对象和msg对象、函数和函数修饰符、数组、mapping、自定义结构、事务控制与异常处理、自定义修饰符、storage与memory等进行全面...

    使用solidity编程语言编写智能合约.pdf

    2. 面向合约:它专门设计用来编写智能合约,支持数据类型、函数、事件和访问控制等合约相关的特性。 3. 安全性:考虑到智能合约的安全性至关重要,Solidity提供了多种内置的安全机制,例如防止溢出的运算符和检查...

    编游戏学Solidity

    这里涉及到的知识点包括Solidity的数据类型(如uint、address)、结构体、合约构造函数以及事件(events)的使用,这些都对于记录和追踪游戏状态至关重要。 接下来,你会学习如何实现“僵尸attack人类”的功能。这...

    「漏洞分析」以太坊Solidity未初始化存储指针安全风险浅析 - web安全.zip

    存储指针通常用于指向存储中的位置,如果未经初始化,可能导致对未知位置的数据进行读写操作。 在智能合约中,未初始化的存储指针可能导致以下几种安全风险: 1. **任意数据读取**:一个未初始化的指针可能会无意...

Global site tag (gtag.js) - Google Analytics