Somente para fins educacionais; não constitui recomendação nem aconselhamento de investimento. Investir pode causar perdas.
Resposta direta
A EVM é a máquina de transição de estado da camada de execução que interpreta bytecode sob as regras de um fork específico. Com o mesmo estado anterior válido, transação ou mensagem, ambiente do bloco e especificação, clientes conformes devem calcular o mesmo estado posterior ou falha. A EVM não ordena transações, fornece finalidade nem torna toda rede compatível tão segura quanto Ethereum.
Uma transação assinada externamente é um objeto superior. Atividade entre contratos são chamadas e quadros aninhados, não transações independentes. Cada quadro tem código, contador, pilha de 256 bits, memória, calldata, returndata, gas e contexto; storage persistente pertence à conta e storage transitório dura a transação.
Como funciona
- Fixe rede e
chainId, bloco e hash, estado canônico ou finalizado, fork, cliente, revisão, estado anterior, tipo, bytes assinados, hash e recibo. - Decodifique o envelope e separe validade prévia de execução. Verifique assinatura, remetente, nonce, destino ou criação, value, calldata, limite de gas, taxas, access list e campos do tipo. Rejeição anterior não é transação incluída que sofreu revert.
- Construa mensagem e árvore de chamadas. Registre
CALL,STATICCALL,DELEGATECALL, criação e precompilados; caller, endereços de contexto e código,msg.sender,msg.value, value, dados, gas e resultado. “Transação interna” é visualização de trace. - Rastreie contador, pilha, memória, dados, logs, storage persistente e transitório.
CALLusa contexto do callee;DELEGATECALLexecuta código-alvo no contexto do caller e preserva sender e value;STATICCALLproíbe alteração de estado. - Aplique gas do fork: intrínseco, opcodes, memória, acessos cold/warm, chamadas, stipends, precompilados e refunds. Calcule taxa separada do value. Estimativa não é garantia.
- Resolva resultados por escopo.
RETURNconfirma se os ancestrais confirmarem.REVERTdesfaz quadro e descendentes, retorna dados e pode preservar gas; exceptional halt difere. O pai pode capturar a falha, então status superior pode ser1. Falha incluída consome nonce e gas. - Concilie status, gas, logs, endereço criado e retorno com saldos, nonces, código, storage, tokens, traces e state root. Reexecute se necessário e audite proxies, layouts, precompilados, compilador e forks separadamente da finalidade.
Exemplos resolvidos
- Revert superior e taxa. Uma transação tipo 2 tem limite
80,000, usa52,000, base20 gwei, prioridade máxima3 gweie máximo40 gwei. O preço efetivo émin(40, 20 + 3) = 23 gwei; paga52,000 * 23 gwei = 0.001196 ETH: queimam-se52,000 * 20 gwei = 0.001040 ETHe a prioridade é52,000 * 3 gwei = 0.000156 ETH. Os28,000 gasnão usados não são cobrados. Se houver revert, storage, value e logs são desfeitos, mas nonce e taxa ficam. - Falha filha capturada. A começa com
A.x = 5. Chama B; B gravaB.y = 9, emite log e executaREVERT. Gravação e log são desfeitos. A observasuccess = false, gravaA.x = 7e termina. O status é1, permaneceA.x = 7e B conserva o valor anterior. - Contexto de DELEGATECALL. Um proxy tem
slot0 = 5e a implementaçãoslot0 = 99. O código soma7. PorDELEGATECALL, o proxy passa aslot0 = 12e a implementação fica emslot0 = 99; endereço e storage do proxy se aplicam, preservando sender e value. - SELFDESTRUCT conforme fork. Sob EIP-6780, contrato existente com
2 ETHexecutaSELFDESTRUCTpara B. B recebe2 ETHe o saldo zera, mas conta, código e storage não são excluídos. A exclusão só permanece se criação e autodestruição ocorrerem na mesma transação.
Riscos
- Reexecutar contra rede, bloco, fork, cliente ou estado incorretos.
- Tratar estado não canônico ou reorganizado como final.
- Confundir rejeição prévia e revert incluído.
- Supor que simulação pendente coincidirá com a inclusão.
- Ignorar revert, exceptional halt ou out-of-gas superior.
- Omitir falha filha capturada.
- Interpretar mal contexto, código, caller, sender ou value.
- Corromper proxy por layout incompatível em
DELEGATECALL. - Permitir reentrancy ou transferência externa insegura.
- Confiar em returndata, flags ou erros não validados.
- Tratar logs ou traces como estado final.
- Calcular mal acessos, memória ou gas encaminhado.
- Aplicar mal refunds, limites, stipends ou regra
63/64. - Usar precompilado, entrada, custo ou fork incorretos.
- Confundir storage, memória e armazenamento transitório.
- Esperar alteração de estado dentro de
STATICCALL. - Aplicar suposições antigas de exclusão de
SELFDESTRUCT. - Omitir mudança de implementação, admin ou compilador.
- Executar regras de clientes divergentes ou desatualizadas.
- Inferir segurança de consenso, bridge, token ou governança pela compatibilidade EVM.
Erros comuns
- O código-fonte Solidity é executado diretamente onchain.
- Uma transação incluída que sofre revert não custa nem altera o nonce.
- Status
1prova que todas as chamadas internas foram bem-sucedidas. - Evento ou trace é o estado autoritativo.
- Compatibilidade EVM garante opcodes, gas, precompilados, consenso e segurança idênticos.
Tópicos relacionados
Fontes
- Ethereum Virtual Machine (EVM) - Ethereum.org (acessado em: 2026-08-12)
- Ethereum Yellow Paper: a formal specification of Ethereum, a programmable blockchain - Ethereum Foundation (acessado em: 2026-08-12)
- Ethereum Execution Layer Specification - Ethereum Execution Specs (acessado em: 2026-08-12)
- Introduction to Smart Contracts - Solidity Documentation (acessado em: 2026-08-12)
- EIP-7: DELEGATECALL - Ethereum Improvement Proposals (acessado em: 2026-08-12)
- EIP-140: REVERT instruction - Ethereum Improvement Proposals (acessado em: 2026-08-12)
- EIP-2929: Gas cost increases for state access opcodes - Ethereum Improvement Proposals (acessado em: 2026-08-12)
- EIP-6780: SELFDESTRUCT only in same transaction - Ethereum Improvement Proposals (acessado em: 2026-08-12)