EVM是以太坊的心脏,是一种基于栈的图灵完备的虚拟机,用于执行合约代码。每个节点都运行它来验证交易、状态变更是否一致。它接受的输入是字节码(从Solidity编译而来),执行时会按照opcode指令逐条运行,并维护一套完整的执行环境(栈、内存、存储、Gas、程序计数器)EVM的执行结构(图
该内容主要介绍了 Decipher Club 社区关于以太坊虚拟机(EVM)的一系列文章和学习资源,包括 EVM 的基础知识、智能合约从 Solidity 代码到字节码的转换过程,以及一个 EVM 谜题游戏,旨在帮助 Solidity 开发者更好地理解 EVM 的工作原理。
文章探讨了以太坊合约向 Rollup 发送消息时如何支付 L2 执行成本的问题,对比了 Arbitrum 和 Optimism 的不同方案,并提出了两种新的以太坊opcode提案:EXTRACTGAS(将 gas 转换为 value)和 PAYFROMORIGIN(从交易发起者的 value 中扣除)。这些方案旨在解决现有桥接方案的不足,使得消息发送方无需修改合约接口即可支付 L2 执行成本。
本文解析了 Creation Code,包括 Init Code、Runtime Code 和 Constructor Parameters,并通过空合约示例展示了 Solidity 编译器生成字节码的过程,重点对比了 payable 和 non-payable 构造函数的区别及元数据的处理。