O que é a EVM?
A EVM, ou Ethereum Virtual Machine, é o ambiente de execução que processa transações e executa o código de contratos inteligentes na Ethereum.Ela funciona como um computador virtual compartilhado, cujas regras são seguidas por clientes de execução da Ethereum em todo o mundo.Quando um usuário transfere um token, troca criptomoedas por meio de um aplicativo descentralizado, cria um NFT, fornece colateral a um protocolo de empréstimo ou chama outro contrato inteligente, a EVM calcula o resultado dessa ação.A EVM não existe como uma máquina física ou um servidor único.Em vez disso, cada nó participante da Ethereum aplica, de forma independente, as mesmas regras de execução às mesmas transações ordenadas.Esse design permite que os nós confirmem se saldos de contas, armazenamento de contratos, propriedade de tokens e outras alterações no estado da blockchain foram calculados corretamente.A documentação oficial da Ethereum Virtual Machine descreve a EVM como um ambiente virtual descentralizado que executa código de forma consistente nos nós da Ethereum.
A EVM é uma parte fundamental da camada de execução da Ethereum, mas não representa toda a rede Ethereum.A Ethereum também depende de consenso, comunicação peer-to-peer, armazenamento de dados, produção de blocos, validadores e outros componentes do protocolo.A EVM se concentra especificamente na computação e nas transições de estado.O que a EVM faz?
A EVM lê as instruções das transações, executa o bytecode de contratos inteligentes, calcula o consumo de gas e determina como o estado da Ethereum deve mudar.Ela pode transferir ETH, chamar uma função de contrato, implantar um novo contrato, atualizar o armazenamento de um contrato, criar logs de eventos ou retornar os dados solicitados.Antes de aplicar uma transação, o sistema de execução da Ethereum verifica requisitos como a assinatura do remetente, o nonce, o saldo disponível, o limite de gas e o formato da transação.Se a transação chamar um contrato inteligente, a EVM executará as instruções do contrato na ordem definida pelo bytecode.A EVM também pode chamar outros contratos durante a mesma transação.Isso permite que aplicativos descentralizados combinem vários protocolos e sistemas de tokens em uma única operação atômica.Após a execução, a EVM produz uma alteração de estado bem-sucedida ou informa uma falha.Se a execução for revertida, as alterações de estado pretendidas no contrato normalmente serão canceladas, embora o remetente geralmente ainda pague pelo trabalho computacional já realizado.O resultado final da execução pode incluir saldos atualizados, armazenamento modificado, logs emitidos, dados retornados e um recibo da transação.Por que a EVM é importante no mercado cripto
A EVM é importante porque transforma a Ethereum, que seria apenas uma rede de transferência de criptomoedas, em uma plataforma blockchain programável.Sem um ambiente de execução programável, uma blockchain pode se limitar principalmente a registrar transferências de seu ativo nativo.A EVM permite que desenvolvedores criem tokens, mercados de empréstimo, protocolos de negociação descentralizada, sistemas de stablecoins, jogos em blockchain, ferramentas de governança, aplicativos de identidade e outros serviços on-chain.Os contratos inteligentes executados na EVM podem manter ativos e aplicar regras sem exigir que um administrador central tradicional aprove cada ação.As mesmas regras de execução estão disponíveis para qualquer pessoa que possa enviar uma transação válida e pagar a taxa exigida.Essa estrutura sem permissão dá suporte a aplicativos cripto abertos que podem interagir entre si.A EVM também se tornou um padrão técnico importante fora da Ethereum, pois muitas outras redes blockchain usam ambientes de execução compatíveis ou equivalentes à EVM.Essa adoção mais ampla permite que desenvolvedores reutilizem contratos inteligentes, carteiras, linguagens de programação, padrões de tokens e ferramentas de desenvolvimento em várias redes.A EVM é uma blockchain?
A EVM não é uma blockchain por si só.Ela é o sistema virtual de execução usado para calcular os efeitos das transações em uma blockchain.A Ethereum é a rede blockchain que registra blocos, mantém o consenso, distribui dados e usa a EVM para processar atividades programáveis.Uma comparação útil é considerar a Ethereum como a rede completa e a EVM como o mecanismo de computação dentro de sua camada de execução.Outras redes blockchain podem implementar uma EVM sem compartilhar o histórico da blockchain da Ethereum, seus validadores, saldos, orçamento de segurança ou ativo nativo.Por isso, duas blockchains baseadas na EVM podem executar códigos de contratos inteligentes semelhantes e, ainda assim, permanecer redes completamente separadas.Como a EVM processa uma transação
Uma transação da EVM geralmente começa quando o usuário escolhe uma ação em uma carteira de criptomoedas ou em um aplicativo descentralizado.A carteira cria uma transação com informações como endereço de destino, valor transferido, dados de entrada, nonce, limite de gas e configurações de taxas.O usuário assina a transação com uma chave privada.A assinatura comprova que a transação foi autorizada pelo controlador da conta remetente.A transação assinada é enviada a um nó da Ethereum e pode entrar no pool de transações pendentes.Um produtor de blocos seleciona transações e as inclui em um payload de bloco ordenado.A EVM processa cada transação com base no estado criado por todas as transações anteriores naquele bloco.Essa ordem é importante porque uma transação pode alterar saldos, preços, permissões ou valores de armazenamento usados por outra transação.Após processar o bloco completo, os clientes de execução calculam o estado resultante da Ethereum.Outros nós repetem o mesmo trabalho para confirmar se o bloco proposto segue as regras da Ethereum.A documentação oficial da Ethereum sobre transações explica como instruções assinadas podem transferir valor, criar contratos ou chamar contratos existentes.
Transições de estado da EVM
Uma transição de estado é a mudança de um estado válido da Ethereum para outro estado válido.O estado da Ethereum inclui contas, saldos de ETH, código de contratos inteligentes, armazenamento de contratos e nonces de contas.A EVM recebe como entradas o estado atual e uma transação ordenada.Em seguida, aplica as regras de execução da Ethereum para calcular o próximo estado.Em uma transferência básica de ETH, a transição de estado reduz o saldo do remetente e aumenta o saldo do destinatário.Em uma troca de tokens, a transição pode atualizar saldos de tokens, permissões, reservas de pools de liquidez, registros de taxas e logs de eventos.Em uma transação de empréstimo, ela pode atualizar valores de colateral, saldos de dívida, índices de juros e indicadores de risco da conta.Todo cliente de execução honesto deve calcular a mesma transição de estado a partir das mesmas condições iniciais.Esse comportamento determinístico é essencial porque os nós precisam concordar com o resultado sem confiar em um computador central.Contas da Ethereum e a EVM
A Ethereum tem contas controladas externamente e contas de contrato.Uma conta controlada externamente é controlada por meio de uma chave privada.Uma conta de contrato é controlada pelo código de um contrato inteligente.Ambos os tipos de conta podem armazenar ETH, mas seu comportamento é diferente.Uma conta controlada externamente pode iniciar uma transação depois que seu controlador a assina.Uma conta de contrato não assina de forma independente uma transação normal com uma chave privada.Seu código é executado quando ela recebe uma chamada válida por meio de outra transação ou interação com contrato.A documentação oficial da Ethereum sobre contas explica que as contas podem ser controladas por usuários ou implantadas como contratos inteligentes.
A EVM lê as informações da conta ao validar transações, transferir valor, carregar código de contrato e atualizar o armazenamento.Contratos inteligentes e a EVM
Um contrato inteligente é um programa armazenado em um endereço da Ethereum.A EVM executa esse programa quando uma transação ou outro contrato chama uma de suas funções.Os contratos inteligentes podem conter variáveis, funções, permissões, eventos, erros e regras para gerenciar ativos digitais.Desenvolvedores geralmente escrevem contratos inteligentes da Ethereum em Solidity ou Vyper.Antes da implantação, o código-fonte é compilado em bytecode de nível mais baixo para a EVM.O guia oficial da Ethereum sobre contratos inteligentes explica que implantar e interagir com contratos exige transações e gas.
Depois da implantação, o bytecode de execução do contrato é armazenado como parte da conta do contrato.A EVM lê e executa esse bytecode, em vez de entender diretamente o código-fonte original em Solidity ou Vyper.Essa distinção é importante porque o bytecode implantado é o código que realmente controla o comportamento on-chain.O que é bytecode da EVM?
O bytecode da EVM é a sequência de instruções legível por máquina que a Ethereum Virtual Machine executa.Ele costuma ser apresentado como um longo valor hexadecimal.Cada parte do bytecode representa um opcode, um valor de dados ou outra informação de execução.O código-fonte de um contrato inteligente é mais fácil de ler para humanos, enquanto o bytecode é projetado para ser processado pela EVM.Um contrato implantado normalmente tem código de criação e código de execução.O código de criação é executado uma vez durante a implantação e retorna o código de execução que permanece no endereço do contrato.O código de execução é executado sempre que usuários ou outros contratos interagem com o contrato implantado.A introdução da Solidity aos contratos inteligentes explica que a EVM lê, interpreta e executa os bytes armazenados na área de código de um contrato.
Desenvolvedores costumam publicar e verificar o código-fonte para que os usuários possam compará-lo com o bytecode implantado.O que são opcodes da EVM?
Opcodes são instruções individuais de baixo nível compreendidas pela EVM.Cada opcode executa uma operação específica.Alguns opcodes realizam cálculos aritméticos, comparações ou operações bit a bit.Outros leem dados da transação, inspecionam um endereço, carregam memória, acessam o armazenamento de contratos, criam logs ou chamam outro contrato.Entre os exemplos estão ADD, para adição; SLOAD, para ler o armazenamento de contratos; SSTORE, para alterar o armazenamento; CALL, para chamar outra conta; e REVERT, para interromper a execução e retornar um erro.A referência oficial de opcodes da EVM da Ethereum lista as instruções disponíveis e seus custos de gas.
Os opcodes são executados em sequência, a menos que uma instrução altere o contador de programa ou encerre a execução.Atualizações da Ethereum podem adicionar instruções, modificar custos de gas ou mudar o comportamento de determinadas operações.Por isso, as configurações do compilador precisam ter como alvo uma versão da EVM compatível com a rede de destino.Como funciona a stack da EVM
A EVM costuma ser descrita como uma máquina virtual baseada em stack.Uma stack é uma estrutura de dados temporária que segue a ordem último a entrar, primeiro a sair.Os opcodes da EVM geralmente usam valores do topo da stack e devolvem o resultado ao topo dela.Por exemplo, uma instrução de adição remove dois valores da stack, soma-os e coloca o resultado de volta na stack.A EVM usa palavras de 256 bits em muitas operações.Esse tamanho de palavra é adequado aos cálculos criptográficos e aos valores de conta da Ethereum.A stack tem profundidade limitada, portanto compiladores e desenvolvedores precisam organizar cálculos complexos com cuidado.Um erro na stack pode fazer a execução falhar.Memória da EVM
A memória da EVM é uma área temporária endereçável por byte, disponível durante uma chamada de contrato.Ela pode armazenar argumentos de funções, dados retornados, arrays temporários, valores codificados e resultados intermediários de cálculos.A memória é apagada quando o contexto de execução atual termina.Ela não é usada para armazenamento permanente on-chain.O custo de gas da memória pode aumentar à medida que o contrato acessa áreas maiores.Por isso, o uso eficiente da memória pode reduzir o custo de transações complexas.Desenvolvedores precisam distinguir memória de armazenamento, pois as duas áreas têm duração, finalidade e custos de gas diferentes.Armazenamento da EVM
O armazenamento da EVM é a área persistente de dados associada a um contrato inteligente.Os valores armazenados continuam fazendo parte do estado da Ethereum após o fim da transação.Os contratos usam o armazenamento para saldos de tokens, registros de propriedade, configurações de protocolos, dívidas de contas, votos de governança e outras informações de longo prazo.Gravar no armazenamento geralmente custa mais do que ler a memória temporária, pois todos os nós validadores precisam preservar e processar a alteração de estado.O armazenamento é organizado em slots de 256 bits.A Solidity mapeia variáveis, arrays, estruturas e mappings de alto nível nesses slots, de acordo com regras de layout definidas.Alterações inseguras no layout de armazenamento de um contrato atualizável podem corromper dados existentes.Por isso, o design do armazenamento é uma parte importante da segurança de contratos inteligentes e da otimização de gas.Calldata e dados retornados
Calldata são os dados de entrada somente para leitura fornecidos a uma chamada externa de contrato.Ela geralmente contém um seletor de função seguido de argumentos codificados.A EVM usa essas informações para determinar qual função deve ser executada e quais valores devem ser passados a ela.Calldata é diferente de memória porque o contrato que a recebe não pode modificá-la diretamente.Os contratos também podem retornar dados à conta ou ao contrato que os chamou.Os dados retornados podem conter um saldo de tokens, uma cotação calculada, o resultado de uma transação ou um erro codificado.Aplicativos externos costumam usar chamadas somente para leitura para simular funções de contratos e obter dados retornados sem criar uma transação on-chain.Gas e a EVM
Gas é a unidade usada para medir o trabalho computacional realizado pela EVM.Cada opcode tem um custo de gas definido.Uma transferência simples de ETH normalmente exige menos gas do que uma transação complexa que envolve vários contratos inteligentes e alterações no armazenamento.O remetente define um limite de gas, que estabelece a quantidade máxima de gas que a transação pode consumir.Se a execução consumir todo o gas disponível antes de terminar, a transação ficará sem gas e as alterações de estado pretendidas serão revertidas.O remetente ainda pagará pela computação já realizada.A documentação oficial da Ethereum sobre gas e taxas explica que transações mais complexas com contratos inteligentes exigem mais trabalho computacional e um limite de gas maior.
O gas impede que programas usem recursos ilimitados da rede.Sem gas, códigos defeituosos ou maliciosos poderiam impor uma carga computacional interminável a todos os clientes de execução.Limite de gas vs. preço do gas
O limite de gas é a quantidade máxima de gas computacional que uma transação pode usar.O preço do gas determina quanto o remetente está disposto a pagar por unidade de gas, conforme as regras de taxas aplicáveis.Um limite de gas alto não significa que a transação necessariamente consumirá todo esse gas.Em geral, o remetente paga com base na quantidade efetivamente utilizada, sujeito às regras atuais de taxas de transação.Um limite de gas muito baixo pode fazer a transação falhar antes do fim da execução.Uma configuração de taxa muito baixa pode fazer a transação permanecer pendente quando há alta demanda por espaço em blocos.As carteiras geralmente estimam ambos os valores, mas as estimativas podem mudar porque o estado da Ethereum e a demanda da rede podem se alterar antes da inclusão da transação.Contratos pré-compilados
Contratos pré-compilados são funções especiais no nível do protocolo, disponíveis em endereços reservados da Ethereum.Eles podem ser chamados de maneira semelhante a uma chamada normal de contrato inteligente.No entanto, seu comportamento é implementado diretamente pelos clientes de execução, e não por meio de bytecode normal da EVM armazenado no endereço.Os precompiles são usados com frequência em operações criptográficas que seriam ineficientes se fossem executadas por sequências comuns de opcodes.A documentação da Solidity sobre contratos pré-compilados explica que seu comportamento e uso de gas são implementados no ambiente de execução da EVM.
Atualizações da Ethereum podem introduzir precompiles adicionais quando a rede precisar de operações padronizadas e eficientes.Chamadas de mensagem
Uma chamada de mensagem é uma interação da EVM na qual uma conta chama outra conta.Uma conta controlada externamente pode iniciar o processo enviando uma transação assinada.Em seguida, um contrato inteligente pode chamar outro contrato durante a execução.Uma chamada de mensagem pode transferir ETH, fornecer dados de entrada, alocar gas e solicitar a execução de código de contrato.Chamadas aninhadas permitem que vários aplicativos interajam durante uma transação.No entanto, essas chamadas também geram preocupações de segurança, pois um contrato externo pode se comportar de forma inesperada ou maliciosa.Contratos seguros devem gerenciar cuidadosamente as chamadas externas e proteger estados importantes contra reentrância e outros riscos de interação.Criação de contratos
A EVM pode criar um novo contrato inteligente ao processar uma transação de criação de contrato ou um opcode de criação de contrato.A implantação começa com o código de inicialização.Esse código pode processar argumentos do construtor, definir valores iniciais de armazenamento e retornar o bytecode de execução.Em seguida, o bytecode de execução é armazenado no novo endereço do contrato.A implantação de contratos exige gas, pois a EVM precisa executar o código de criação e adicionar código e estado persistentes à Ethereum.Contratos maiores e construtores mais complexos geralmente custam mais para implantar.A implantação pode falhar se ficar sem gas, violar regras de execução ou for revertida durante a inicialização.Eventos e logs
Contratos inteligentes podem criar logs durante a execução da EVM.Os desenvolvedores geralmente disponibilizam esses logs por meio de eventos da Solidity.Os eventos podem registrar transferências de tokens, swaps, depósitos, votos de governança, alterações de permissões e outras atividades de contratos.Os logs são armazenados nos recibos das transações e podem ser indexados por aplicativos externos.Eles são úteis para carteiras, exploradores de blockchain, sistemas de análise e interfaces de aplicativos descentralizados.Os contratos não podem ler diretamente logs de eventos antigos da mesma maneira que leem o armazenamento.Por isso, um evento não deve ser usado como única fonte de informação necessária para uma execução futura do contrato.Reversões e falhas em transações da EVM
Uma transação da EVM pode falhar por vários motivos.A transação pode ter uma assinatura inválida, nonce incorreto, saldo insuficiente, gas inadequado ou formato não compatível.Um contrato inteligente também pode ser revertido intencionalmente quando uma condição necessária não é atendida.Por exemplo, uma transferência de tokens pode ser revertida quando o remetente não tem tokens suficientes.Um swap descentralizado pode ser revertido se o valor recebido ficar abaixo do mínimo definido pelo usuário.Uma verificação de permissões do contrato pode ser revertida se o chamador não estiver autorizado.Uma reversão normalmente cancela as alterações de estado realizadas no caminho de execução que falhou.O gas já consumido geralmente não é reembolsado, pois os clientes de execução realizaram o trabalho solicitado.Uma transação malsucedida não indica necessariamente uma falha da Ethereum ou da EVM.Muitas vezes, significa que a transação específica não conseguiu satisfazer as regras do contrato ou do protocolo no estado atual.Execução atômica
As transações da EVM são atômicas: dentro do escopo de execução da transação, suas alterações de estado são concluídas em conjunto ou falham em conjunto.Essa propriedade permite que uma transação complexa execute várias etapas conectadas sem deixar apenas parte do resultado pretendido.Por exemplo, uma transação de finanças descentralizadas pode tomar um ativo emprestado, fazer um swap, quitar outra obrigação e atualizar o colateral em uma única execução.Se uma etapa necessária falhar e a transação for revertida, as alterações anteriores de estado feitas nessa transação também serão desfeitas.A atomicidade reduz alguns riscos de liquidação, mas não garante que uma transação seja financeiramente vantajosa ou segura.Um contrato malicioso ainda pode concluir uma transação atômica que transfira ativos de um usuário que tenha concedido sua aprovação.Execução determinística
A EVM é determinística porque as mesmas entradas válidas e o mesmo estado inicial devem produzir o mesmo resultado em todos os clientes de execução honestos.O determinismo é necessário para a verificação descentralizada.Se os nós calculassem resultados diferentes para a mesma transação, não poderiam concordar sobre saldos ou estados dos contratos.Por isso, os contratos inteligentes não podem solicitar diretamente informações externas variáveis de sites comuns ou bancos de dados privados durante a execução da EVM.Dados externos normalmente são introduzidos por meio de um oráculo ou de outra transação on-chain.Assim, todos os nós podem processar o mesmo valor enviado de acordo com as mesmas regras do contrato.EVM e consenso
A EVM executa as transações, enquanto o sistema de consenso da Ethereum ajuda os validadores a concordar sobre a ordem aceita e a finalidade dos blocos.A execução determina se as transações e suas alterações de estado seguem as regras da Ethereum.O consenso determina qual histórico de blockchain válido será aceito pela rede.Após a transição da Ethereum para Proof of Stake, um nó completo usa um cliente de execução e um cliente de consenso.O cliente de execução processa transações e mantém o estado de execução da Ethereum.O cliente de consenso acompanha a atividade dos validadores, propostas de blocos, atestações, escolha de fork e finalidade.A documentação oficial da Ethereum sobre nós e clientes explica como esses componentes trabalham em conjunto.
A EVM não pode decidir de forma independente qual bloco proposto se tornará canônico.O consenso não pode calcular de forma independente resultados complexos de contratos inteligentes sem a camada de execução.Clientes de execução da EVM
Um cliente de execução é um software que implementa as regras de execução da Ethereum.Ele valida transações, processa bytecode da EVM, mantém o estado da blockchain, comunica-se com pares e fornece interfaces para aplicativos.Implementações diferentes de clientes de execução podem ser escritas em linguagens de programação distintas, desde que sigam as mesmas especificações do protocolo.A diversidade de clientes melhora a resiliência, pois a Ethereum não depende totalmente de uma única base de código.No entanto, todo cliente de execução compatível deve calcular o mesmo resultado válido.As Especificações da camada de execução da Ethereum fornecem uma referência executável e legível para o comportamento de execução da rede e suas atualizações.
Testes das especificações de execução ajudam desenvolvedores a confirmar que diferentes clientes lidam de forma consistente com condições incomuns.EVM e JSON-RPC
Carteiras e aplicativos descentralizados geralmente se comunicam com clientes de execução por meio de métodos JSON-RPC.Esses métodos podem ler saldos de contas, estimar gas, simular chamadas de contratos, recuperar logs, inspecionar blocos e enviar transações assinadas.A especificação da API de execução da Ethereum descreve JSON-RPC como a interface canônica entre usuários, infraestrutura e clientes de execução.
Uma chamada RPC somente para leitura pode solicitar que um cliente de execução simule o comportamento da EVM sem adicionar uma transação à blockchain.Um método de envio de transação assinada transmite uma transação que poderá ser incluída em um bloco posteriormente.Provedores de RPC tornam o uso de aplicativos mais conveniente, mas usuários que dependem de um provedor remoto confiam que ele fornecerá dados precisos e estará disponível.Executar um nó próprio pode proporcionar acesso mais direto e independente às informações de execução da Ethereum.Blockchains compatíveis e equivalentes à EVM
Uma blockchain compatível com a EVM aceita contratos inteligentes e ferramentas desenvolvidos para a Ethereum Virtual Machine.Uma blockchain equivalente à EVM geralmente busca reproduzir mais fielmente o comportamento de execução da Ethereum.Ambos os modelos podem permitir que desenvolvedores usem Solidity, endereços no padrão da Ethereum, carteiras conhecidas e padrões comuns de tokens.No entanto, outra rede EVM pode ter validadores, taxas, regras de finalidade, tempos de bloco, bridges, contratos de sistema e premissas de segurança diferentes.Um contrato que funciona na Ethereum ainda pode precisar ser testado antes da implantação em outra rede EVM.O alvo do compilador, os opcodes compatíveis, os precompiles, os tipos de transação, o comportamento do gas e as dependências externas podem variar.A documentação do compilador Solidity alerta que compilar para a versão errada da EVM pode gerar um comportamento incorreto ou falhas.
A compatibilidade com a EVM melhora a portabilidade, mas não torna idênticas as diferentes blockchains.Atualizações da EVM
A EVM pode mudar por meio de atualizações do protocolo da Ethereum.Uma atualização pode introduzir um opcode, modificar custos de gas, adicionar um tipo de transação, alterar o comportamento de contas ou fornecer um novo precompile.As mudanças propostas no protocolo costumam ser documentadas por meio de Ethereum Improvement Proposals.Após análise, testes, coordenação e adoção pela comunidade, mudanças selecionadas podem ser incluídas em uma atualização da rede.Os clientes de execução precisam atualizar seus softwares para seguir as novas regras a partir do momento de ativação.Desenvolvedores de contratos inteligentes devem acompanhar as atualizações, pois as novas regras podem afetar alvos de compilação, estimativas de gas, assembly de baixo nível e comportamento dos contratos.Os contratos devem evitar depender de comportamentos da EVM não documentados que podem não permanecer estáveis após atualizações.Riscos de segurança da EVM
A EVM executa bytecode válido de forma consistente, mas não garante que o bytecode seja seguro ou justo.Um contrato inteligente pode conter um erro de programação, permissões fracas, um mecanismo de atualização inseguro, uma falha econômica ou uma função intencionalmente maliciosa.A EVM pode executar corretamente essa lógica prejudicial porque as instruções em si são válidas.Entre os riscos comuns de contratos inteligentes estão reentrância, erros de controle de acesso, manipulação de oráculos, erros aritméticos, uso indevido de assinaturas, colisões de armazenamento e chamadas externas inseguras.Falhas no compilador também podem afetar o bytecode implantado.A lista oficial de falhas conhecidas do compilador Solidity ajuda desenvolvedores a identificar problemas relevantes para a segurança associados a versões do compilador.
Auditorias, testes, verificação formal, revisão de código, permissões limitadas e controles de atualização cautelosos podem reduzir os riscos.Nenhuma auditoria pode garantir que um contrato da EVM nunca falhará ou será explorado.Riscos da EVM para usuários de cripto
Usuários de cripto interagem com a EVM sempre que aprovam tokens, assinam transações ou usam um contrato inteligente da Ethereum.Uma assinatura de carteira pode autorizar mais do que uma simples transferência.Ela pode aprovar o gasto de tokens, chamar um contrato, criar uma delegação ou conceder outro tipo de permissão.Os usuários devem ler as solicitações de transação e verificar o contrato de destino antes de assinar.Uma execução bem-sucedida da EVM apenas comprova que a transação seguiu as regras do código e do protocolo.Isso não comprova que o usuário pretendia obter aquele resultado ou que o aplicativo era confiável.Aplicativos descentralizados maliciosos podem usar chamadas válidas da EVM para transferir ativos aprovados.Os usuários devem evitar links desconhecidos, verificar endereços de contratos, limitar aprovações de tokens e manter ativos de longo prazo separados das carteiras usadas em aplicativos experimentais.Riscos da EVM para traders de cripto
Traders de cripto podem enfrentar riscos relacionados à EVM ao usar protocolos descentralizados de negociação, empréstimo, staking, bridge ou liquidação.Uma negociação pode falhar porque o preço mudou antes de a execução da EVM alcançar a transação.Um swap pode gerar um resultado pior quando o usuário permite uma faixa ampla de slippage.Uma transação pode ser reordenada em relação a outras transações no mesmo bloco.Essa ordem pode afetar preços de pools, resultados de liquidação e disponibilidade de tokens.Taxas de gas elevadas também podem tornar caro fechar ou ajustar uma posição on-chain durante períodos de estresse no mercado.Um trader pode ter colateral suficiente em tokens, mas não dispor do ETH nativo necessário para pagar pela execução.Por isso, manter saldo para gas e revisar as configurações das transações fazem parte da gestão de risco do trading on-chain.EVM e Maximal Extractable Value
Maximal Extractable Value se refere ao valor que pode ser obtido controlando ou influenciando a inclusão e a ordem das transações.A EVM processa as transações na sequência definida pelo bloco.Se duas transações interagirem com o mesmo pool de liquidez, a primeira poderá alterar o resultado recebido pela segunda.Searchers e sistemas de construção de blocos podem usar essa propriedade em estratégias de arbitragem, liquidação ou outras operações.Algumas estratégias melhoram o alinhamento de preços, enquanto outras podem piorar a execução para os usuários.Um ataque sandwich insere transações antes e depois do swap de um usuário para lucrar com o impacto do swap sobre o preço.A documentação oficial da Ethereum sobre Maximal Extractable Value explica como a inclusão, exclusão e ordenação de transações podem gerar valor econômico.
Os usuários podem reduzir parte da exposição ao definir limites de slippage adequados, evitar pools com pouca liquidez e verificar opções de execução protegida quando disponíveis.EVM e padrões de tokens
A EVM permite que desenvolvedores implementem interfaces de tokens compartilhadas por meio de contratos inteligentes.O ERC-20 define uma interface comum para tokens fungíveis.ERC-721 e ERC-1155 oferecem suporte a estruturas comuns para ativos únicos e mult tokens.Padrões compartilhados permitem que carteiras, interfaces de negociação, exploradores de blockchain e aplicativos descentralizados interajam com muitos tokens por meio de funções conhecidas.A documentação oficial da Ethereum sobre padrões de tokens explica como interfaces comuns melhoram a interoperabilidade.
Um padrão de token define funções e eventos esperados, mas não garante que todo contrato de token seja seguro ou administrado de forma honesta.Os contratos de tokens ainda podem incluir regras personalizadas de transferência, taxas, listas de bloqueio, poderes de emissão ou permissões de atualização.EVM e redes Layer 2
Muitas redes Layer 2 da Ethereum oferecem um ambiente de execução compatível ou equivalente à EVM.Elas processam transações fora do ambiente de execução principal da Ethereum e usam a Ethereum para parte de seu modelo de liquidação, disponibilidade de dados ou segurança.Isso pode reduzir o custo das transações e aumentar a capacidade de processamento.A visão geral oficial da Ethereum sobre Layer 2 explica como os rollups processam atividades fora da Layer 1 da Ethereum e usam a Ethereum como base de liquidação.
Uma EVM de Layer 2 pode executar bytecode de contratos inteligentes semelhante, mas usar processos diferentes de produção de blocos, cálculo de taxas, saques e finalidade.Os usuários devem compreender o sequenciador, a bridge, o sistema de provas, o método de publicação de dados e os controles de atualização da rede Layer 2 específica.A semelhança com a EVM não elimina os riscos adicionais introduzidos pela infraestrutura de Layer 2.Benefícios da EVM
A EVM oferece um ambiente padronizado para aplicativos cripto programáveis.Ela permite que nós independentes verifiquem os mesmos resultados de contratos inteligentes.Ela possibilita a implantação aberta, pois, em geral, desenvolvedores não precisam da permissão de um operador central para publicar um contrato.Ela permite a composabilidade, já que um contrato inteligente pode interagir com outro.Ela oferece suporte a padrões de tokens e ferramentas de desenvolvimento amplamente utilizados.Também fornece a outras redes blockchain um modelo de execução comum, que pode reduzir os custos de migração para desenvolvedores.A grande quantidade de ferramentas, documentação, conhecimento sobre testes e pesquisas de segurança relacionadas à EVM pode tornar o desenvolvimento de aplicativos mais acessível.Limitações da EVM
A computação na EVM é mais cara do que a computação comum em um servidor centralizado, pois muitos nós precisam verificar o resultado.O armazenamento persistente também é caro porque aumenta o estado da blockchain mantido pelos clientes de execução.O espaço nos blocos da Ethereum é limitado, então as taxas de transação podem subir quando muitos usuários disputam a execução.A EVM processa transições de estado ordenadas, o que pode limitar a capacidade de processamento quando muitas transações acessam o mesmo estado.Contratos inteligentes não podem ser alterados facilmente após a implantação, a menos que um sistema de atualização tenha sido projetado com antecedência.A possibilidade de atualização oferece flexibilidade, mas também introduz riscos relacionados a administradores e ao layout do armazenamento.A EVM também não pode determinar se informações externas são verdadeiras sem depender de dados enviados por um oráculo ou outro processo confiável.Exemplo de swap de tokens na EVM
Suponha que um usuário queira trocar um token ERC-20 por outro por meio de um pool de liquidez descentralizado.A carteira cria dados de transação que chamam o pool ou o contrato de roteamento.O usuário assina a transação e a envia à rede Ethereum.Depois que a transação é incluída em um bloco, a EVM verifica a permissão de uso dos tokens do usuário e chama os contratos necessários.Os contratos calculam o resultado da troca naquele momento, aplicam as taxas do protocolo e comparam o valor de saída com o valor mínimo aceito pelo usuário.Se os requisitos forem atendidos, a EVM atualiza os saldos dos tokens e o armazenamento do pool de liquidez.Ela também cria logs de eventos que aplicativos externos podem ler.Se o valor de saída ficar abaixo do mínimo definido pelo usuário ou outra condição falhar, a transação será revertida.Em geral, o usuário ainda paga o gas consumido antes da reversão.Esse exemplo mostra como a execução da EVM conecta assinaturas de carteiras, aprovações de tokens, contratos inteligentes, gas, alterações de estado e recibos de transações.Como revisar uma transação da EVM
Primeiro, confirme a rede em que a transação será executada.Segundo, verifique o endereço de destino ou o contrato inteligente.Terceiro, confira o ativo e o valor que serão transferidos.Quarto, verifique se a transação solicita uma aprovação de token ou outra permissão contínua.Quinto, confira a estimativa de gas e as configurações da taxa máxima.Sexto, verifique o resultado esperado, o valor mínimo a receber e o prazo de uma negociação descentralizada.Sétimo, use um explorador de blockchain ou uma ferramenta de simulação confiável para revisar a transação, quando apropriado.Oitavo, evite assinar se a carteira não conseguir explicar a ação ou se a origem da transação for desconhecida.Nono, mantenha ETH suficiente para transações futuras, incluindo saídas de emergência de posições on-chain.Décimo, lembre-se de que geralmente é difícil ou impossível reverter uma transação da EVM confirmada.Equívocos comuns sobre a EVM
Um equívoco comum é achar que a EVM é um computador físico pertencente a uma única organização.Na verdade, ela é um modelo de execução compartilhado, implementado por muitos clientes independentes.Outro equívoco é achar que a EVM armazena todas as criptomoedas dentro de contratos inteligentes.A EVM processa o estado, enquanto a propriedade é representada por registros de contas e contratos na blockchain.Um terceiro equívoco é pensar que a EVM e a Ethereum são a mesma coisa.A EVM é um componente importante do protocolo mais amplo da Ethereum.Um quarto equívoco é acreditar que uma execução válida da EVM garante uma transação segura.A EVM pode executar corretamente uma lógica de contrato maliciosa ou prejudicial do ponto de vista econômico.Um quinto equívoco é supor que todas as redes EVM têm a segurança da Ethereum.Outras redes baseadas na EVM podem ter validadores, bridges, sistemas de governança e premissas de confiança diferentes.Um sexto equívoco é achar que uma transação que falhou não tem custo.Uma execução da EVM malsucedida normalmente consome gas pelo trabalho já realizado.Perguntas frequentes
O que significa EVM?
EVM significa Ethereum Virtual Machine.O que é a EVM em termos simples?
A EVM é o ambiente de computação virtual que executa contratos inteligentes da Ethereum e calcula os resultados das transações on-chain.A EVM é um computador real?
Não. Ela é um modelo de execução virtual implementado por clientes de execução da Ethereum que rodam em muitos computadores independentes.A EVM é a mesma coisa que a Ethereum?
Não. A EVM é o ambiente de execução de contratos inteligentes da Ethereum, enquanto a Ethereum também inclui consenso, comunicação em rede, validadores, blocos e outros componentes do protocolo.Quais linguagens de programação funcionam com a EVM?
Solidity e Vyper são linguagens amplamente usadas para contratos inteligentes e compiladas em bytecode da EVM.O que é bytecode da EVM?
O bytecode da EVM é a sequência de instruções de baixo nível, legível por máquina, executada pela Ethereum Virtual Machine.O que são opcodes da EVM?
Opcodes são instruções individuais da EVM que realizam operações como cálculos aritméticos, acesso ao armazenamento, chamadas de contratos e tratamento de erros.Por que a EVM usa gas?
O gas mede o trabalho computacional, estabelece um custo para recursos de execução limitados e impede que programas consumam poder de processamento ilimitado.O que acontece quando uma transação da EVM fica sem gas?
As alterações de estado pretendidas são revertidas, mas, em geral, o remetente paga pelo gas consumido antes da interrupção da execução.A EVM pode executar contratos maliciosos?
Sim. A EVM executa bytecode tecnicamente válido mesmo quando o contrato contém lógica prejudicial, desonesta ou insegura.Todas as blockchains EVM estão conectadas?
Não. As blockchains EVM podem usar tecnologias de execução semelhantes e manter saldos, blocos, validadores, contratos e históricos de transações separados.O mesmo endereço de carteira funciona em todas as blockchains EVM?
A mesma chave privada normalmente pode gerar o mesmo formato de endereço, mas os ativos e a atividade desse endereço permanecem separados em cada blockchain.É possível reverter transações da EVM?
Em geral, uma transação da EVM confirmada não pode ser revertida, a menos que o contrato destinatário inclua uma função válida capaz de gerar uma nova transação corretiva.Por que uma transação da EVM pode falhar depois de uma simulação bem-sucedida na carteira?
O estado da blockchain, as condições de gas, os preços, a liquidez ou o armazenamento do contrato podem mudar antes da execução efetiva da transação.Qual é a diferença entre a EVM e um cliente de execução?
A EVM é a máquina virtual e o conjunto de regras para computação de contratos inteligentes, enquanto um cliente de execução é o software que implementa essas regras e gerencia os dados de execução da Ethereum.As redes Layer 2 usam a EVM?
Muitas redes Layer 2 usam ambientes compatíveis ou equivalentes à EVM, permitindo reutilizar contratos inteligentes e ferramentas da Ethereum.Conclusão
A EVM, ou Ethereum Virtual Machine, é o ambiente de execução programável central do sistema de contratos inteligentes da Ethereum.Ela processa instruções de transações, executa bytecode, calcula o consumo de gas, atualiza o estado da blockchain e produz resultados de transações.A EVM permite que a Ethereum ofereça suporte a tokens, finanças descentralizadas, NFTs, sistemas de governança, jogos em blockchain e muitos outros aplicativos cripto.Suas regras determinísticas permitem que clientes de execução independentes verifiquem o mesmo resultado sem confiar em um computador central.Contratos inteligentes são escritos em linguagens legíveis por humanos e compilados em bytecode da EVM composto por opcodes de baixo nível.Durante a execução, a EVM usa stack, memória, calldata, armazenamento persistente, chamadas de mensagem, logs e outros componentes para processar a lógica dos contratos.O gas limita o trabalho computacional e exige que os usuários paguem pelos recursos de rede consumidos por suas transações.A EVM trabalha com a camada de consenso da Ethereum, mas execução e consenso desempenham funções diferentes.Blockchains compatíveis com a EVM e redes Layer 2 podem reutilizar a tecnologia da Ethereum, embora sua segurança, taxas, finalidade e infraestrutura possam ser diferentes.Para usuários de cripto, entender a EVM facilita a avaliação de taxas de gas, aprovações de contratos inteligentes, transações malsucedidas, padrões de tokens, aplicativos descentralizados e riscos do trading on-chain.A EVM é poderosa porque executa regras programáveis transparentes, mas não determina se essas regras são seguras ou financeiramente vantajosas.Usuários e desenvolvedores ainda precisam verificar contratos, gerenciar permissões, testar códigos, analisar diferenças entre redes e tratar cada transação assinada como uma autorização importante.Você também pode gostar
HOT
Criptomoedas que estão em alta atualmente e ganhando atenção significativa do mercado
TOP volume
As criptomoedas com o maior volume de negociação
Recém-adicionados
Criptomoedas listadas recentemente que estão disponíveis para negociação

