首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Footprint Analytics

    EVM Gas 分析

    EVM 上进行每笔交易都需要矿工付出资源执行,因此用户必须支付一定的费用给矿工作为劳动的报酬。Gas 费就是用户进行交易所需要支付的费用。Gas 如何提供? 以太坊上支付 gas fee 的使用的是其原生代币 ETH,同理在 EVM 链上进行交易基本都需要先在钱包中兑换出足够足够的原生代币(如 ETH)才能进行。 可以利用 Footprint Analytics 的趋势图了解到 EVM 链上特定时间段的 gas 涨幅,为用户节约不必要的支出。除了看近期 gas 的波动情况,通过时段分析也可为交易者节约费用。 同样是 EVM 的其他公链,也可以进行比较,选择一个 gas fee 消耗低的公链进行交易也不妨是一个明智的选择。 由于 EVM 上交易的特性,每笔交易都需要消耗 gas 费,通过数据对 gas 进行分析,了解目前的形式,对于交易频繁的用户可以是必不可少的功课。

    1.1K20编辑于 2023-02-02
  • 来自专栏luzhiyao

    EVM兼容思路

    EVM结构.png 对于EVM虚拟机,觉得可以从两方面进行抽象,实现拓展; VM层进行抽象,从根本上来说,EVM只对外暴漏了两个方法调用Call、Create. type VM interface{

    1K10编辑于 2022-09-26
  • 来自专栏深入浅出区块链技术

    EVM 学习手册

    ---- Jordan McKinney - EVM 解释 从单个合约层面和以太坊的整体世界状态深入解释 EVM 的视频。 EVM 解释(Youtube)[2] Andreas Antonopoulos - 以太坊虚拟机 涵盖了 EVM 如何工作的基本原理,并展示了 EVM 如何与协议层互动。 深入探索 一组博客文章,深入 EVM 的特定部分,让你从 solidity 代码到 EVM 的操作代码。 EVM 图解[18] EVM 代码 -- 操作码 的 EVM Playground 一个互动的网站和 EVM Playground。对 EVM 开发者来说是最有价值的工具之一。 https://evm.codes Fvictorio - EVM Puzzles GitHub 上的交互式 EVM 谜题集,这些谜题可以帮助你巩固从其他资源中学到的知识。

    89320编辑于 2022-11-07
  • 来自专栏信且诚心之动

    常见EVM错误

    Returned error: {"jsonrpc":"2.0","error":"[ethjs-query] while formatting outputs from RPC '{\"value\":{\"code\":-32603,\"data\":{\"code\":-32000,\"message\":\"transaction underpriced\"}}}'","id":4815365370376783}

    44310编辑于 2023-12-18
  • 来自专栏随意记录

    EVM 源码解析

    1 EVM以太坊虚拟机 (Ethereum Virtual Machine, EVM) 负责执行交易和更新区块链状态。 EVM 的位置:图片EVM 架构:图片EVM 由程序计数器 (Program Counter)、堆栈 (Stack)、内存 (Memory) 和外部存储(Storage)组成。 启动的每个 EVM 实例都是为了运行一段字节码。因此,字节码就像是 EVM 实例的 ROM,是不能修改的。一个合约可以调用另一个合约,每次调用都会导致一个新的 EVM 实例化,如下图所示。 EVM 运行:evm.transact().unwrap();创建 EvmImpl。 (EVM)What is the Ethereum Virtual Machine (EVM)?

    1.7K20编辑于 2023-02-09
  • 来自专栏信且诚心之动

    概念复习二——EVM

    在复习evm之前,首先先做一个主流区块链平台的比对。 二、EVM EVM(Ethereum Virtual Machine)是以太坊虚拟机的缩写,是以太坊区块链平台的核心组成部分之一。 EVM是一个基于栈的虚拟机,用于在以太坊网络上执行智能合约的字节码。 EVM EVM的几个关键方面: (一)栈架构 EVM是基于栈的虚拟机,使用一个栈来保存和处理操作数。 通过栈结构,EVM实现了智能合约的计算和状态转换。 (二)字节码 EVM的程序由一系列字节码指令组成,这些指令用于执行智能合约的操作。 (五)燃气模型 EVM引入了燃气(Gas)的概念,用于控制智能合约的执行成本和资源消耗。每个EVM指令都有一个相关的燃气成本,执行合约时会消耗相应的燃气。

    66120编辑于 2023-10-16
  • 来自专栏Ms08067安全实验室

    Vulhub系列:EVM 1

    0x00 技术点 Nmap端口扫描、目录发现、漏洞探测 Wpscan用户枚举、密码爆破 Meterpreter shell 权限提升 0x01 环境搭建 靶机信息: Name: EVM: 1 Date :30:bc:cb 1 60 PCS Systemtechnik GmbH Kali机器的IP为 192.168.56.101 ,以上探测到的 192.168.56.100就是EVM 排查一遍之后,发现是EVM虚拟机导入的时候新增NAT网卡致使网络设置未生效,嘤嘤嘤 重新导入,重新以上步骤 netdisvover -i eth0 192.168.56.1 0a:00:27:00 PCS Systemtechnik GmbH 192.168.56.103 08:00:27:6d:a5:91 3 180 PCS Systemtechnik GmbH EVM 0x05 权限提升 以上步骤,我们已经获得了EVM的普通用户shell,接下来做提权操作,首先提权 查看关键文件 查看内核版本:uname -r → searchsploit 查看计划任务:crontab

    1K20发布于 2019-12-02
  • 来自专栏深入浅出区块链技术

    EVM 设计原理

    本文作者:learnerL[1] 前言 在阅读这篇文章之前,请您先阅读初步理解以太坊虚拟机[2]和以太坊的数据组织[3],它将会介绍 EVM 的基本知识,帮助您形成基本的认识。 非常推荐读者观看这个视频:EVM: From Solidity to byte code, memory and storage[5] ,这是配套的 PDF[6]。 EVM 设计原理 以太坊可以抽象的分成两部分,一部分是状态,另外一部分是用于改变状态的 EVM。 交易的处理和执行 交易是以太坊账户之间通信的最基本的方式,可以视作是签名后发送给 EVM 的执行指令。每一笔交易都会造成以太坊状态的改变以及产生临时存储的状态。 init:一个不限制大小的字节数组,用来指定账户初始化程序的 EVM 代码。它仅会在合约创建时被执行一 次,然后就会被丢弃,不会存在链上。

    78310编辑于 2023-01-09
  • 来自专栏cwl_Java

    快速学习-EVM数据存储

    EVM数据存储 Storage 每个账户都有一块持久化的存储空间,称为 storage,这是一个将256位字映射到256位字的key-value 存储区,可以理解为合约的数据库 永久储存在区块链中,由于会永久保存合约状态变量 gas 开销也最大 Memory(内存) 每一次消息调用,合约会临时获取一块干净的内存空间 生命周期仅为整个方法执行期间,函数调用后回收,因为仅保存临时变量,故读写 gas 开销较 小 Stack(栈) EVM

    66040发布于 2020-04-11
  • 来自专栏深入浅出区块链技术

    通过逆向和调试深入EVM #5 - EVM如何处理 ifelseforfunctions

    像 if/for 或嵌套函数这样的语句是如何被 EVM 在汇编中处理的? 让我们来了解一下! 因此,我们可以很容易地推断出,如果堆栈中的第一个参数是 0,那么 EVM 将跳到 4b(十进制的 75),否则 EVM 将继续执行流程。 在指令 68 和 74 之间,我们已经知道发生了什么:EVM 将 4 存储在槽号 0 中。在指令 75 和 81 之间的代码相同:EVM 将 9 存储在槽号 0 中。 一旦完成,EVM JUMP 到另一个位置并结束执行。 如果小于,EVM 就跳到第 72 字节的 6c(十进制的 108),如果不是,EVM 就继续。 很明显,0xa 不小于 0x0,所以在第 73 字节继续执行。

    70620编辑于 2023-01-09
  • 来自专栏cwl_Java

    快速学习-EVM指令集

    EVM指令集 所有的指令都是针对"256位的字(word)"这个基本的数据类型来进行操作 具备常用的算术、位、逻辑和比较操作,也可以做到有条件和无条件跳转 合约可以访问当前区块的相关属性,比如它的块高度和时间戳

    72810发布于 2020-04-13
  • 来自专栏深入浅出区块链技术

    逆向 EVM - 解析原始Calldata数据

    译文出自:登链翻译计划[1] 译者:翻译小组[2] 校对:Tiny 熊[3] 你可能想知道如何破译和读取 evm 的 calldata,然后试图读取以太坊智能合约的交易 calldata,EVM(和其他 Calldata 是我们发送给函数的编码参数,在这里是发送给以太坊虚拟机(EVM)上的智能合约。每块 calldata 有 32 个字节长(或 64 个字符)。 我们用它来告诉 EVM,我们正在向该函数发送我们的 calldata。这就是 UniswapV2 如何实现闪电兑换。 还有abi.encodePacked(...) 从这里开始的下一步是学习如何读取字节码,以便在最底层了解 EVM(然后一切都变得开源了>:D)。 原文链接:https://degatchi.com/articles/reading-raw-evm-calldata 参考资料 [1] 登链翻译计划: https://github.com/lbc-team

    1.8K20编辑于 2023-01-09
  • 来自专栏深入浅出区块链技术

    破解以太坊 EVM 谜题1

    我们克隆 evm-puzzles 代码库,安装依赖后,使用npx hardhat play开始闯关: 第一题:要求我们输入发送多少金额。 解决方案 为了解决这个问题,我们必须调用合约,将msg.value等于8,通过这样做CALLVALUE将推到 EVM 堆栈8,该堆栈将被JUMP操作码弹出。 结果如下: 你可以在 EVM Codes 网站上模拟一下谜题 1 的解决方案[5]。 /people/11048 [2] JUMP: https://www.evm.codes/#56 [3] 代码: https://www.evm.codes/about [4] CALLVALUE: https://www.evm.codes/#34

    49730编辑于 2022-11-07
  • 来自专栏深入浅出区块链技术

    以太坊合约 ABI 和 EVM 字节码

    本文作者:影无双[1] 本文从理论和命令行实践解释以太坊合约 ABI 和 EVM 字节码 介绍 本文解释以太坊中的合约 ABI[2] 和 EVM[3] 字节码。 字节码和 ABI 由于以太坊使用 EVM 作为网络的核心组件,因此用高级语言编写的智能合约代码需要编译成 EVM 字节码才能运行。 EVM 字节码是 EVM 上的可执行代码,合约 ABI 是与 EVM 字节码交互的接口。 EVM 是虚拟机,介于操作系统和应用层之间,以减少对操作系统的依赖。多亏了 EVM,以太坊智能合约几乎可以在任何计算机上运行。 object是一个 EVM 字节码。

    1.7K20编辑于 2022-05-25
  • 来自专栏深入浅出区块链技术

    专栏开篇:破解以太坊 EVM 谜题

    今天准备新开一个专栏,探索一下 EVM, 这是一个 EVM 谜题系列,EVM 谜题[3]是一个由 Franco Victorio (@fvictorio_nan[4])开发的项目,如果你正想学习以太坊 如果你不熟悉以太坊 EVM,我建议你从EVM 学习手册[5]开始学习,手册里它包含了大量关于 EVM 的视频和文章,可能读起来不轻松,但它们真的是很好材料。 破解 EVM 谜题 1[10] 破解 EVM 谜题 2[11] 破解 EVM 谜题 3[12] 破解 EVM 谜题 4[13] 破解 EVM 谜题 5[14] 破解 EVM 谜题 6[15] 破解 EVM 谜题 7[16] 破解 EVM 谜题 8[17] 破解 EVM 谜题 9[18] 破解 EVM 谜题 10[19] 相信通过 10 篇文章,我们将对 EVM 有更深入的了解。 /blog/evm-puzzle-4-solution [14] 破解 EVM谜题5: https://stermi.xyz/blog/evm-puzzle-5-solution [15] 破解 EVM

    45210编辑于 2022-11-07
  • 来自专栏cwl_Java

    快速学习-以太坊EVM和账户

    EVM和账户 以太坊中有两类账户: 外部账户 和 合约账户,它们共用EVM中同一个地址空间 无论帐户是否存储代码,这两类账户对 EVM 来说处理方式是完全一样的 每个账户在EVM中都有一个键值对形式的持久化存储

    58310发布于 2020-04-10
  • 来自专栏云深之无迹

    通用仪表放大器 EVM-Layout

    PCB学习-差分走线 通用仪表放大器 EVM 使用的是JLC的专业版,普通版的功能确实是有点问题,而且很影响体验,还有就是建议两快屏幕,一块真的不够用。

    44310编辑于 2024-08-20
  • 来自专栏深入浅出区块链技术

    通过调试理解EVM #3 :存储布局如何工作?

    在指令 48 和 54 之间,EVM 在存储槽 0保存 1 在指令 55 和 60 之间,EVM 在存储槽 1 保存2。在指令 61 和 64 之间,EVM 在存储槽 2 保存3。 这是因为在modify2()中,EVM 修改了balance2。 数组是如何在 EVM 中存储的?像结构体或变量一样? 在第 61指令,EVM 在地址 0 处 MSTORE 0,我们将在后面看到原因。 在第 108 指令,EVM SSTORE结果(是 2)在槽 0,这就是数组的新长度。 在第 112 指令,EVM 将 1 添加到 Hash 中,这是分配给values[1] 的槽。

    70720编辑于 2023-01-09
  • 来自专栏终有链响

    常见的 EVM 版本以及它们的区别

    EVM(以太坊虚拟机)版本的演进是为了引入新的特性和改进以太坊平台的安全性、效率和功能性。每个版本通常伴随着以太坊网络的硬分叉,这是以太坊协议的重大升级。 以下是一些常见的EVM版本及其主要区别: Homestead (2016年3月): Homestead是以太坊的第一个稳定版本,引入了智能合约和去中心化应用的基本功能。 每个EVM版本都有其特定的目标和改进,从安全性、性能到经济模型的调整,这些变化都反映了以太坊社区对网络未来发展的愿景。随着技术的发展,EVM将继续进化,以适应不断变化的需求和挑战。

    39710编辑于 2024-07-29
  • 来自专栏深入浅出区块链技术

    如何调试EVM智能合约 #2 :部署智能合约

    事实上,在执行这条指令后,如果我们在调试器中查看 EVM 的内存状态,会发现内存从0x00 到 0x3f被填满。 这是我们存储在 EVM 内存中的智能合约的代码。 如果减去的数字不相等,EVM 就会回退,否则执行流程继续,EVM 跳转到 3b(十进制的 59)。 80 和 c0 是存储在内存中的 2 个参数的开始偏移和结束偏移。 接下来,在指令 64 处,我们需要加载第二个参数,因为 EVM 是按 32 个字节(20)的十六进制分组工作的,EVM 必须在 80+20=a0 处加载内存,以获得第二个参数。 这就是为什么 EVM 在堆栈中推入 20,并在堆栈中交换一些数值,以使 80 成为第一个。 EVM 在指令 68 处加上这两个数字,等于 a0,并将它们加载到堆栈中。 mload(0x80) mload(0xa0) 之后,EVM 跳转到指令 30,堆栈中有 1 和 2,EVM 继续执行,将余额设置为 9(在第 30 和 40 指令之间执行构造函数)并将合约代码复制到区块链中

    98620编辑于 2022-11-07
领券