`

solidity存储

 
阅读更多
存储:每个账户有一块持久化内存区。将256位字映射到256位字的键值存储区。 在合约中枚举存储是不可能的,且读存储的相对开销很高,修改存储的开销甚至更高。合约只能读写存储区内属于自己的部分。

内存:合约会试图为每一次消息调用获取一块被重新擦拭干净的内存实例。 内存是线性的,可按字节级寻址,但读的长度被限制为256位,而写的长度可以是8位或256位。当访问(无论是读还是写)之前从未访问过的内存字(word)时(无论是偏移到该字内的任何位置),内存将按字进行扩展(每个字是256位)。扩容也将消耗一定的gas。 随着内存使用量的增长,其费用也会增高(以平方级别)。

EVM:不是基于寄存器的,而是基于栈的,因此所有的计算都在一个被称为栈(stack) 的区域执行。栈最大有1024个元素,每个元素长度是一个字(256位)。对栈的访问只限于其顶端,限制方式为:允许拷贝最顶端的16个元素中的一个到栈顶,或者是交换栈顶元素和下面16个元素中的一个。所有其他操作都只能取最顶的两个(或一个,或更多,取决于具体的操作)元素,运算后,把结果压入栈顶。当然可以把栈上的元素放到存储或内存中。但是无法只访问栈上指定深度的那个元素,除非先从栈顶移除其他元素
分享到:
评论

相关推荐

    solidity入门学习——mapping

    一、solidity中,映射的关键字为mapping,首先我们先来定义两个mapping, mapping(address =>uint) idmapping和mapping(uint =>string) namemapping。idmapping用来表示地址变量和整型变量的对应关系,在注册过程中...

    solidity2.pdf

    映射是键值对集合,使用哈希函数存储和检索数据,是Solidity中一种特殊的数据结构。 ### LValues与运算符 涉及LValues的运算符用于赋值和状态改变。在Solidity中,删除运算符可以用来移除状态变量中的数据。 ### ...

    Solidity 官方文档中文版

    **Solidity:以太坊智能合约的首选语言** Solidity是一种专门为以太坊虚拟机(EVM)设计的编程语言,它的出现使得开发者能够编写安全、高效的智能合约,从而参与到去中心化的应用(DApps)开发中。由于其语法与...

    Introducing.Ethereum.and.Solidity

    在Solidity中,开发者可以定义合约,这些合约包含了状态变量(存储在区块链上)、函数(执行特定操作)以及事件(用于与前端应用交互)。 本“Introducing Ethereum Solidity”入门级文档将引导你了解以太坊网络的...

    Solidity开发基础

    ### Solidity开发基础 #### 知识点概览 1. **Solidity语言介绍与历史** 2. **Solidity语法特点** 3. **Solidity数据类型** 4. **Solidity函数定义** 5. **Solidity合约示例** 6. **Solidity中的变量声明** 7. **...

    Solidity教程

    - 字符串常量(String literals):动态长度的字节数组,用于存储文本。 - 十六进制常量(Hexadecimal literals):以0x开头的十六进制数值。 - 枚举(Enums):自定义的有限整数集合。 - 函数类型(Function Types...

    以太坊Solidity未初始化存储指针安全风险浅析.pdf

    本文档《以太坊Solidity未初始化存储指针安全风险浅析》将重点探讨Solidity中一种潜在的安全隐患——未初始化存储指针的安全风险。 ### Solidity未初始化存储指针安全风险 在Solidity中,EVM(以太坊虚拟机)将...

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

    5. `build` 目录:编译后的智能合约和ABI(应用程序二进制接口)存储在这里,前端应用通过ABI与合约交互。 6. `client` 或 `src` 目录:React应用的源代码,包括组件、样式表、路由配置等。 开发过程中,开发者首先...

    Solidity基础1

    状态变量用来存储合约的状态,函数用来执行合约的逻辑,事件用来通知合约的状态变化。 3. 版本标识 版本标识pragma solidity ^0.4;用于指定Solidity语言的版本,以确保合约的兼容性和安全性。在编译合约时,版本...

    基于区块链React.js+Node.js +Solidity+IPFS存储去中心化特性设计营销信用系统源码+详细文档+全部资料

    基于区块链React.js+Node.js +Solidity+IPFS存储去中心化特性设计营销信用系统源码+详细文档+全部资料基于区块链React.js+Node.js +Solidity+IPFS存储去中心化特性设计营销信用系统源码+详细文档+全部资料基于区块链...

    区块链毕业设计 基于React+Solidity+IPFS存储去中心化特性设计营销信用系统源码+项目资料齐全+部署文档 优秀项目

    区块链毕业设计 基于React+Solidity+IPFS存储去中心化特性设计营销信用系统源码+项目资料齐全+部署文档 优秀项目区块链毕业设计 基于React+Solidity+IPFS存储去中心化特性设计营销信用系统源码+项目资料齐全+部署...

    UnorderedKeySet:Solidity CRUD库

    在深入探讨这个库之前,我们先理解一下CRUD操作和Solidity存储管理的基础知识。 CRUD是数据库管理的基本操作,对应于创建、读取、更新和删除数据。在智能合约中,这些操作同样重要,因为它们涉及合约状态的变化。 ...

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

    然而,如同任何编程语言一样,Solidity也存在潜在的安全风险,其中之一便是未初始化的存储指针问题。本文将深入探讨这一主题,以帮助开发者理解和规避可能的安全隐患。 未初始化的存储指针在Solidity中的含义是指在...

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

    在FISCO BCOS平台上,Solidity合约同样可以运行,实现自动执行的合约逻辑,如数据存储、交易处理和业务规则验证。 3. 合约文件解析: - `Table.sol`:可能是一个实现了表格数据结构的智能合约,通常包含对表格的...

    【CryptoZombies – 1 Solidity 教程】013 永久存储变量(storage)和 临时存储变量(memory)

    我们在代码中会经常需要存储变量,有些变量是我们永久存储的,有些则是临时存储的,在solidity中,也是如此。solidity有两种存储变量: 1.storage 变量是永久存储在区块链中的变量。 2.memory 变量是临时存储在...

    solidity-contracts:松散的Solidity代码集合。 临时存储用于Solidity合同的标准库。 该库中的代码只能在符合大都市的网络中运行,并且只能使用Solidity版本0.5.0和更高版本进行编译

    临时存储用于Solidity合同的标准库。 该库中的代码只能在符合大都市的网络中运行,并且只能使用Solidity版本0.5.0及更高版本进行编译。 目录 目的 标准库应提供Solidity库/函数,以执行常见任务,例如使用字符串,...

    Intellij-Solidity-2.3.7.zip

    智能合约是存储在以太坊区块链上的程序,可以自动执行预定的业务逻辑,无需中间人参与。Solidity作为以太坊官方推荐的智能合约语言,使得开发者能够用更接近传统编程语言的方式编写这些合约。 在使用"IntelliJ-...

    存储库包含用于各种空投实现的 Solidity 智能合约

    存储库包含用于各种空投实现的 Solidity 智能合约。空投是区块链项目向用户分发代币的一种流行营销策略,这些合约可以帮助以安全和无需信任的方式自动化该过程。合约以 Solidity(用于以太坊的编程语言)编写.zip

    solidity

    2. **合约**:在Solidity中,所有代码都封装在合约中,合约类似于类,包含了状态变量(存储数据)和函数(执行操作)。例如: ```solidity contract MyContract { uint256 public myNumber; function setNumber...

    10个优化以太坊智能合约gas利用的solidity代码模式

    在以太坊区块链上,Gas被用来补偿矿工为智能合约的存储与执行所提供的算力。目前以太坊的利用在逐渐增长,而交易手续费成本也水涨传告 —— 现在每天的gas成本已经高达数百万美元。随着以太坊生态系统的扩大,...

Global site tag (gtag.js) - Google Analytics