- 浏览: 768582 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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)
最新评论
存储:每个账户有一块持久化内存区。将256位字映射到256位字的键值存储区。 在合约中枚举存储是不可能的,且读存储的相对开销很高,修改存储的开销甚至更高。合约只能读写存储区内属于自己的部分。
内存:合约会试图为每一次消息调用获取一块被重新擦拭干净的内存实例。 内存是线性的,可按字节级寻址,但读的长度被限制为256位,而写的长度可以是8位或256位。当访问(无论是读还是写)之前从未访问过的内存字(word)时(无论是偏移到该字内的任何位置),内存将按字进行扩展(每个字是256位)。扩容也将消耗一定的gas。 随着内存使用量的增长,其费用也会增高(以平方级别)。
EVM:不是基于寄存器的,而是基于栈的,因此所有的计算都在一个被称为栈(stack) 的区域执行。栈最大有1024个元素,每个元素长度是一个字(256位)。对栈的访问只限于其顶端,限制方式为:允许拷贝最顶端的16个元素中的一个到栈顶,或者是交换栈顶元素和下面16个元素中的一个。所有其他操作都只能取最顶的两个(或一个,或更多,取决于具体的操作)元素,运算后,把结果压入栈顶。当然可以把栈上的元素放到存储或内存中。但是无法只访问栈上指定深度的那个元素,除非先从栈顶移除其他元素
内存:合约会试图为每一次消息调用获取一块被重新擦拭干净的内存实例。 内存是线性的,可按字节级寻址,但读的长度被限制为256位,而写的长度可以是8位或256位。当访问(无论是读还是写)之前从未访问过的内存字(word)时(无论是偏移到该字内的任何位置),内存将按字进行扩展(每个字是256位)。扩容也将消耗一定的gas。 随着内存使用量的增长,其费用也会增高(以平方级别)。
EVM:不是基于寄存器的,而是基于栈的,因此所有的计算都在一个被称为栈(stack) 的区域执行。栈最大有1024个元素,每个元素长度是一个字(256位)。对栈的访问只限于其顶端,限制方式为:允许拷贝最顶端的16个元素中的一个到栈顶,或者是交换栈顶元素和下面16个元素中的一个。所有其他操作都只能取最顶的两个(或一个,或更多,取决于具体的操作)元素,运算后,把结果压入栈顶。当然可以把栈上的元素放到存储或内存中。但是无法只访问栈上指定深度的那个元素,除非先从栈顶移除其他元素
发表评论
-
TypeError:ethers_1.getAddress
2024-04-29 10:45 326package.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 292一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
Address
2023-02-23 10:54 5// contracts/Box.sol // SPDX ... -
Address
2023-02-23 10:50 254// contracts/Box.sol // SPDX ... -
Beacon
2023-02-20 11:45 262Beacon a.Implementation地址并不存放在P ... -
UUPS
2023-02-17 16:16 294a.Proxy直接把所有的请求都通过delegatecall丢 ... -
Transparent
2023-02-16 15:44 244Transparent: a.如果Proxy合约发现自己被Pr ... -
string转bytes
2023-02-16 11:04 316const data = Buffer.from(''); ... -
hardhat命令
2023-02-13 09:58 3741.前置准备,运行一个新项目 mkdir my-project ... -
multicall
2023-01-31 20:11 205multicall的solidity调用与ethers.js调 ... -
检查是否是721
2023-01-31 15:18 170// SPDX-License-Identifier: M ... -
EVM操作码
2023-01-25 10:33 3212.栈和内存操作码 2.1 POP:取出栈顶元素 2.2 PU ... -
计算合约地址
2023-01-19 11:27 266EVM会根据发送者地址和nonce经过RLP编码后再进行kec ... -
标准修饰符
2023-01-18 17:03 1761.internal:类似c++中的protected,通过J ... -
ABI编码函数
2023-01-17 10:40 3251. abi.encode()returns(bytes):对 ... -
数据位置
2023-01-17 10:24 1971.函数参数包括返回的参数默认是memory 2.局部变量默认 ... -
随机数
2023-01-17 10:06 227https://www.paradigm.xyz/2023/0 ... -
extcodesize
2023-01-16 11:16 312extcodesize取出的byte code长度,若长度大于 ...
相关推荐
一、solidity中,映射的关键字为mapping,首先我们先来定义两个mapping, mapping(address =>uint) idmapping和mapping(uint =>string) namemapping。idmapping用来表示地址变量和整型变量的对应关系,在注册过程中...
映射是键值对集合,使用哈希函数存储和检索数据,是Solidity中一种特殊的数据结构。 ### LValues与运算符 涉及LValues的运算符用于赋值和状态改变。在Solidity中,删除运算符可以用来移除状态变量中的数据。 ### ...
**Solidity:以太坊智能合约的首选语言** Solidity是一种专门为以太坊虚拟机(EVM)设计的编程语言,它的出现使得开发者能够编写安全、高效的智能合约,从而参与到去中心化的应用(DApps)开发中。由于其语法与...
在Solidity中,开发者可以定义合约,这些合约包含了状态变量(存储在区块链上)、函数(执行特定操作)以及事件(用于与前端应用交互)。 本“Introducing Ethereum Solidity”入门级文档将引导你了解以太坊网络的...
### Solidity开发基础 #### 知识点概览 1. **Solidity语言介绍与历史** 2. **Solidity语法特点** 3. **Solidity数据类型** 4. **Solidity函数定义** 5. **Solidity合约示例** 6. **Solidity中的变量声明** 7. **...
- 字符串常量(String literals):动态长度的字节数组,用于存储文本。 - 十六进制常量(Hexadecimal literals):以0x开头的十六进制数值。 - 枚举(Enums):自定义的有限整数集合。 - 函数类型(Function Types...
本文档《以太坊Solidity未初始化存储指针安全风险浅析》将重点探讨Solidity中一种潜在的安全隐患——未初始化存储指针的安全风险。 ### Solidity未初始化存储指针安全风险 在Solidity中,EVM(以太坊虚拟机)将...
5. `build` 目录:编译后的智能合约和ABI(应用程序二进制接口)存储在这里,前端应用通过ABI与合约交互。 6. `client` 或 `src` 目录:React应用的源代码,包括组件、样式表、路由配置等。 开发过程中,开发者首先...
状态变量用来存储合约的状态,函数用来执行合约的逻辑,事件用来通知合约的状态变化。 3. 版本标识 版本标识pragma solidity ^0.4;用于指定Solidity语言的版本,以确保合约的兼容性和安全性。在编译合约时,版本...
基于区块链React.js+Node.js +Solidity+IPFS存储去中心化特性设计营销信用系统源码+详细文档+全部资料基于区块链React.js+Node.js +Solidity+IPFS存储去中心化特性设计营销信用系统源码+详细文档+全部资料基于区块链...
区块链毕业设计 基于React+Solidity+IPFS存储去中心化特性设计营销信用系统源码+项目资料齐全+部署文档 优秀项目区块链毕业设计 基于React+Solidity+IPFS存储去中心化特性设计营销信用系统源码+项目资料齐全+部署...
在深入探讨这个库之前,我们先理解一下CRUD操作和Solidity存储管理的基础知识。 CRUD是数据库管理的基本操作,对应于创建、读取、更新和删除数据。在智能合约中,这些操作同样重要,因为它们涉及合约状态的变化。 ...
然而,如同任何编程语言一样,Solidity也存在潜在的安全风险,其中之一便是未初始化的存储指针问题。本文将深入探讨这一主题,以帮助开发者理解和规避可能的安全隐患。 未初始化的存储指针在Solidity中的含义是指在...
在FISCO BCOS平台上,Solidity合约同样可以运行,实现自动执行的合约逻辑,如数据存储、交易处理和业务规则验证。 3. 合约文件解析: - `Table.sol`:可能是一个实现了表格数据结构的智能合约,通常包含对表格的...
我们在代码中会经常需要存储变量,有些变量是我们永久存储的,有些则是临时存储的,在solidity中,也是如此。solidity有两种存储变量: 1.storage 变量是永久存储在区块链中的变量。 2.memory 变量是临时存储在...
临时存储用于Solidity合同的标准库。 该库中的代码只能在符合大都市的网络中运行,并且只能使用Solidity版本0.5.0及更高版本进行编译。 目录 目的 标准库应提供Solidity库/函数,以执行常见任务,例如使用字符串,...
智能合约是存储在以太坊区块链上的程序,可以自动执行预定的业务逻辑,无需中间人参与。Solidity作为以太坊官方推荐的智能合约语言,使得开发者能够用更接近传统编程语言的方式编写这些合约。 在使用"IntelliJ-...
存储库包含用于各种空投实现的 Solidity 智能合约。空投是区块链项目向用户分发代币的一种流行营销策略,这些合约可以帮助以安全和无需信任的方式自动化该过程。合约以 Solidity(用于以太坊的编程语言)编写.zip
2. **合约**:在Solidity中,所有代码都封装在合约中,合约类似于类,包含了状态变量(存储数据)和函数(执行操作)。例如: ```solidity contract MyContract { uint256 public myNumber; function setNumber...
在以太坊区块链上,Gas被用来补偿矿工为智能合约的存储与执行所提供的算力。目前以太坊的利用在逐渐增长,而交易手续费成本也水涨传告 —— 现在每天的gas成本已经高达数百万美元。随着以太坊生态系统的扩大,...