- 浏览: 732032 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1044)
- 数据结构 (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 (64)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
最新评论
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 41package.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 140一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
Address
2023-02-23 10:54 5// contracts/Box.sol // SPDX ... -
Address
2023-02-23 10:50 113// contracts/Box.sol // SPDX ... -
Beacon
2023-02-20 11:45 115Beacon a.Implementation地址并不存放在P ... -
UUPS
2023-02-17 16:16 153a.Proxy直接把所有的请求都通过delegatecall丢 ... -
Transparent
2023-02-16 15:44 120Transparent: a.如果Proxy合约发现自己被Pr ... -
string转bytes
2023-02-16 11:04 183const data = Buffer.from(''); ... -
hardhat命令
2023-02-13 09:58 2301.前置准备,运行一个新项目 mkdir my-project ... -
multicall
2023-01-31 20:11 157multicall的solidity调用与ethers.js调 ... -
检查是否是721
2023-01-31 15:18 106// SPDX-License-Identifier: M ... -
计算合约地址
2023-01-19 11:27 184EVM会根据发送者地址和nonce经过RLP编码后再进行kec ... -
标准修饰符
2023-01-18 17:03 971.internal:类似c++中的protected,通过J ... -
ABI编码函数
2023-01-17 10:40 2161. abi.encode()returns(bytes):对 ... -
数据位置
2023-01-17 10:24 1201.函数参数包括返回的参数默认是memory 2.局部变量默认 ... -
随机数
2023-01-17 10:06 119https://www.paradigm.xyz/2023/0 ... -
extcodesize
2023-01-16 11:16 216extcodesize取出的byte code长度,若长度大于 ... -
Elevator
2023-01-13 10:48 109Elevator.sol // SPDX-License- ...
相关推荐
evm-tracer 跟踪器收集EVM操作码的直方图
标题:EVM中的纯度日期:2018-06-08 10:20 修改时间:2018-06-08 10:20 类别:以太坊标签:以太坊,纯度,操作码弹头:EVM-纯度作者:保罗·豪纳(Paul Hauner) 封面:imgs / opcode-purity / header.jpg 简介:...
注意:此项目未积极维护。...通过每个已编译的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
可以调整每个EVM操作码的用气成本。 如果它们非常昂贵,目前还可以排除一些操作码。 可以排除预编译。 此回购创建了一个草图,以此作为解释的方式,但也使我的想法清晰明了。拱我们有两个证明可以用来证明状态转换...
evm-opcodes:以太坊操作码和指令参考
以太坊反汇编程序从二进制代码到操作码版本 Java代码示例 Disassembler d = new Disassembler("60606040523415600e57600080fd5b603580601b6000396000f300606060"); System.out.println(d.getDisassembledCode()); ...
虚拟机以TypeScript实现的以太坊虚拟机项目状态运行简单的合同,结帐 :fire: 支持〜110个操作码 :smiling_face_with_heart-eyes: 测试再次运行ethersumjs-vm (很快再次geth或parity ) :lady_beetle: 缺乏气体计算 ...
EVM组装实用程序 与EVM(以太坊虚拟机)分叉及其操作码一起使用的实用程序类和函数。 安装 pip install evm-asm 贡献 $ pip install -e .[dev] $ pytest
CREATE2示例如何使用在更新中发布的操作码以太坊的示例。讲解这些教程将向您展示如何预先确定智能合约的链下地址,然后使用来自智能合约的create2进行部署。 Factory.sol使用create2操作码部署其他合同的合同: ...
它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时...
它将EVM字节码程序反编译为对程序的控制流程图进行编码的等效中间表示形式。 此表示删除了所有堆栈操作,从而公开了否则会被遮盖的数据依赖性。 然后,将这些信息与Datalog规范一起馈入分析引擎中,以提取程序属性...
在用Solidity开发以太坊智能合约时,使用汇编可以直接与EVM交互,降低gas开销成本,更精细的...以太坊虚拟机EVM有自己的指令集,该指令集中目前包含了144个操作码,详情参考Geth源代码 这些指令是Solidity抽象出来的
已经有我无法赶上的类似工具它支持(或将要):完毕字节码反汇编控制流程图(静态) 控制流程图(动态/符号) 跟踪用作执行功能的任何操作码的输出/输入的每个单词 进行中/ 部分的区块链导航以太坊虚拟机已实现符号...
仲裁箱 这个 Truffle Arbitrum Box 为您提供了开始为 Arbitrum 的以太... 开发人员会注意到 EVM 和 Arbitrum 链之间的主要区别在于,一些操作码不同,时间和气体等概念的处理方式略有不同。 开发人员可以使用他们的常规
本文主要针对可重入、委托调用、时间戳依赖这 3 种最高频的漏洞类型进行分析,将与其漏洞特征相关的 EVM 底层指令定义为关键指令,并根据不同漏洞的关键指令提出相应的检测规则。 可重入漏洞是智能合约中的一种常见...
两者都为程序员(例如调试)和需要决定下一步操作的程序提供了大量信息。 与布尔值相比,ESC传递的信息集要丰富得多,并且与任意字符串不同,它们能够自动做出React。用户反馈由于状态码是有限的并且事先已知,因此...
以太坊VM的实现,以支持调查纯共识支持的账本(如Juno)中托管EVM和字节码。 VM /字节码解释器 Masala.VM包含主要的解释程序,该解释程序在黄纸规范的Masala.VM进行紧凑的调度,以确保堆栈互操作性正确。 通过利用...