- 浏览: 762893 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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)
最新评论
EVM 不是基于寄存器的,而是基于栈的,因此所有的计算都在一个被称为 栈(stack) 的区域执行。
栈最大有1024个元素,每个元素长度是一个字(256位)。对栈的访问只限于其顶端,限制方式为:允许拷贝最顶端的16个元素中的一个到栈顶,或者是交换栈顶元素和下面16个元素中的一个。
所有其他操作都只能取最顶的两个(或一个,或更多,取决于具体的操作)元素,运算后,把结果压入栈顶。
当然可以把栈上的元素放到存储或内存中。但是无法只访问栈上指定深度的那个元素,除非先从栈顶移除其他元素。
交易在evm中的执行:
1.收到一个区块时,会遍历里面的所有交易,然后将交易进行applyMessage
2.取出当前的状态数据库,判断交易是转账还是合约交易
3.进到evm后,会先设置一个快照,方便revert后,undo回到快照.
4.对合约进行预编译判定,如果有预编译,则由可以执行合约
5.如果没有预编译,则由解释器对合约进行解释执行,通过本地的jump_table,取出对应的每一个"脚本"的执行函数进行执行操作
6.如果执行成功则将结果和多出的gas返回,否则触发revert,undo回到之前设置的快照
7.创建一个收据, 用来存储中间状态的root, 以及交易使用的gas
8.拿到所有的日志并创建日志的布隆过滤器
栈最大有1024个元素,每个元素长度是一个字(256位)。对栈的访问只限于其顶端,限制方式为:允许拷贝最顶端的16个元素中的一个到栈顶,或者是交换栈顶元素和下面16个元素中的一个。
所有其他操作都只能取最顶的两个(或一个,或更多,取决于具体的操作)元素,运算后,把结果压入栈顶。
当然可以把栈上的元素放到存储或内存中。但是无法只访问栈上指定深度的那个元素,除非先从栈顶移除其他元素。
交易在evm中的执行:
1.收到一个区块时,会遍历里面的所有交易,然后将交易进行applyMessage
2.取出当前的状态数据库,判断交易是转账还是合约交易
3.进到evm后,会先设置一个快照,方便revert后,undo回到快照.
4.对合约进行预编译判定,如果有预编译,则由可以执行合约
5.如果没有预编译,则由解释器对合约进行解释执行,通过本地的jump_table,取出对应的每一个"脚本"的执行函数进行执行操作
6.如果执行成功则将结果和多出的gas返回,否则触发revert,undo回到之前设置的快照
7.创建一个收据, 用来存储中间状态的root, 以及交易使用的gas
8.拿到所有的日志并创建日志的布隆过滤器
发表评论
-
TypeError:ethers_1.getAddress
2024-04-29 10:45 247package.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 248一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
Address
2023-02-23 10:54 5// contracts/Box.sol // SPDX ... -
Address
2023-02-23 10:50 211// contracts/Box.sol // SPDX ... -
Beacon
2023-02-20 11:45 223Beacon a.Implementation地址并不存放在P ... -
UUPS
2023-02-17 16:16 255a.Proxy直接把所有的请求都通过delegatecall丢 ... -
Transparent
2023-02-16 15:44 207Transparent: a.如果Proxy合约发现自己被Pr ... -
string转bytes
2023-02-16 11:04 280const data = Buffer.from(''); ... -
hardhat命令
2023-02-13 09:58 3351.前置准备,运行一个新项目 mkdir my-project ... -
multicall
2023-01-31 20:11 200multicall的solidity调用与ethers.js调 ... -
检查是否是721
2023-01-31 15:18 155// SPDX-License-Identifier: M ... -
EVM操作码
2023-01-25 10:33 2962.栈和内存操作码 2.1 POP:取出栈顶元素 2.2 PU ... -
计算合约地址
2023-01-19 11:27 243EVM会根据发送者地址和nonce经过RLP编码后再进行kec ... -
标准修饰符
2023-01-18 17:03 1561.internal:类似c++中的protected,通过J ... -
ABI编码函数
2023-01-17 10:40 3041. abi.encode()returns(bytes):对 ... -
数据位置
2023-01-17 10:24 1771.函数参数包括返回的参数默认是memory 2.局部变量默认 ... -
随机数
2023-01-17 10:06 196https://www.paradigm.xyz/2023/0 ... -
extcodesize
2023-01-16 11:16 286extcodesize取出的byte code长度,若长度大于 ...
相关推荐
**EVM(Error Vector Magnitude)在MATLAB中的应用与人脸识别** EVM,全称Error Vector Magnitude,是通信系统中衡量信号质量的一个重要指标,主要用于数字通信接收端评估解调性能。在MATLAB中,EVM计算通常用于...
"发射信号调制精度EVM指标分析" 本文介绍了发射信号调制精度的EVM分析方法,较详细地介绍了影响EVM的指标。 一、信号调制精度介绍 调制精度是无线通信发射机的关键参数之一。调制精度由调制误差向量所代表,调制...
"EVM的定义和详细说明" EVM(Error Vector Magnitude)是衡量信号质量的重要指标,它反映了测量信号和参考信号之间的误差情况。EVM 是一种可以全面衡量信号幅度误差和相位误差的指标,在星座图上误差矢量很清楚的...
**WiFi射频电路EVM分析(理论篇+实践篇)** **一、EVM基本概念** EVM(Error Vector Magnitude,误差向量幅度)是评估无线通信系统中调制精度的重要指标,尤其是在数字调制技术中。它衡量的是实际传输的星座点与...
### 5G PDSCH/PUSCH 理论EVM计算详解 #### 一、概述 在5G通信系统中,PDSCH(Physical Downlink Shared Channel,物理下行共享信道)和PUSCH(Physical Uplink Shared Channel,物理上行共享信道)是关键技术之一...
《DCA1000EVM使用指南》 本文档主要介绍了如何使用DCA1000EVM,这是TI公司毫米波雷达传感器评估模块的一部分,适用于AWR1243/xWR1443/xWR1642等产品。DCA1000EVM主要用于数据捕获和分析,其操作流程包括硬件连接、...
WiFi关键参数EVM分析WiFi关键参数EVM分析WiFi关键参数EVM分析WiFi关键参数EVM分析
### 优伦话务机EVM2006A配置手册关键知识点 #### 动作流程图解析 在“优伦话务机EVM2006A配置手册”中,动作流程图提供了呼叫处理的基本逻辑流程。此图详细描述了当用户拨打特定号码时系统如何响应,并引导用户进行...
在无线通信领域,误差矢量幅度(Error Vector Magnitude,EVM)和功率不对称性比(Peak to Average Power Ratio,PAR)是两个关键的性能指标,用于衡量数字调制信号的质量。本压缩包提供了计算这两个参数的MATLAB源...
### EVM电话语音管理系统知识点解析 #### 一、EVM电话系统的概述 EVM(Enterprise Voice Management System)电话系统是一种企业级的电话语音管理系统,它主要用于优化企业的内部通信流程,提高工作效率。根据提供...
EVM(Error Vector Magnitude)错误向量幅度是通信系统中衡量数字信号处理性能的一个重要指标,特别是在无线通信和数字信号处理领域。它用于评估基带解调器的性能,尤其是在多径衰落和干扰环境下。EVM计算的是实际...
《基于Texas Instruments EVM816x的Orcad设计详解》 在电子设计领域,Texas Instruments(TI)是一家享有盛誉的半导体公司,其产品广泛应用于各种领域。EVM816x是一款由TI推出的高性能微控制器评估模块,旨在为...
【标题】"TL6748-EVM开发板源码(公开版)"涉及的核心知识点主要围绕着数字信号处理(DSP)、TMS320C6748 DSP芯片以及EVM(Evaluation Module)开发板。这个开源项目提供了一套完整的软硬件解决方案,帮助开发者深入...
《Ti LDC系列芯片调试软件 Sensing Solutions EVM GUI Tool v1.10.0 (Rev. F):深入解析与应用指南》 在电子工程领域,TI(Texas Instruments)是一家全球知名的半导体公司,其产品涵盖了广泛的领域,包括微控制器...
ADS8383EVM是一款针对特定器件ADS8383设计的评估模块,用于方便工程师评估ADS8383器件的性能。ADS8383是一款高性能、16位、8通道、800 KSPS模拟到数字转换器(ADC),其内部集成了采样保持放大器、参考电压源和串行...
对从IWR1843boost+DCA1000EVM组合获取到的原始数据进行分析,包含1D-FFT、2DFFT和3D-FFT处理及CFAR算法的实现,同时有多普勒补偿部分。最终可以实现目标检测,可以获得range-droppler bin的图像及Angle-range bin的...
《深入理解TLZ7xH-EVM开发板:从PDF原理图到Cadence与AD转换》 TLZ7xH-EVM开发板是一款基于Xilinx Zynq-7000系列的高性能评估平台,其设计复杂度高,集成了丰富的功能模块,是嵌入式系统开发者的重要工具。这份资料...
C6678 EVM 评估板官方FPGA源码 初识TMDXEVM6678L EVM 介绍:TMDXEVM6678L是一块高性能,低成本的独立开发板。 TI多核DSP TMS320C6678 512M DDR3-1333内存 64M NAND FLASH 搞数据存储密度的解决方案,读取是一...