Esta página tem finalidade somente informativa. Alguns serviços e recursos podem não estar disponíveis em sua região.
Este artigo foi traduzido automaticamente do seu idioma original.

O que é a EVM?

A Ethereum Virtual Machine (EVM), a máquina virtual do Ethereum, é um conjunto de regras comuns para executar contratos inteligentes. Os nós do Ethereum implementam essas regras no próprio software, calculam a partir das mesmas transações e do mesmo estado inicial, e assim obtêm um resultado que outros nós podem reconferir.

A EVM não é um servidor físico específico, nem o aplicativo único que quem desenvolve vê no computador. Ela se parece mais com um manual de cálculo preciso: quais operações básicas o código pode executar, onde os dados ficam, quantos recursos de computação cada operação consome, e como o estado da blockchain é atualizado quando a execução tem sucesso ou falha.

Do código-fonte ao bytecode executável

Quem desenvolve normalmente escreve contratos em uma linguagem de alto nível como Solidity. O código-fonte legível por pessoas precisa ser convertido por um compilador em bytecode que a EVM consiga executar, ou seja, uma sequência de instruções de máquina organizadas em um formato fixo.

Ao implantar um contrato, a transação de criação contém o código usado para gerá-lo. Depois de uma execução bem-sucedida, a rede estabelece um endereço para o contrato e guarda o bytecode que será executado quando ele receber chamadas depois. O código de execução de um contrato já implantado não é a mesma representação que os arquivos-fonte de quem desenvolve, então um código-fonte publicado ainda precisa ser confrontado com o bytecode on-chain antes de se poder dizer que os dois correspondem.

A versão e as configurações do compilador podem influenciar o bytecode final. Dois arquivos-fonte de aparência parecida podem produzir resultados diferentes; ver o mesmo nome de contrato substitui ainda menos a conferência da rede e do endereço do contrato.

A chamada fornece ao contrato os dados de execução

Quando alguém chama um contrato, envia ao endereço do contrato uma transação com dados. Esses dados normalmente indicam qual função chamar e anexam os parâmetros em um formato combinado. Um contrato também pode chamar outro contrato durante a execução, passando valores ou dados adiante.

A EVM parte do estado atual da blockchain, lê quem chama, o destino, o valor anexado, os dados de entrada e as informações que o bloco atual permite usar, e então executa instrução por instrução o bytecode do contrato de destino. Cada instrução altera, conforme as regras, os dados temporários deste cálculo, ou pede para ler ou escrever o estado persistente do contrato.

Um contrato não se inicia sozinho só porque chegou certo momento. É preciso que uma transação ou a chamada de outro contrato forme um ponto de entrada de execução; uma "execução automática" exibida em uma página web normalmente ainda exige que algum serviço externo envie uma transação quando as condições são atendidas.

Os opcodes são as ações básicas do bytecode

O bytecode da EVM é composto de opcodes sucessivos. Um opcode pode ser entendido como a menor ação que a máquina virtual reconhece: por exemplo fazer aritmética, comparar valores, ler dados da chamada, ler ou escrever o armazenamento, e chamar outros contratos.

Opcodes diferentes têm regras definidas de entrada, de saída e de consumo de gas. Um nó não precisa entender os nomes de negócio de um contrato: executar na ordem dos opcodes já basta para checar se o resultado que outro nó apresentou cumpre o protocolo.

Uma única linha de uma linguagem de alto nível pode ser compilada em vários opcodes. Ao contrário, olhar um opcode isolado também não permite entender uma intenção de negócio completa, então revisar um contrato normalmente implica combinar código-fonte, configurações de compilação, dados da chamada e o endereço de implantação real.

Dados temporários e estado persistente

Nem todos os dados usados durante a execução são gravados permanentemente na blockchain. Convém primeiro distinguir três lugares:

  • os dados da chamada são a entrada apenas de leitura que esta chamada traz;
  • a memória é uma área de trabalho temporária usada durante esta execução e não é preservada depois;
  • o armazenamento pertence a um contrato concreto e, depois de gravado com sucesso, passa a ser parte do estado da blockchain para chamadas posteriores lerem.

A EVM também usa uma estrutura de cálculo temporária do tipo último a entrar, primeiro a sair, chamada pilha. Os opcodes tiram valores do topo da pilha e devolvem o resultado depois de calcular. Quem lê sem ser especialista não precisa acompanhar cada passo à mão, mas precisa saber que "uma mudança na memória" e "o armazenamento do contrato já mudou" não são a mesma coisa.

Gravar no armazenamento persistente normalmente consome mais gas do que apenas fazer um cálculo temporário. Apagar ou alterar o armazenamento também está sujeito às regras do protocolo: o estado on-chain não é um arquivo local que um programa comum possa sobrescrever à vontade.

As mudanças de estado precisam poder ser recalculadas

As transações de um mesmo bloco têm uma ordem determinada. Partindo do mesmo estado anterior ao bloco e executando na ordem as mesmas transações, os nós deveriam obter o mesmo estado posterior ao bloco; caso contrário, não conseguem concordar sobre um livro-razão comum.

Por isso um contrato da EVM não pode, ao executar, acessar diretamente qualquer página web, a hora de um dispositivo ou o resultado aleatório de algum servidor. Quando é preciso um preço, um dado do clima ou outra informação fora da cadeia, uma parte externa precisa primeiro levar esse dado para a cadeia na forma de uma transação. A EVM consegue checar como o código usa essa entrada, mas não consegue provar automaticamente que o fato fora da cadeia correspondente seja verdadeiro.

As informações que o bloco fornece, como hora e número de bloco, também vêm do ambiente de execução que o protocolo define. Quem desenvolve pode lê-las conforme as regras, mas não deveria confundir esses valores com um relógio externo preciso ou com uma fonte secreta de aleatoriedade imune ao processo de proposta de blocos.

O gas limita a carga de trabalho de cada execução

Cada operação da EVM consome certa quantidade de gas. O gas é uma unidade de medida do trabalho de computação e de armazenamento, não um token separado; na rede principal do Ethereum, as taxas de execução reais normalmente são pagas com o ativo nativo da rede, o ETH.

Quem envia uma transação define o gas máximo que ela pode consumir. Durante a execução, a EVM acumula gas conforme as operações realmente realizadas; se o gas restante não for suficiente para completar o passo seguinte, a execução falha por esgotamento de gas.

O gas evita que laços infinitos ou chamadas excepcionalmente complexas ocupem sem custo os recursos de computação de todos os nós. Também significa que uma mesma função pode consumir quantidades diferentes conforme a entrada, o estado atual e o caminho de execução. Uma transação de valor alto não necessariamente executa mais código do que uma de valor baixo.

Sucesso, reversão e falha

Um contrato pode terminar normalmente devolvendo dados, pode reverter por decisão própria, ou pode falhar por uma operação inválida, por esgotamento de gas ou por outro motivo. Ao falhar, as alterações de estado ainda não confirmadas nesse caminho de chamada são desfeitas conforme as regras, mas os recursos de computação que a transação já consumiu ainda podem gerar taxa.

Uma transação pode disparar vários níveis de chamadas a contratos. Se uma chamada interna falha, o contrato externo pode, conforme seu código, escolher seguir processando o resultado devolvido, ou fazer toda a transação reverter. Por isso "algum passo interno falhou" e "a transação inteira falhou no fim" precisam ser julgados junto com os resultados das chamadas.

Uma reversão de estado também não desfaz o fato de uma transação ter sido incluída em um bloco. Um explorador de blocos pode mostrar uma transação falhada e o gas consumido; o que não surtiu efeito foram apenas as alterações esperadas no estado do contrato.

Ler resultados e enviar transações

Uma carteira ou aplicação pode fazer um nó simular localmente um pedido apenas de leitura e devolver o resultado na hora. Esse tipo de leitura não forma um novo consenso de toda a rede e não modifica o estado on-chain, então normalmente não exige que a pessoa assine e pague uma taxa on-chain.

Já uma operação que precisa mudar o estado deve formar uma transação, ser assinada por uma conta e transmitida, e ser executada em conjunto pelos nós depois de entrar em um bloco. Simular antes de enviar pode ajudar a perceber falhas evidentes, mas o resultado final ainda pode ser afetado pela ordenação das transações, por mudanças de estado, pelas configurações de gas e pela rede escolhida.

Por isso, a interface de uma aplicação mostrar "previsão de sucesso" não equivale a que a transação já esteja confirmada. O resultado real on-chain exige consultar, na rede correta, o status da transação, o resultado da execução e o estado do contrato.

A EVM e o Ethereum não são o mesmo conceito

A EVM descreve apenas parte das regras de execução de contratos inteligentes e de transição de estado. O Ethereum também inclui os formatos de contas e transações, a propagação de blocos, o consenso por prova de participação, a comunicação de rede e outros componentes do protocolo.

Outras blockchains também podem implementar a EVM ou um ambiente de execução muito parecido, para reaproveitar ferramentas de contratos e bytecode. Normalmente são chamadas de redes compatíveis com a EVM, mas continuam tendo histórico de blocos, arranjos de validação, ativo de taxas e fronteira de segurança próprios.

Então, "conseguir executar contratos da EVM" não indica que algo seja o Ethereum, nem garante que o mesmo endereço tenha o mesmo código implantado em redes diferentes. Ao usar uma aplicação em várias redes, ainda é preciso conferir a rede e seu número de rede, o endereço do contrato e o bytecode real.

Execução comum não equivale a contrato seguro

As regras determinísticas da EVM permitem que os nós reconfiram se um contrato foi executado conforme seu código, mas não permitem julgar se esse código corresponde ao resultado de negócio que a pessoa realmente queria. Permissões erradas, um contrato externo que chama de volta repetidamente antes de uma operação anterior terminar, problemas nas entradas de preço, o controle de atualizações ou uma interface que induz ao erro podem, cada um, fazer uma transação totalmente conforme às regras da EVM produzir uma consequência inesperada.

Uma compilação bem-sucedida, uma execução bem-sucedida on-chain ou um código-fonte publicado também não substituem, cada um por si, uma auditoria de segurança. Julgar um contrato concreto exige combinar o bytecode implantado, o estado de inicialização, as permissões administrativas, as dependências externas e o caminho de chamada real.

Perguntas frequentes

A EVM é um servidor em nuvem?

Não. Ela é um conjunto de regras de execução que o software dos nós implementa em conjunto, e não corresponde a nenhuma máquina fixa específica.

O código Solidity é executado diretamente pela EVM?

Normalmente não. O código-fonte Solidity primeiro é convertido por um compilador em bytecode da EVM, e o que os nós executam é o bytecode implantado.

Ler um contrato sempre exige pagar taxa de gas?

Um pedido local apenas de leitura normalmente não forma uma transação on-chain, então não gera diretamente uma taxa on-chain. Se a leitura for parte da execução de outra transação que vai para a cadeia, as operações correspondentes ainda contam no gas daquela transação.

A EVM consegue ler dados da internet diretamente?

Não. Dados externos precisam ser levados à cadeia por algum participante ou serviço por meio de uma transação; a EVM só consegue processar, conforme as regras, uma entrada já fornecida.

Ser compatível com a EVM significa que um contrato migra sem modificação?

Não há garantia. O grau de compatibilidade, a versão do protocolo, os opcodes disponíveis, as regras de taxas, os contratos de sistema e as dependências externas podem ser diferentes, então ainda é preciso verificar e testar na rede de destino.

Conceitos relacionados

Continue com Ethereum, contrato inteligente, taxa de gas e blockchain, ou volte ao glossário de criptomoedas.

Fontes

Aviso legal
Este conteúdo é fornecido apenas para fins informativos e pode incluir produtos que não estão disponíveis na sua região. Não se trata de (i) consultoria ou recomendação de investimento; (ii) uma oferta ou solicitação para comprar, vender ou manter criptoativos ou ativos digitais; nem (iii) orientação financeira, contábil, jurídica ou fiscal. A posse de criptoativos ou ativos digitais, incluindo stablecoins, envolve riscos elevados e pode sofrer grandes variações de valor. Você deve avaliar cuidadosamente se negociar ou manter esses ativos é adequado para a sua situação financeira. Em caso de dúvida, consulte um profissional jurídico, fiscal ou de investimentos. As informações (incluindo dados de mercado e informações estatísticas, se houver) que aparecem nesta postagem têm caráter exclusivamente informativo. Embora esta publicação tenha sido escrita com todo o cuidado em relação aos dados e gráficos, não nos responsabilizamos por quaisquer erros na descrição ou omissão dos fatos, tampouco pelas opiniões aqui contidas.

© 2025 OKX. Este artigo pode ser reproduzido ou distribuído na íntegra, ou trechos de até 100 palavras podem ser usados, desde que não haja fins comerciais. Caso o artigo completo seja reproduzido ou redistribuído, é obrigatório informar claramente: “Este artigo é © 2025 OKX e está sendo utilizado com permissão.” Trechos permitidos devem citar o nome do artigo e incluir a atribuição, como: "Nome do artigo, [nome do autor, se aplicável], © 2025 OKX." Alguns conteúdos podem ter sido criados com o apoio de ferramentas de inteligência artificial (IA). Não são permitidos trabalhos derivados ou outros usos deste artigo.

Artigos relacionados

Ver mais
crypto-glossary-cover-v5.contentful

Glossário de cripto de A a Z: blockchain e trading

Conheça conceitos essenciais de cripto, blockchain e trading em definições breves, organizadas pelo termo em inglês e acompanhadas do nome em português. [A](#a) · [B](#b) · [C](#c) · [D](#d) · [E](#e)
29 de out. de 2026
Crypto adoption generic thumbnail

O que é DeFi?

Finanças descentralizadas (decentralized finance, DeFi) são um tipo de aplicação que oferece funções financeiras como troca de ativos e empréstimo, principalmente por meio de blockchains e contratos i
29 de out. de 2026
decentralized-exchange-dex

O que é uma DEX?

Uma exchange descentralizada (decentralized exchange, DEX) é um tipo de sistema de negociação que permite trocar ativos digitais por meio de protocolos de blockchain ou contratos inteligentes. Um cont
29 de out. de 2026
thumbnail:dao

O que é uma DAO?

Uma organização autônoma descentralizada (decentralized autonomous organization, DAO) é um modo de organização em que várias pessoas decidem em conjunto, administram recursos ou mantêm um projeto conf
29 de out. de 2026
DApps generic thumb

O que é uma DApp?

Uma aplicação descentralizada (decentralized application, DApp) é uma aplicação que entrega parte de suas regras ou de seu estado essenciais — por exemplo saldos, titularidade e registros de autorizaç
29 de out. de 2026
crypto-token

O que é um token de criptomoeda?

Um token de criptomoeda é uma unidade digital definida por um protocolo de blockchain ou por um programa on-chain, que pode ser registrada e transferida por meio de uma blockchain. Uma blockchain pode
29 de out. de 2026
Ver mais