买币
行情
现货
合约BTC
理财
活动中心
福利中心
更多
0 费狂欢节
EVM(以太坊虚拟机): 什么是 EVM?EVM(以太坊虚拟机)是 Ethereum 上用于处理交易并运行智能合约代码的执行环境。它相当于一台共享的虚拟计算机,全球各地的 Ethereum 执行客户端都遵循同一套规则。无论用户是转账代币、通过去中心化应用兑换加密货币、创建 NFT、向借贷协议提供抵押品,还是调用其他智能合约,EVM 都会计算相应操作的结果。EVM 并非一台实体机器或服务器。相反,每个参与其中的 EthereEVM(以太坊虚拟机): 什么是 EVM?EVM(以太坊虚拟机)是 Ethereum 上用于处理交易并运行智能合约代码的执行环境。它相当于一台共享的虚拟计算机,全球各地的 Ethereum 执行客户端都遵循同一套规则。无论用户是转账代币、通过去中心化应用兑换加密货币、创建 NFT、向借贷协议提供抵押品,还是调用其他智能合约,EVM 都会计算相应操作的结果。EVM 并非一台实体机器或服务器。相反,每个参与其中的 Ethere

EVM(以太坊虚拟机)

2026/10/14 17:15
#Intermediate
Humanity
H$0.0555-2.09%
SynFutures
F$0.003038-2.69%
AINFT
NFT$0.000000237-2.54%
以太坊
ETH$2,439.49-2.78%
Smart Blockchain
SMART$0.004404-0.72%

什么是 EVM?

EVM(以太坊虚拟机)是 Ethereum 上用于处理交易并运行智能合约代码的执行环境。它相当于一台共享的虚拟计算机,全球各地的 Ethereum 执行客户端都遵循同一套规则。无论用户是转账代币、通过去中心化应用兑换加密货币、创建 NFT、向借贷协议提供抵押品,还是调用其他智能合约,EVM 都会计算相应操作的结果。EVM 并非一台实体机器或服务器。相反,每个参与其中的 Ethereum 节点都会独立地对相同顺序的交易应用相同的执行规则。这种设计使节点能够确认账户余额、合约存储、代币所有权及其他区块链状态变更是否计算正确。

Ethereum 官方以太坊虚拟机文档将 EVM 描述为一种去中心化虚拟环境,可在各个 Ethereum 节点上以一致方式执行代码。

EVM 是 Ethereum 执行层的核心组成部分,但并不等同于整个 Ethereum 网络。Ethereum 还依赖共识、点对点网络、数据存储、区块生成、验证者及其他协议组件。EVM 专注于计算和状态转换。

EVM 有什么作用?

EVM 会读取交易指令、运行智能合约字节码、计算 Gas 消耗,并确定 Ethereum 状态应如何变化。它可以转移 ETH、调用合约函数、部署新合约、更新合约存储、创建事件日志,或返回所请求的数据。在应用交易前,Ethereum 执行系统会检查发送方签名、nonce、可用余额、Gas 上限和交易格式等要求。如果交易调用智能合约,EVM 会按照字节码定义的顺序执行合约指令。在同一笔交易中,EVM 还可能调用其他合约。这一能力使去中心化应用能够在一次原子操作中组合多个协议和代币系统。执行完成后,EVM 会产生成功的状态变更,或报告执行失败。如果执行回滚,预期的合约状态变更通常会被取消,但发送方一般仍需为已经完成的计算工作付费。最终执行结果可包括余额更新、存储修改、生成的日志、返回的数据和交易收据。

EVM 对加密行业为何重要?

EVM 的重要性在于,它使 Ethereum 从简单的加密货币转账网络发展为可编程区块链平台。如果没有可编程执行环境,区块链可能主要只能记录其原生资产的转账。EVM 让开发者能够创建代币、借贷市场、去中心化交易协议、稳定币系统、区块链游戏、治理工具、身份应用及其他链上服务。在 EVM 上运行的智能合约可以持有资产并执行规则,无需传统的中央管理方逐一批准每项操作。任何能够提交有效交易并支付所需费用的人,都可以使用同一套执行规则。这种无需许可的架构支持彼此交互的开放式加密应用。EVM 也已成为 Ethereum 以外的重要技术标准,因为许多其他区块链网络采用了 EVM 兼容或 EVM 等效的执行环境。更广泛的应用让开发者能够在多个网络间复用智能合约、钱包、编程语言、代币标准和开发工具。

EVM 是区块链吗?

EVM 本身不是区块链。它是用于计算区块链交易影响的虚拟执行系统。Ethereum 才是记录区块、维护共识、分发数据,并使用 EVM 处理可编程活动的区块链网络。可以这样理解:Ethereum 是完整的网络,而 EVM 是其执行层中的计算引擎。其他区块链网络也可以实现 EVM,但不会因此共享 Ethereum 的区块链历史、验证者、余额、安全预算或原生资产。因此,两个基于 EVM 的链可以运行类似的智能合约代码,同时仍是完全独立的网络。

EVM 如何处理交易

EVM 交易通常始于用户在加密钱包或去中心化应用中选择一项操作。钱包会创建一笔交易,其中包含目标地址、转移金额、输入数据、nonce、Gas 上限和费用设置等信息。用户使用私钥为交易签名。签名证明交易已获发送账户控制者授权。签名后的交易会发送至 Ethereum 节点,并可能进入待处理交易池。区块生产者会选择交易,并将其按顺序纳入区块负载。EVM 会基于该区块中所有先前交易产生的状态处理每笔交易。交易顺序很重要,因为一笔交易可能改变另一笔交易所用的余额、价格、授权或存储值。处理完整个区块后,执行客户端会计算最终的 Ethereum 状态。其他节点会重复相同的工作,以确认提议的区块符合 Ethereum 规则。

Ethereum 官方交易文档介绍了签名指令如何转移价值、创建合约或调用现有合约。

EVM 状态转换

状态转换是从一个有效的 Ethereum 状态变为另一个有效状态。Ethereum 状态包括账户、ETH 余额、智能合约代码、合约存储和账户 nonce。EVM 以当前状态和一笔有序交易作为输入。随后,它会应用 Ethereum 的执行规则,计算下一个状态。对于普通 ETH 转账,状态转换会减少发送方余额并增加接收方余额。对于代币兑换,状态转换可能会更新代币余额、授权额度、流动性池储备、费用记录和事件日志。对于借贷交易,状态转换可能会更新抵押品数量、债务余额、利息指数和账户风险指标。所有诚实的执行客户端都应根据相同的初始条件计算出相同的状态转换。这种确定性行为至关重要,因为节点必须在不信任中央计算机的情况下达成一致。

Ethereum 账户与 EVM

Ethereum 有外部拥有账户和合约账户。外部拥有账户由私钥控制。合约账户由智能合约代码控制。两种账户都可以持有 ETH,但其行为不同。外部拥有账户的控制者签名后即可发起交易。合约账户不会使用私钥独立签署普通交易。当合约账户通过另一笔交易或合约交互收到有效调用时,其中的代码才会运行。

官方Ethereum 账户文档说明,账户可以由用户控制,也可以部署为智能合约。

EVM 在验证交易、转移价值、加载合约代码和更新存储时会读取账户信息。

智能合约与 EVM

智能合约是存储在 Ethereum 地址上的程序。当交易或其他合约调用其函数时,EVM 会执行该程序。智能合约可以包含变量、函数、权限、事件、错误以及数字资产处理规则。开发者通常使用 Solidity 或 Vyper 编写 Ethereum 智能合约。部署前,源代码会被编译为较低层级的 EVM 字节码。

官方Ethereum 智能合约指南说明,部署和交互均需要交易和 Gas。

合约部署后,其运行时字节码会作为合约账户的一部分存储。EVM 读取并执行的是该字节码,而不是直接理解 Solidity 或 Vyper 源代码。这一区别很重要,因为实际控制链上行为的是已部署的字节码。

什么是 EVM 字节码?

EVM 字节码是由 Ethereum 虚拟机执行的机器可读指令序列。它通常以一串很长的十六进制值显示。字节码的各个部分代表操作码、数据值或其他执行信息。智能合约源代码更便于人类阅读,而字节码则是为 EVM 处理而设计的。已部署的合约通常包含创建代码和运行时代码。创建代码在部署时运行一次,并返回保留在合约地址中的运行时代码。用户或其他合约与已部署合约交互时,运行时代码会执行。

Solidity 智能合约介绍说明,EVM 会读取、解释并执行存储在合约代码区域中的字节。

开发者通常会公开并验证源代码,以便用户将易读合约与已部署字节码进行比对。

什么是 EVM 操作码?

操作码是 EVM 能够识别的单条底层指令。每个操作码都会执行特定操作。有些操作码用于算术、比较或位运算。其他操作码则会读取交易数据、检查地址、加载内存、访问合约存储、创建日志或调用其他合约。例如,ADD 用于加法,SLOAD 用于读取合约存储,SSTORE 用于修改存储,CALL 用于调用另一个账户,REVERT 用于停止执行并返回错误。

Ethereum 官方EVM 操作码参考列出了可用指令及其 Gas 成本。

除非某条指令更改程序计数器或结束执行,否则操作码会按顺序运行。Ethereum 升级可能会新增指令、调整 Gas 成本或改变某些操作的行为。因此,编译器设置必须针对目标网络支持的 EVM 版本。

EVM 堆栈如何工作

EVM 通常被描述为基于堆栈的虚拟机。堆栈是一种遵循后进先出顺序的临时数据结构。EVM 操作码通常从堆栈顶部取值,并将结果放回顶部。例如,加法指令会从堆栈中取出两个值,将它们相加,再把结果放回堆栈。EVM 的许多操作使用 256 位字。这种字长适用于 Ethereum 的密码学计算和账户数值。堆栈深度有限,因此编译器和开发者必须谨慎组织复杂计算。堆栈错误可能导致执行失败。

EVM 内存

EVM 内存是在合约调用期间可用的临时、按字节寻址区域。它可以存放函数参数、返回数据、临时数组、编码值和中间计算结果。当前执行上下文结束后,内存会被清除。它不会用于永久链上存储。随着合约访问的内存范围扩大,内存 Gas 成本也可能上升。因此,高效使用内存可以降低复杂交易的成本。开发者必须区分内存和存储,因为两者的生命周期、用途和 Gas 成本均不同。

EVM 存储

EVM 存储是与智能合约关联的持久数据区域。交易结束后,存储值仍会保留在 Ethereum 状态中。合约使用存储记录代币余额、所有权、协议设置、账户债务、治理投票及其他长期信息。写入存储通常比读取临时内存更贵,因为每个验证节点都必须保留并处理状态变更。存储由 256 位槽位组成。Solidity 会根据既定布局规则,将高级变量、数组、结构和映射映射到这些槽位中。不安全地更改可升级合约的存储布局可能会破坏现有数据。因此,存储设计是智能合约安全和 Gas 优化的重要组成部分。

Calldata 与返回数据

Calldata 是提供给外部合约调用的只读输入数据。它通常包含函数选择器及其后经过编码的函数参数。EVM 会利用这些信息确定要运行的函数及传入的值。Calldata 与内存不同,接收合约无法直接修改它。合约也可以向调用账户或合约返回数据。返回数据可能包含代币余额、计算得出的报价、交易结果或编码后的错误。外部应用通常使用只读调用来模拟合约函数并获取返回数据,而不创建链上交易。

Gas 与 EVM

Gas 是衡量 EVM 所执行计算工作的单位。每个操作码都有规定的 Gas 成本。普通 ETH 转账通常比涉及多个智能合约和存储变更的复杂交易消耗更少的 Gas。发送方会选择 Gas 上限,设定交易最多可消耗的 Gas 数量。如果交易在完成前耗尽所有可用 Gas,就会因 Gas 不足而失败,预期的状态变更也会回滚。发送方仍需支付已经完成的计算费用。

Ethereum 官方Gas 和费用文档说明,越复杂的智能合约交易需要越多计算工作和越高的 Gas 上限。

Gas 可防止程序无限使用网络资源。如果没有 Gas,有缺陷或恶意的代码就可能让每个执行客户端承担无限计算负担。

Gas 上限与 Gas 价格

Gas 上限是交易获准使用的最大计算 Gas 数量。Gas 价格决定发送方根据适用费用规则愿意为每单位 Gas 支付多少费用。Gas 上限较高并不意味着交易一定会消耗全部 Gas。通常情况下,发送方会根据实际使用量付费,但仍须遵循当前交易费用规则。Gas 上限过低可能导致交易在执行完成前失败。区块空间需求较高时,费用设置过低可能使交易持续处于待处理状态。钱包通常会估算这两个数值,但交易被纳入区块前,Ethereum 状态和网络需求都可能变化,因此估算值也会改变。

预编译合约

预编译合约是部署在 Ethereum 保留地址上的特殊协议级函数。调用方式与普通智能合约调用类似。但其行为由执行客户端直接实现,而不是通过地址上存储的普通 EVM 字节码实现。预编译合约通常用于高效处理通过普通操作码序列执行时效率较低的加密算法计算。

Solidity 预编译合约文档说明,其行为和 Gas 使用量由 EVM 执行环境内部实现。

当网络需要高效、标准化的操作时,Ethereum 升级可以引入更多预编译合约。

消息调用

消息调用是 EVM 中一个账户调用另一个账户的交互。外部拥有账户可以通过提交签名交易来启动这一过程。随后,智能合约可以在执行期间调用另一个合约。消息调用可以转移 ETH、提供输入数据、分配 Gas 并请求执行合约代码。嵌套调用允许多个应用在一笔交易中进行交互。不过,外部合约可能出现意料之外或恶意行为,因此嵌套调用也会带来安全隐患。安全的合约应谨慎处理外部调用,并保护重要状态免受重入攻击等交互风险影响。

创建合约

EVM 处理合约创建交易或合约创建操作码时,可以创建新的智能合约。部署从初始化代码开始。初始化代码可以处理构造函数参数、设置初始存储值,并返回运行时字节码。随后,运行时字节码会存储在新的合约地址上。合约部署需要 Gas,因为 EVM 必须执行创建代码,并将持久代码和状态写入 Ethereum。较大的合约和更复杂的构造函数通常会增加部署成本。如果 Gas 耗尽、违反执行规则或初始化过程中回滚,部署就可能失败。

事件与日志

智能合约可以在 EVM 执行期间创建日志。开发者通常通过 Solidity 事件向外提供这些日志。事件可以记录代币转账、兑换、充值、治理投票、权限变更及其他合约活动。日志会存储在交易收据中,并可供外部应用建立索引。日志可用于钱包、区块链浏览器、数据分析系统和去中心化应用界面。合约无法像读取存储那样直接读取过去的事件日志。因此,不应把事件作为未来合约执行所需信息的唯一来源。

回滚与 EVM 交易失败

EVM 交易可能因多种原因失败。交易可能存在签名无效、nonce 错误、余额不足、Gas 不够或格式不受支持等问题。未满足必要条件时,智能合约也可以主动回滚。例如,发送方代币不足时,代币转账可能回滚。如果兑换所得金额低于用户设定的最低值,去中心化兑换也可能回滚。调用者未获授权时,合约权限检查可能导致回滚。回滚通常会取消失败执行路径中的状态变更。由于执行客户端已经完成了相应工作,已消耗的 Gas 通常不会退还。交易失败并不一定意味着 Ethereum 或 EVM 出现故障。这通常表示在当前状态下,该笔交易未能满足合约或协议规则。

原子执行

EVM 交易具有原子性,即在该交易的执行范围内,所有状态变更要么一起成功,要么一起失败。这一特性使复杂交易能够执行多个相互关联的步骤,而不会只留下部分预期结果。例如,一笔 DeFi 交易可以在一次执行中借入资产、进行兑换、偿还另一笔债务并更新抵押品。如果必要步骤失败并导致交易回滚,该交易中先前的状态变更也会一并撤销。原子性可降低部分结算风险,但不能保证交易在财务上有利或安全。恶意合约仍可能完成原子交易,并转走用户已授权的资产。

确定性执行

EVM 具有确定性:相同的有效输入和初始状态,在每个诚实的执行客户端上都应产生相同结果。确定性是去中心化验证的必要条件。如果节点对同一笔交易计算出不同结果,就无法对余额或合约状态达成一致。因此,智能合约无法在 EVM 执行期间直接向普通网站或私有数据库请求不断变化的外部信息。外部数据通常通过预言机或另一笔链上交易引入。这样,每个节点都能依据相同的合约规则处理同一项已提交的数值。

EVM 与共识

EVM 负责执行,而 Ethereum 共识系统则帮助验证者就区块的有效顺序和最终性达成一致。执行用于判断交易及其状态变更是否符合 Ethereum 规则。共识用于确定网络接受哪一条有效链历史。Ethereum 转向权益证明后,一个全节点会同时使用执行客户端和共识客户端。执行客户端运行交易并维护 Ethereum 执行状态。共识客户端跟踪验证者活动、区块提议、证明、分叉选择和最终性。

官方Ethereum 节点和客户端文档介绍了这些客户端组件如何协同工作。

EVM 无法独立决定哪个提议区块会成为规范链的一部分。如果没有执行层,共识也无法独立计算复杂的智能合约结果。

EVM 执行客户端

执行客户端是实现 Ethereum 执行规则的软件。它会验证交易、处理 EVM 字节码、维护区块链状态、与其他节点通信,并提供应用接口。不同执行客户端可以使用不同编程语言编写,但都遵循相同的协议规范。客户端多样性能够提升韧性,因为 Ethereum 并非完全依赖单一软件代码库。不过,每个兼容的执行客户端都必须计算出相同的有效结果。

Ethereum 执行层规范提供了可读且可执行的参考,用于说明 Ethereum 的执行行为和网络升级。

执行规范测试可帮助开发者确认不同客户端对特殊情况的处理保持一致。

EVM 与 JSON-RPC

钱包和去中心化应用通常通过 JSON-RPC 方法与执行客户端通信。这些方法可以读取账户余额、估算 Gas、模拟合约调用、获取日志、查看区块和提交签名交易。

Ethereum Execution API 规范将 JSON-RPC 描述为用户、基础设施和执行客户端之间的标准接口。

只读 RPC 调用可以请求执行客户端模拟 EVM 行为,而不会向区块链添加交易。签名交易提交方法会广播一笔之后可能被纳入区块的交易。RPC 服务商可以提高应用使用的便利性,但依赖远程服务商的用户需要信任其提供准确且可用的数据。运行个人节点可以更直接、独立地访问 Ethereum 执行信息。

EVM 兼容链与 EVM 等效链

EVM 兼容链支持为 Ethereum 虚拟机构建的智能合约和工具。EVM 等效链通常旨在更紧密地复现 Ethereum 的执行行为。这两种模式都可能让开发者使用 Solidity、Ethereum 风格地址、常见钱包和通用代币标准。不过,其他 EVM 网络的验证者、费用、最终性规则、出块时间、跨链桥、系统合约和安全假设可能不同。在 Ethereum 上运行正常的合约,部署到其他 EVM 网络前仍可能需要测试。编译器目标、支持的操作码、预编译合约、交易类型、Gas 行为和外部依赖都可能有所不同。

Solidity 编译器文档提醒,针对错误的 EVM 版本进行编译可能产生不正确或失败的行为。

EVM 兼容性提升了可移植性,但不会让各条独立链变得完全相同。

EVM 升级

EVM 可以通过 Ethereum 协议升级进行变更。升级可能会引入操作码、调整 Gas 成本、新增交易类型、更改账户行为或提供新的预编译合约。拟议的协议变更通常会通过 Ethereum 改进提案记录。经过审查、测试、协调并获得社区采用后,部分变更可以纳入网络升级。执行客户端必须更新软件,以便在激活时间点遵循新规则。智能合约开发者应关注升级,因为新规则可能影响编译目标、Gas 估算、底层汇编和合约行为。合约应避免依赖未公开记录且可能在升级中发生变化的 EVM 行为。

EVM 安全风险

EVM 会一致地执行有效字节码,但不会保证字节码安全或公平。智能合约可能存在编码错误、权限薄弱、升级机制不安全、经济设计缺陷,或含有蓄意恶意功能。只要指令本身有效,EVM 就可能正确执行其中有害的逻辑。常见智能合约风险包括重入攻击、访问控制错误、预言机操纵、算术错误、签名误用、存储冲突和不安全的外部调用。编译器漏洞也可能影响已部署的字节码。

官方Solidity 已知编译器漏洞列表可帮助开发者识别与编译器版本相关的安全问题。

审计、测试、形式化验证、代码审查、限制权限和谨慎控制升级都可以降低风险。任何审计都无法保证 EVM 合约绝不会故障或遭到攻击。

加密货币用户面临的 EVM 风险

用户批准代币、签署交易或使用 Ethereum 智能合约时,都会与 EVM 交互。钱包签名授权的操作可能不只是简单转账。签名可能批准代币支出、调用合约、创建委托或授予其他权限。用户应阅读交易提示,并在签名前核实目标合约。EVM 执行成功只能证明交易遵循了代码和协议规则。这并不能证明结果符合用户本意,也不能证明应用值得信任。恶意去中心化应用可以通过有效的 EVM 调用转移已获批准的资产。用户应避免打开不明链接、核实合约地址、限制代币授权,并将长期持有的资产与用于试验性应用的钱包分开。

加密货币交易者面临的 EVM 风险

交易者使用去中心化交易、借贷、质押、跨链或强制平仓协议时,可能面临 EVM 相关风险。交易执行到 EVM 时,如果价格已经变化,交易可能失败。如果用户允许较大的滑点范围,兑换所得可能更差。交易在同一区块中的顺序可能被调整。这种排序会影响池中价格、强平结果和代币可用性。市场承压期间,高额 Gas 费还可能使链上仓位的平仓或调整成本变高。交易者可能有足够的代币抵押品,却没有用于支付执行费用的原生 ETH。因此,保持 Gas 余额并检查交易设置也是链上交易风险管理的一部分。

EVM 与最大可提取价值

最大可提取价值指通过控制或影响交易纳入区块及其排序而获得的价值。EVM 会按照区块中给出的顺序处理交易。如果两笔交易与同一个流动性池交互,第一笔交易可能改变第二笔交易的成交结果。搜索者和区块构建系统可能利用这一特性进行套利、强制平仓或其他策略。有些策略有助于价格趋于一致,另一些则可能使用户的成交结果变差。夹子攻击会在用户兑换交易前后分别插入交易,从该交易造成的价格影响中获利。

Ethereum 官方最大可提取价值文档介绍了交易的纳入、排除和排序如何产生经济价值。

用户可以通过设置合适的滑点上限、避开流动性不足的市场,并在适用时查看受保护的执行选项来降低部分风险。

EVM 与代币标准

EVM 允许开发者通过智能合约实现通用代币接口。ERC-20 定义了同质化代币的通用接口。ERC-721 和 ERC-1155 支持常见的独特资产和多代币结构。通用标准使钱包、交易界面、区块链浏览器和去中心化应用能够通过熟悉的函数与多种代币交互。

Ethereum 官方代币标准文档介绍了通用接口如何提升互操作性。

代币标准定义了预期函数和事件,但不能保证每个代币合约都安全或受到诚实管理。代币合约仍可能包含自定义转账规则、费用、黑名单、铸造权限或升级权限。

EVM 与 Layer 2 网络

许多 Ethereum Layer 2 网络提供 EVM 兼容或 EVM 等效的执行环境。这些网络会在 Ethereum 主执行环境之外处理交易,并将 Ethereum 用于部分结算、数据可用性或安全模型。这有助于降低交易成本并提升吞吐量。

Ethereum 官方Layer 2 概览介绍了 Rollup 如何在 Ethereum Layer 1 之外处理活动,并以 Ethereum 作为结算基础。

Layer 2 上的 EVM 可能运行相似的智能合约字节码,但其出块、费用计算、提现和最终性流程可能不同。用户应了解特定 Layer 2 网络的排序器、跨链桥、证明系统、数据发布方式和升级控制。EVM 相似并不能消除 Layer 2 基础设施带来的额外风险。

EVM 的优势

EVM 为可编程加密应用提供了标准化环境。它允许独立节点验证相同的智能合约结果。它支持开放部署,开发者通常无需获得中央运营方许可即可发布合约。它支持可组合性,因为一个智能合约可以与另一个智能合约交互。它支持广泛使用的代币标准和开发工具。它还为其他区块链网络提供通用执行模型,有助于降低开发者迁移成本。丰富的 EVM 工具、文档、测试经验和安全研究可以降低应用开发门槛。

EVM 的局限

EVM 计算比中心化服务器上的普通计算更昂贵,因为许多节点都必须验证结果。持久存储也成本高昂,因为它会增加执行客户端维护的区块链状态。Ethereum 区块空间有限,因此大量用户竞争执行时,交易费用可能上升。EVM 按顺序处理状态转换;当许多交易访问相同状态时,吞吐量可能受到限制。除非事先设计了升级系统,否则合约部署后通常难以更改。可升级性可以提供灵活性,但也会带来管理员权限和存储布局风险。如果不依赖通过预言机或其他可信流程提交的数据,EVM 也无法判断外部信息是否属实。

EVM 代币兑换示例

假设用户想通过去中心化流动性池将一种 ERC-20 代币兑换成另一种。钱包会创建调用该池或路由合约的交易数据。用户签名后,将交易发送至 Ethereum 网络。交易被纳入区块后,EVM 会检查用户的代币授权额度,并调用所需合约。合约会计算当前兑换结果、收取协议费用,并将输出与用户设定的最低可接受数量进行比较。满足要求后,EVM 会更新代币余额和流动性池存储。它还会创建外部应用可以读取的事件日志。如果输出低于用户设定的最低值,或其他条件未满足,交易就会回滚。用户通常仍需支付回滚前消耗的 Gas。该示例展示了 EVM 执行如何连接钱包签名、代币授权、智能合约、Gas、状态变更和交易收据。

如何检查 EVM 交易

首先,确认交易将在什么网络上执行。其次,核实目标地址或智能合约。第三,检查要转移的资产和数量。第四,查看交易是否请求代币授权或其他持续有效的权限。第五,检查 Gas 估算值和最高费用设置。第六,检查去中心化交易的预期输出、最低接收数量和截止时间。第七,适当时使用可信的区块链浏览器或模拟工具检查交易。第八,如果钱包无法说明操作内容,或交易来源不明,请勿签名。第九,保留足够 ETH 以支付后续交易费用,包括紧急退出链上仓位的费用。第十,记住已确认的 EVM 交易通常很难或无法撤销。

关于 EVM 的常见误解

一种常见误解是,EVM 是由某个组织拥有的实体计算机。实际上,它是一种由多个独立客户端实现的共享执行模型。另一种误解是,EVM 会把所有加密货币都存放在智能合约中。EVM 处理状态,而所有权则通过区块链账户和合约记录表示。第三种误解是 EVM 与 Ethereum 是同一事物。EVM 是更广泛的 Ethereum 协议中的一个重要组成部分。第四种误解是,有效的 EVM 执行就能保证交易安全。EVM 可能正确执行恶意或在经济上有害的合约逻辑。第五种误解是,每条 EVM 网络都拥有 Ethereum 的安全性。其他基于 EVM 的网络可能有不同的验证者、跨链桥、治理系统和信任假设。第六种误解是,失败的交易不会产生成本。EVM 执行失败时,通常仍会消耗已完成工作所需的 Gas。

常见问题

EVM 是什么的缩写?

EVM 是 Ethereum Virtual Machine(以太坊虚拟机)的缩写。

简单来说,EVM 是什么?

EVM 是运行 Ethereum 智能合约并计算链上交易结果的虚拟计算环境。

EVM 是一台真实的计算机吗?

不是。它是一种由许多独立计算机上的 Ethereum 执行客户端实现的虚拟执行模型。

EVM 与 Ethereum 是一回事吗?

不是。EVM 是 Ethereum 的智能合约执行环境,而 Ethereum 还包括共识、网络、验证者、区块及其他协议组件。

哪些编程语言可用于 EVM?

Solidity 和 Vyper 是广泛使用的智能合约语言,可编译为 EVM 字节码。

什么是 EVM 字节码?

EVM 字节码是由 Ethereum 虚拟机执行的底层机器可读指令序列。

什么是 EVM 操作码?

操作码是单条 EVM 指令,可执行算术运算、存储访问、合约调用和错误处理等操作。

EVM 为什么使用 Gas?

Gas 用于衡量计算工作、为有限的执行资源定价,并防止程序无限消耗处理能力。

EVM 交易 Gas 耗尽时会怎样?

预期的状态变更会回滚,但发送方通常仍需支付执行停止前已经消耗的 Gas。

EVM 能执行恶意合约吗?

能。即使合约包含有害、不诚实或不安全的逻辑,只要字节码在技术上有效,EVM 仍会执行。

所有 EVM 链都相互连接吗?

不是。EVM 链可以采用相似的执行技术,但其余额、区块、验证者、合约和交易历史彼此独立。

同一个钱包地址能在每条 EVM 链上使用吗?

同一个私钥通常可以生成相同格式的地址,但该地址上的资产和活动在每条链上仍然彼此独立。

EVM 交易可以撤销吗?

已确认的 EVM 交易通常无法撤销,除非接收合约包含能够通过新交易完成更正的有效函数。

为什么钱包模拟成功后,EVM 交易仍可能失败?

交易实际执行前,区块链状态、Gas 条件、价格、流动性或合约存储都可能发生变化。

EVM 与执行客户端有什么区别?

EVM 是智能合约计算所用的虚拟机和规则集;执行客户端则是实现这些规则并管理 Ethereum 执行数据的软件。

Layer 2 网络会使用 EVM 吗?

许多 Layer 2 网络使用 EVM 兼容或 EVM 等效环境,以便复用 Ethereum 智能合约和工具。

结语

EVM(以太坊虚拟机)是 Ethereum 智能合约系统的核心可编程执行环境。它处理交易指令、执行字节码、计算 Gas 消耗、更新区块链状态并生成交易结果。EVM 使 Ethereum 能够支持代币、去中心化金融、NFT、治理系统、区块链游戏及许多其他加密应用。其确定性规则让独立执行客户端无需信任某一台中央计算机,即可验证相同结果。智能合约使用人类可读的语言编写,并编译为由底层操作码组成的 EVM 字节码。执行期间,EVM 会使用堆栈、内存、calldata、持久存储、消息调用和日志等组件处理合约逻辑。Gas 用于限制计算工作,并要求用户为交易消耗的网络资源付费。EVM 与 Ethereum 共识层协同工作,但执行和共识承担不同职责。EVM 兼容链和 Layer 2 网络可以复用 Ethereum 技术,但其安全性、费用、最终性和基础设施可能不同。对加密货币用户而言,了解 EVM 有助于评估 Gas 费、智能合约授权、失败交易、代币标准、去中心化应用和链上交易风险。EVM 的强大之处在于能够执行透明的可编程规则,但它不会判断这些规则是否安全或在财务上有利。用户和开发者仍须核实合约、管理权限、测试代码、了解网络差异,并将每笔签名交易视为重要授权。

您可能也喜欢

反恐融资(CTF)

反恐怖主义融资(CTF)是指旨在发现、预防和打击恐怖主义活动资金支持的法律、法规和活动。这包括监控和监管资金流动、在金融机构内部实施合规计划,以及执行旨在遏制恐怖主义融资的国际制裁和法规。 反恐融资在各领域的重要性 反恐融资在包括银行业、科技和国际贸易在内的各个领域都至关重要。在金融领域,强而有力的反恐融资措施可确保银行和其他金融机构不会被恐怖组织利用为其活动提供资金。这不仅有助于维护金融体系的完
2025/12/23 18:42

框架

在专业情境中,「框架」指的是一套结构化的指南、工具或实践,旨在支援专案、应用程式或系统的开发和实施。它提供了一种标准化的方法来解决复杂问题或实现特定目标,通常包含可根据具体需求进行调整和扩展的预先建置元件。 框架的关键特征 框架在软体开发、专案管理和数位行销等各个领域都至关重要。例如,在软体开发中,Angular、React 和 Django 等框架提供了开发人员用来高效建立高品质应用程式的程式库
2025/12/23 18:42

波动性爆发

「波动性爆发」是指金融市场、资产或指数的波动性突然显著增加,通常由不可预见的事件或市场情绪变化所驱动。这种突如其来的增加会导致价格大幅波动和交易量激增,从而影响投资者和交易者的风险和机会。 了解波动性爆发 波动性是衡量特定证券或市场指数收益分散程度的统计指标,显示资产价格在特定期间内的波动幅度。当这种波动超出正常水平时,就会发生波动性爆发,这通常是对意外新闻或经济事件的反应。这些事件可能包括地缘政
2025/12/23 18:42
回调还是机会?
回调还是机会?回调还是机会?
一边爆仓,一边扫货——24亿ETF资金在赌什么?