- 浏览: 761949 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
Solidity 提供4种类型的数据位置。
Storage
Memory
Calldata
Stack
Storage:要永久性存储,可以保存在存储区(Storage)。
该存储位置存储永久数据,这意味着该数据可以被合约中的所有函数访问。可以把它视为计算机的硬盘数据,所有数据都永久存储。
保存在存储区(Storage)中的变量,以智能合约的状态存储,并且在函数调用之间保持持久性。与其他数据位置相比,存储区数据位置的成本较高。
Memory
内存位置是临时数据,比存储位置便宜。它只能在函数中访问。
通常,内存数据用于保存临时变量,以便在函数执行期间进行计算。一旦函数执行完毕,它的内容就会被丢弃。你可以把它想象成每个单独函数的内存(RAM)。
Calldata
Calldata是不可修改的非持久性数据位置,所有传递给函数的值,都存储在这里。此外,Calldata是外部函数的参数(而不是返回参数)的默认位置。
Stack
堆栈是由EVM (Ethereum虚拟机)维护的非持久性数据。EVM使用堆栈数据位置在执行期间加载变量。堆栈位置最多有1024个级别的限制。
Storage
Memory
Calldata
Stack
Storage:要永久性存储,可以保存在存储区(Storage)。
该存储位置存储永久数据,这意味着该数据可以被合约中的所有函数访问。可以把它视为计算机的硬盘数据,所有数据都永久存储。
保存在存储区(Storage)中的变量,以智能合约的状态存储,并且在函数调用之间保持持久性。与其他数据位置相比,存储区数据位置的成本较高。
Memory
内存位置是临时数据,比存储位置便宜。它只能在函数中访问。
通常,内存数据用于保存临时变量,以便在函数执行期间进行计算。一旦函数执行完毕,它的内容就会被丢弃。你可以把它想象成每个单独函数的内存(RAM)。
Calldata
Calldata是不可修改的非持久性数据位置,所有传递给函数的值,都存储在这里。此外,Calldata是外部函数的参数(而不是返回参数)的默认位置。
Stack
堆栈是由EVM (Ethereum虚拟机)维护的非持久性数据。EVM使用堆栈数据位置在执行期间加载变量。堆栈位置最多有1024个级别的限制。
发表评论
-
TypeError:ethers_1.getAddress
2024-04-29 10:45 240package.json 添加:"@nomicfou ... -
solidity
2023-02-25 14:23 12一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
solidity
2023-02-25 14:23 11一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
solidity
2023-02-25 14:23 245一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
Address
2023-02-23 10:54 5// contracts/Box.sol // SPDX ... -
Address
2023-02-23 10:50 209// contracts/Box.sol // SPDX ... -
Beacon
2023-02-20 11:45 221Beacon a.Implementation地址并不存放在P ... -
UUPS
2023-02-17 16:16 253a.Proxy直接把所有的请求都通过delegatecall丢 ... -
Transparent
2023-02-16 15:44 204Transparent: a.如果Proxy合约发现自己被Pr ... -
string转bytes
2023-02-16 11:04 278const data = Buffer.from(''); ... -
hardhat命令
2023-02-13 09:58 3331.前置准备,运行一个新项目 mkdir my-project ... -
multicall
2023-01-31 20:11 200multicall的solidity调用与ethers.js调 ... -
检查是否是721
2023-01-31 15:18 154// SPDX-License-Identifier: M ... -
EVM操作码
2023-01-25 10:33 2932.栈和内存操作码 2.1 POP:取出栈顶元素 2.2 PU ... -
计算合约地址
2023-01-19 11:27 243EVM会根据发送者地址和nonce经过RLP编码后再进行kec ... -
标准修饰符
2023-01-18 17:03 1551.internal:类似c++中的protected,通过J ... -
ABI编码函数
2023-01-17 10:40 3021. abi.encode()returns(bytes):对 ... -
数据位置
2023-01-17 10:24 1761.函数参数包括返回的参数默认是memory 2.局部变量默认 ... -
随机数
2023-01-17 10:06 195https://www.paradigm.xyz/2023/0 ... -
extcodesize
2023-01-16 11:16 283extcodesize取出的byte code长度,若长度大于 ...
相关推荐
java后台 预处理 solidity数据,签名,验证,查询,ens解析
1. 数据位置的类型 2. 默认数据位置 3. 数据位置间相互转换
数据位置指定了数据存储的位置(如内存、存储或调用数据),对于智能合约的性能和安全有重要影响。 ### 映射 映射是键值对集合,使用哈希函数存储和检索数据,是Solidity中一种特殊的数据结构。 ### LValues与...
在以太坊智能合约开发中,处理字符串拼接是一个常见的...通过理解Solidity的数据类型和内存管理,结合适当的第三方库和最新版本的Solidity特性,开发者可以有效地实现字符串拼接,并编写出安全、高效的智能合约代码。
3. **Solidity数据类型** 4. **Solidity函数定义** 5. **Solidity合约示例** 6. **Solidity中的变量声明** 7. **Solidity高级功能** #### 详细解释 **1. Solidity语言介绍与历史** Solidity是一种专门为以太坊...
Solidity提供了一系列的数据类型,包括基本类型(如uint、int、bool等)、地址类型(address)、固定大小的数组和动态数组、映射(mapping)以及合约类型。映射是一种非常特殊的类型,它允许键值对的存储,但不支持...
在Solidity部分,你将学习到如何定义和操作基本数据类型,如 uint、int、bool、address,以及更复杂的数据结构如数组和映射。文档还会介绍如何编写智能合约的控制流语句,如if-else、for循环,以及如何处理异常。 ...
Solidity是一种面向合约的语言,其语法受JavaScript高度影响,旨在为以太坊虚拟机编译代码。 《Solidity编程基础》会是一本您理解Solidity编程的指南,让您从以下方面为Ethereum和区块链构建智能合约。 我们首先简要...
通过API,可以实现自定义规则、检查特定合约功能或数据结构,以及获取关于合约的详细信息。例如,可以使用API来获取合约中的函数信息、事件、状态变量、继承关系等,进一步进行定制化的代码分析。 **3. 功能特性** ...
在Dapp中,React作为前端框架,负责展示投票系统的用户界面,处理用户交互,与后端的智能合约进行数据交换。React的组件化开发模式使得代码结构清晰,易于维护。 这个项目中的“Truffle-Ballot-Dapp”可能包含了...
Solidity基础知识点包括变量声明、数据类型、控制结构、函数、合约结构、事件、 Modifier和Library等。 9. 智能合约安全 智能合约安全是 Solidity语言的重要方面,需要了解 Solidity语言的安全特性和潜在的安全...
通过这些DEMO合约,开发者可以学习到如何在FISCO BCOS平台上进行Solidity合约的编写、部署和测试,了解如何处理不同类型的业务逻辑和数据操作。同时,它们也可以作为实际项目开发的参考,帮助解决实际问题。在实践中...
团结链表 一个实用程序库,用于在Solidity项目中使用排序的链表数据结构。安装npm install solidity-linked-list用法pragma solidity ^ 0 . 8 . 0 ;import "solidity-linked-list/contracts/StructuredLinkedList....
索引参数通常是有限的,最多可以有三个,它们在日志中占据特殊位置,使查找和过滤事件变得高效。例如,在上面的例子中,`oldNumber` 和 `newNumber` 被标记为索引参数,使得在查询历史记录时,可以快速定位到特定的...
同时,正确地修饰函数和变量的类型,可给合约内部数据提供不同级别的保护,以防止程序中非预期的操作导致数据产生错误;还能提升代码的可读性与质量,减少误解和bug;更有利于优化合约执行的成本,提升链上资源的...
3. **类型系统**:Solidity支持多种数据类型,如`uint`(无符号整数)、`int`(有符号整数)、`address`(账户地址)、`bool`(布尔值)等,以及固定大小的数组和动态数组。 4. **事件(Events)**:用于与前端应用...
对solidity的编译环境、基础语法进行介绍,包括数据类型、状态变量与临时变量、block对象和msg对象、函数和函数修饰符、数组、mapping、自定义结构、事务控制与异常处理、自定义修饰符、storage与memory等进行全面...
2. 面向合约:它专门设计用来编写智能合约,支持数据类型、函数、事件和访问控制等合约相关的特性。 3. 安全性:考虑到智能合约的安全性至关重要,Solidity提供了多种内置的安全机制,例如防止溢出的运算符和检查...
这里涉及到的知识点包括Solidity的数据类型(如uint、address)、结构体、合约构造函数以及事件(events)的使用,这些都对于记录和追踪游戏状态至关重要。 接下来,你会学习如何实现“僵尸attack人类”的功能。这...
存储指针通常用于指向存储中的位置,如果未经初始化,可能导致对未知位置的数据进行读写操作。 在智能合约中,未初始化的存储指针可能导致以下几种安全风险: 1. **任意数据读取**:一个未初始化的指针可能会无意...