- 浏览: 761395 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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)
最新评论
2.栈和内存操作码
2.1 POP:取出栈顶元素
2.2 PUSH:向栈顶加入数据(可以直接在后边跟一个数字来指定要加入的字节数,取值范围为1到32,即最大为一个"字")
2.3 MLOAD:从内存中取出一个"字"
2.4 MSTORE:存储一个"字"到内存中
2.5 JUMP:修改程序计数器(PC)的位置
2.6 PC:程序计数器(program counter)
2.7 MSIZE:目前已激活(已使用)的内存大小(以"字"为单位)
2.8 GAS:可用的gas数量(当前交易内)
2.9 DUP:复制栈里的元素到栈顶(可以直接在后边跟一个数字来指定要复制的元素,比如DUP6可以复制栈顶数第6个元素到栈顶,后边跟的数字最大为16).
2.10 SWAP:交换栈里的元素(可以直接在后边跟一个数字来指定要交换的元素,比如SWAP6可以将栈中的第7个元素与栈顶元素交换,后边跟的数字大最为16).
3.通用系统操作码
3.1 CREATE:创建账户
3.2 CALL:向某个账户发起一个消息调用
3.3 RETURN:终止执行,并返回输出数据
3.4 REVERT:终止执行,并复原(回退)状态改动
3.5 SELFDESTRUCT:终止执行,并将账户加入当前交易的自毁集合
4.算术操作码
4.1 ADD:加法
4.2 MUL:乘法
4.3 SUB:减法
4.4 DIV:整数除法
4.5 SDIV:有符号整数除法
4.6 MOD:模运算
4.7 SMOD:有符号模运算
4.8 ADDMOD:先做加法再取模
4.9 MULMOD:先做乘法再取模
4.10 EXP:指数运算
4.11 STOP:终止操作
5.环境数据操作码
5.1 ADDRESS:当前程序执行所基于的账户地址
5.2 BALANCE:取得指定账户的余额
5.3 CALLVALUE:取得当前交易的转账金额(交易数据中的value字段值)
5.4 ORIGIN:取得最初引发这次执行的原始交易的发送者地址
5.5 CALLER:当前程序执行的直接调用者
5.6 CODESIZE:当前运行环境的代码长度
5.7 GASPRICE:当前运行环境的gasPrice
5.8 EXTCODESIZE:指定账户的代码长度
5.9 RETURNDATACOPY:复制前一个内存调用的输出数据
发表评论
-
TypeError:ethers_1.getAddress
2024-04-29 10:45 235package.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 243一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
Address
2023-02-23 10:54 5// contracts/Box.sol // SPDX ... -
Address
2023-02-23 10:50 206// contracts/Box.sol // SPDX ... -
Beacon
2023-02-20 11:45 219Beacon a.Implementation地址并不存放在P ... -
UUPS
2023-02-17 16:16 251a.Proxy直接把所有的请求都通过delegatecall丢 ... -
Transparent
2023-02-16 15:44 203Transparent: a.如果Proxy合约发现自己被Pr ... -
string转bytes
2023-02-16 11:04 277const data = Buffer.from(''); ... -
hardhat命令
2023-02-13 09:58 3301.前置准备,运行一个新项目 mkdir my-project ... -
multicall
2023-01-31 20:11 198multicall的solidity调用与ethers.js调 ... -
检查是否是721
2023-01-31 15:18 153// SPDX-License-Identifier: M ... -
计算合约地址
2023-01-19 11:27 241EVM会根据发送者地址和nonce经过RLP编码后再进行kec ... -
标准修饰符
2023-01-18 17:03 1541.internal:类似c++中的protected,通过J ... -
ABI编码函数
2023-01-17 10:40 3001. abi.encode()returns(bytes):对 ... -
数据位置
2023-01-17 10:24 1751.函数参数包括返回的参数默认是memory 2.局部变量默认 ... -
随机数
2023-01-17 10:06 192https://www.paradigm.xyz/2023/0 ... -
extcodesize
2023-01-16 11:16 281extcodesize取出的byte code长度,若长度大于 ... -
Elevator
2023-01-13 10:48 202Elevator.sol // SPDX-License- ...
相关推荐
**EVM-Tracer:深入理解以太坊虚拟机操作码直方图** EVM-Tracer 是一个用于收集和分析以太坊虚拟机(EVM)操作码执行统计的工具。在区块链开发,特别是以太坊智能合约开发中,EVM 的操作码执行效率对合约性能至关...
标题:EVM中的纯度日期:2018-06-08 10:20 修改时间:2018-06-08 10:20 类别:以太坊标签:以太坊,纯度,操作码弹头:EVM-纯度作者:保罗·豪纳(Paul Hauner) 封面:imgs / opcode-purity / header.jpg 简介:...
理解EVM操作码对于优化智能合约性能和调试至关重要。 1. 数据加载和存储: - `PUSHx`系列:将常量值推入栈顶,x代表推入的字节数,如`PUSH1`到`PUSH32`。 - `DUPx`系列:复制栈顶的x个元素并将副本推回栈顶。 - ...
注意:此项目未积极维护。...通过每个已编译的EVM操作码(而不是每个分支段)的燃气计量将EVM转换为WAST $ bin/evm2wasm.js -e `evm_bytecode_file` -o `wasm_output_file` --wast --ch
EVM字节码反编译器 解释器和反编译器,以及用于从字节码中以编程方式提取信息的其他几种工具。 用法 npm我evm 产品特点 将字节码转换为操作码 ...getJumpDestinations() -从JUMPDEST操作码获取程序计数器数
如今,在EVM上处理智能合约有很多限制。 由于EVM平台是一个非常特定于区块链的执行环境,因此编程语言... 作为一种软件指令集体系结构,EVM操作码旨在为社区提供最佳的安全度量,而不是性能。 因此,我们不能假设在x86
EVM字节码转操作码反汇编程序 快速运行: $ echo "0x600035601c52" | python3.6 byte2op.py [0] PUSH1 0:0x00 [2] CALLDATALOAD [3] PUSH1 28:0x1c [5] MSTORE
ArtemisX 支持从源代码或字节码文件开始,通过处理生成 EVM 操作码,然后逐条模拟执行,寻找可能导致漏洞的操作。一旦发现可能的漏洞,它将收集相关信息并进行检测,如果整个执行过程符合漏洞规则,就会判断合约存在...
可以调整每个EVM操作码的用气成本。 如果它们非常昂贵,目前还可以排除一些操作码。 可以排除预编译。 此回购创建了一个草图,以此作为解释的方式,但也使我的想法清晰明了。拱我们有两个证明可以用来证明状态转换...
识别码用于区分不同的呼叫或操作。例如,在某些情况下,系统可能会要求用户提供识别码才能访问特定的服务或功能。 #### 自定义操作方式 用户可以根据自己的需求定制系统的操作方式,例如设置特定的按键功能、调整...
通过这款软件,用户可以执行以下操作: 1. **参数配置**:设置电池组的电压、电流和温度限制,这些参数对于确保电池的正常运行至关重要。例如,用户可以根据电池类型和应用需求调整过充、过放、过流和高温保护阈值...
EVM是 Ethereum 区块链上执行智能合约的平台,它执行特定的字节码(ASM,Assembley),因此这个库可能提供了与EVM字节码相关的操作,比如编译、反编译、解析或模拟执行等功能。 当我们解压"evm-asm-0.1.0a0.tar.gz...
- **opcodes.go**:定义了所有操作码(OpCode),每个OpCode对应一种特定的操作。 **指令和操作** EVM的指令集被分为不同的功能组,例如运算、区块操作和加密等。每个指令都与特定的操作函数、gas成本、栈深度验证...
这包括设置拨码开关,如S2、S3、S4、S51和S50,用于设定功能、通讯速率和通讯地址。系统电路板上的指示灯如H1至H10提供了系统状态的实时反馈。接着,调试测头,分三步进行:找到“最大电压”、设定“标准电压”和...
以太坊反汇编程序从二进制代码到操作码版本 Java代码示例 Disassembler d = new Disassembler("60606040523415600e57600080fd5b603580601b6000396000f300606060"); System.out.println(d.getDisassembledCode()); ...
BSL(Boot Strap Loader)是嵌入式系统中的一种低级加载程序,它的主要任务是在系统启动时加载操作系统或者其他高层软件到内存中。在TI的DM642EVM中,BSL源代码对于开发者来说至关重要,因为它允许用户进行固件更新...
本部分将针对【用户手册】EVM-IMX8MM Ubuntu18.04 开发手册 V1.0.pdf的内容,详细解读其提供的知识点。 首先,文档标题为“【用户手册】EVM-IMX8MM Ubuntu18.04 开发手册 V1.0.pdf”,表明这是一份由广州眺望电子...