Topics Tech Deep Dive

O que é uma máquina virtual Ethereum (EVM)? Guia para iniciantes

Avançado
Tech Deep Dive
Jul 17, 2022

A máquina virtual Ethereum (EVM) é muitas vezes chamada de “o coração do Ethereum”, que é exatamente o que é. Assim como o coração bombeia sangue que distribui oxigênio e nutrientes por todo o corpo, uma EVM concede aos desenvolvedores a capacidade de criar contratos inteligentes e DApps na linguagem de programação Solidity. É responsável pela maioria dos DApps sendo criados hoje, que é o que o diferencia do Bitcoin e de outros livros de contabilidade distribuídos. Neste artigo, vamos mergulhar de cabeça nas máquinas virtuais do Ethereum e detalhar o que são, como funcionam e seu papel no desenvolvimento de DApps e no avanço da Web 3.0.

O que é um EVM?

Uma máquina virtual Ethereum é uma plataforma de software, ou “computador virtual”, usada por desenvolvedores para criar aplicativos descentralizados (DApps), bem como para executar e implantar contratos inteligentes no sistema Ethereum.

Não importa se você é um programador com interesse em DApps ou um investidor que deseja aprender mais sobre o mundo em constante evolução das criptomoedas EVM, você provavelmente já ouviu falar do Ethereum virtual machines.To entender melhor o que é uma EVM, ajuda primeiro aprender um pouco sobre sua história.

De acordo com Vitalik Buterin, criador do Ethereum, BitTorrent foi o primeiro DApp. Bram Cohen inventou o protocolo de compartilhamento de arquivos em 2001 e, apesar de vários esforços para destruí-lo, o BitTorrent permanece vivo.

Para realmente interromper o BitTorrent, todos os computadores em todas as casas do mundo teriam que ser desligados. É uma máquina virtual sem restrições físicas. O mesmo vale para a máquina virtual Ethereum. O EVM elimina a necessidade de hardware superalimentado e é a plataforma ideal para programadores iniciantes. No entanto, o conhecimento de bytes, pilhas e conceitos de blockchain, como funções hash e prova de trabalho, é útil ao tentar obter uma compreensão mais profunda do código compatível com EVM e da máquina virtual Ethereum em geral.

O objetivo da máquina virtual Ethereum é determinar o estado de cada bloco no blockchain Ethereum. Embora as EVMs sejam semelhantes a outras redes baseadas em blockchain, pois usam um livro de contabilidade distribuído para manter bancos de dados para transações, elas adicionam outra camada de funcionamento devido às suas capacidades de contrato inteligente. Muitos se referem a essa segunda camada como uma “máquina de estado distribuído”.

O que um EVM faz?

Em sua forma mais rudimentar, uma máquina virtual Ethereum é um grande banco de dados para manter todas as contas e saldos do Ethereum. Ao mesmo tempo, também é um estado da máquina com a capacidade de executar o código da máquina e mudar a cada novo bloco adicionado ao livro de contabilidade blockchain. As regras específicas que determinam como o EVM mudará a cada novo bloco são, na verdade, definidas pelo próprio EVM.

De forma mais simples, uma máquina virtual Ethereum é um mecanismo de processamento e uma plataforma de software que funciona como um computador descentralizado. De aplicativos de cripto DeFi e EVM a jogos e marketplaces como OpenSea, os desenvolvedores usam a máquina virtual Ethereum para criar DApps com base no Ethereum e sua linguagem de programação compatível com EVM, Solidity.

Mais importante, a máquina virtual Ethereum é a parte da rede Ethereum responsável pela execução e implantação de contratos inteligentes. É onde contratos inteligentes e milhões de DApps baseados no blockchain Ethereum vivem e respiram.

Pense no blockchain do Ethereum como uma estrutura P2P de diferentes nodos individuais. Um nodo se conecta ao próximo, tornando cada nodo responsável pela segurança e estabilidade de todo o ecossistema. Para fazer isso e manter o consenso em todo o blockchain Ethereum, cada nodo usa o EVM.

EVMs e suas semelhanças com CPUs

Para esclarecer ainda mais o conceito do EVM, ele ajuda a voltar ao básico, pensando em como os programas de computador funcionam. Todos os seus softwares são escritos em uma linguagem de programação, como Java ou C++. No entanto, como as CPUs não podem ler Java ou C++, o código é compilado e convertido em bytecode .

Ethereum não é uma CPU, é uma rede mundial distribuída com 100 CPUs executando simultaneamente o EVM. No entanto, o EVM funciona como uma CPU virtual ou “máquina” virtual executada dentro do programa Go Ethereum, ou “Geth”.

Semelhante a outros programas de software, os desenvolvedores criam DApps e escrevem contratos inteligentes em uma linguagem de programação. Em vez de Java ou C++, a linguagem do Ethereum é chamada de Solidez. O código de solidez é compilado em bytecode e distribuído para todos os computadores (nós) executando Geth na rede.

Quando um contrato inteligente é implantado, cada nodo recebe uma cópia dele, executa seu bytecode e dá o código a quem solicitou a implantação, resultando em “mudança de estado”. Isso significa que o estado atual do blockchain foi alterado, o que pode ser feito apenas com o consenso de cada nodo.

Portanto, uma EVM é muitas vezes chamada de “máquina de estado distribuído”. Ele rastreia o estado do blockchain à medida que se transforma a cada transação.

Como funcionam os EVMs?

Se você já baixou uma música, filme ou software do BitTorrent, então sabe o que uma rede descentralizada pode fazer. Nem mesmo as autoridades mais poderosas do mundo podem remover isso, pois isso exigiria o fechamento de todos os computadores vinculados à rede.

Uma das melhores maneiras de dimensionar uma rede descentralizada é por meio do uso de máquinas virtuais. Agindo como uma camada entre máquinas e o código que executam, as máquinas virtuais podem ser executadas em vários hardwares e sistemas operacionais, em qualquer lugar do mundo.

As máquinas virtuais, como a EVM, funcionam de forma semelhante às máquinas físicas com CPUs, memória e armazenamento, mas operam como apenas código. Teoricamente, qualquer pessoa pode executar uma máquina virtual, dando a ela a flexibilidade e a portabilidade que as redes descentralizadas precisam.

A máquina virtual Ethereum usa uma rede nodal descentralizada para executar contratos inteligentes. É uma pilha virtual dinâmica e restrita, incorporada em cada nodo Ethereum para executar o bytecode de contrato inteligente compatível com EVM.

Contratos inteligentes, nodos e P2P

Ao aprender o que são EVMs e o que elas fazem para cripto em casos como empréstimo DeFi, lembre-se de que os contratos inteligentes são escritos em Solidity e em outras linguagens de alto nível e, em seguida, são convertidos para bytecode e compilados para EVM. Isso significa que o código da máquina é isolado do sistema de arquivos, processos e rede do computador host.

Cada nodo na rede do Ethereum deve concordar com o próximo para executar as mesmas instruções. Isso faz com que a Turing da máquina virtual Ethereum seja concluída, o que significa que ela pode executar etapas lógicas para a função computacional.

Para cada instrução que o EVM implementa, um custo é atribuído a ele, permitindo que o sistema acompanhe os custos de execução. O custo de fazer transações de cripto EVM e executar outras instruções é medido em unidades compatíveis com EVM conhecidas como gás.

Ao habilitar uma economia com base em cobranças por instruções executadas, em vez de transações financeiras executadas, como Bitcoin, a Completude Turing é alcançada. Isso significa que a máquina virtual Ethereum é um computador peer-to-peer, globalmente conectado, capaz de criar contratos inteligentes, eventos de crowdfunding P2P, economias de compartilhamento de arquivos e muito mais.

Ao contrário da internet no início da década de 1990, o futuro está lá para tomar.

Opcodes

No momento, há aproximadamente 150 opcodes diferentes que um EVM pode executar. Então, o que exatamente são opcodes e por que elas são importantes para entender as EVMs?

O motivo pelo qual a máquina virtual Ethereum é chamada de Turing Complete é, em grande parte, devido à sua capacidade de executar instruções no nível da máquina conhecidas como opcodes .

As opcodes compatíveis com EVM ajudam a EVM a concluir tarefas específicas relacionadas a transações de cripto EVM ou contratos inteligentes. No entanto, as opcodes são usadas para uma variedade de operações, desde aritmética e registro de dados até a memória e a recuperação de informações de bloco.

Dito isso, as opcodes não são escritas diretamente em um EVM. Devido à sua capacidade de permitir que os desenvolvedores criem e interajam facilmente com contratos inteligentes, os EVMs são escritos na linguagem de programação Solidity. No entanto, esse idioma nativo deve ser convertido em opcode para que um EVM seja interpretado.

Cada opcode recebe um byte. Isso significa que um máximo de 256 opcodes podem ser usados.

Contratos Inteligentes

Ao tentar entender o que é um EVM, é necessário um conhecimento básico de contratos inteligentes e sua função em cripto EVM, DeFi e outras funções de blockchain.

Às vezes chamado de “aplicativo do EVM”, contratos inteligentes são linhas de código compatíveis com EVM usadas por partes para fazer transações entre si sem o uso de terceiros ou interferência de autoridades centrais.

Dentro de cada contrato inteligente há uma lista definida de operações que devem ser executadas quando certas condições on-chain ou off-chain forem atendidas. Essas operações podem variar desde a transferência de fundos para certos endereços até a criação de novos contratos inteligentes e a comunicação entre os existentes. Em vez de exigir um terceiro, qualquer pessoa pode enviar fundos para um endereço de contrato inteligente para solicitar essas operações.

O Ethereum pegou o conceito Bitcoin e o aprimorou, permitindo que os desenvolvedores criassem contratos inteligentes sobre seu blockchain. O próximo passo foi criar um ambiente onde contratos inteligentes pudessem viver e interagir entre si. É aí que a máquina virtual Ethereum entra em jogo.

O EVM combina os recursos de não apenas uma, mas milhares de CPUs conectadas à rede do Ethereum. Além de verificar transações, ele traduz a opcode de contrato inteligente escrita em Solidity em bytecode, para que as instruções possam ser lidas e as operações possam ser executadas. Para esta última parte, você precisa de gás.

Buffer de gás

Gás é o combustível que impulsiona a máquina virtual Ethereum. Não importa se você está transferindo criptomoedas EVM ou investindo em um NFT, o gás é necessário para pagar pela execução da operação. O gás atua como uma taxa computacional necessária para executar contratos inteligentes.

Cada opcode recebe um custo de gás. Quanto mais complexa a opcode, maior a taxa de gás. No momento, o custo inicial de cada transação é de 21.000 gás.

As taxas de gás são cobradas para compensar os validadores responsáveis por verificar se as informações da transação são válidas e se não há exceções ou erros do EVM.

Ainda mais importante, as taxas de gás ajudam a evitar ataques de DDoS e a manter a rede segura. Como a implantação de contratos complexos em escala exigiria cálculos demorados e caros, os invasores são desencorajados monetariamente de fazer tentativas maliciosas. O ataque seria simplesmente muito caro para ser executado.

O que são blockchains compatíveis com EVM?

A interoperabilidade entre blockchains provou ser um problema significativo. À medida que os problemas com o Ethereum, como altas taxas de gás e transações lentas, persistiam, os desenvolvedores começaram a criar DApps e contratos inteligentes com base em outros blockchains sem permissão para oferecer transações mais rápidas e taxas de gás mais baixas. Infelizmente, muitos desses blockchains são extremamente limitados e não têm interoperabilidade com outros blockchains.

blockchains compatíveis com EVM provaram ser uma maneira fácil de resolver esse problema. Em vez de começar do zero e criar um ambiente semelhante ao dos EVMs por meio do uso de pontes de cadeia cruzada, os desenvolvedores podem copiar certas partes da rede Ethereum e criar DApps que permitem aos usuários transferir ativos de forma rápida e fácil entre qualquer rede EVM.

Com essa interoperabilidade, muitos dos blockchains mais usados atualmente seguem esse modelo compatível com EVM. Alguns exemplos incluem alguns dos maiores nomes no espaço cripto EVM, como:

Rede inteligente Binance

Avalanche

Fantom

Cardano

Polígono

Tron

Independentemente dos seus motivos para querer entender as EVMs, é importante saber que todas essas sidechains são compatíveis com EVM.  Eles oferecem todos os benefícios e alcance do blockchain Ethereum, mas com velocidades mais rápidas, maior capacidade e menores custos de transação.

Em última análise, ao discutir blockchains compatíveis com EVM, tudo se resume à otimização e criação da melhor experiência de usuário descentralizada possível. Dito isso, também há outros benefícios.

Interoperabilidade do ecossistema Ethereum

Um dos maiores benefícios das EVMs é sua interoperabilidade dentro do ecossistema Ethereum. Ethereum é o blockchain mais amplamente usado no mundo. Graças à máquina virtual Ethereum, os DApps baseados no blockchain Ethereum são capazes de se comunicar e interagir entre si, permitindo uma experiência de usuário mais rápida e integrada.

Ao usar pontes blockchain, a interoperabilidade entre blockchains pode ser alcançada. Os usuários podem enviar ativos livremente através de redes EVM de um DApp para o próximo.

Facilidade de transferência dos aplicativos

As máquinas virtuais Ethereum facilitam a migração e expansão de DApps para novas cadeias sem precisar reescrever nenhum código. Usar outro tipo de máquina virtual, como Move-VM ou Wasm, requer mais recursos e dificulta muito a portabilidade de DApps.

Baixa barreira de entrada para desenvolvedores do Ethereum

Um EVM também tem uma entrada de baixo limite para desenvolvedores de Ethereum. Não há necessidade de se preocupar com a natureza das EVMs ou se seu código é compatível com EVM. Também não há necessidade de aprender outras linguagens de programação, pois os desenvolvedores podem usar ferramentas conhecidas do Ethereum, como Waffle e MetaMask.

Casos de uso de EVM

Agora que analisamos o que é um EVM e como ele funciona, vamos ver como tudo se reúne para alimentar criptomoedas EVM e outros projetos baseados em Ethereum.

Tokens ERC-20

Vários projetos DApps e Ethereum incentivam os usuários com tokens ERC-20, que são projetados especificamente para serem facilmente transferidos entre endereços e manter o mesmo valor em toda a rede.

Os tokens ERC-20 são criados por contratos inteligentes seguindo estruturas de dados definidas. Essa estrutura de dados é responsável por nomear, distribuir e monitorar o token.

Esses tokens são usados para muito mais do que cripto EVM. Nexus Mutual, que fornece seguro em contratos inteligentes, utiliza o token NXM ERC-20 para dar aos usuários a capacidade de fazer reivindicações e comprar cobertura. Outro exemplo é o Livepeer . Embora não seja exatamente o exemplo mais popular ao discutir EVMs, essa rede de streaming de vídeo descentralizada emprega o token ERC-20 do Livepeer para incentivar os usuários a fornecer recursos à rede. Esses são apenas dois dos muitos DApps que lidam com tokens ERC-20.

AMMs e DEXs

As exchanges descentralizadas (DEXs) permitem a troca de tokens ERC-20 por meio da implantação de contratos inteligentes. Esses contratos inteligentes permitem que os usuários aproveitem os pools de liquidez de tokens sem interferência de terceiros, dando a eles o título de formadores de mercado automatizados (AMMs). SushiSwap , Uniswap e várias outras corretoras populares são, na verdade, aplicações deste modelo AMM descentralizado.

Mineração de NFTs

Outro token amplamente popular é o ERC-721 não fungível. Contratos inteligentes com este token são frequentemente usados para cunhar tokens não fungíveis (NFTs), que são tokens que possuem valor exclusivo em todo o blockchain Ethereum.

Há alguns anos, um código agora tem a capacidade de democratizar o acesso virtual a mercados de arte. Projetos de jogos como Gods Unchained e Axie Infinity também usam esses tokens para itens dentro do jogo e colecionáveis.

Empréstimo DeFi

AdaSwap é uma corretora descentralizada baseada em Cardano com um AMM. Recentemente, a empresa anunciou uma colaboração com a Milkomeda . Usando soluções de camada 2 para uma sidechain, o Milkomeda oferece blockchains não-EVM, como a compatibilidade com Cardano EVM. Com essa sidechain, os usuários podem transferir ativos e executar DApps Cardano no Ethereum, e vice-versa.

AdaSwap e Milkomeda estão usando essa colaboração para integrar máquinas virtuais Ethereum ao ecossistema Cardano. Há várias outras plataformas DeFi seguindo a liderança de Cardano.

DAOs

A máquina virtual Ethereum é regida por uma organização autônoma descentralizada, ou DAO. Uma DAO é uma entidade comunitária que não tem autoridade central. Isso dá à comunidade controle sobre a rede.

Os DAOs não são apenas totalmente autônomos, mas também transparentes. Contratos inteligentes descrevem as regras e executam decisões com base em instruções escritas em código, mas, a qualquer momento, a votação e as propostas podem ser feitas por meio de consenso. Até mesmo o próprio código pode ser aberto à auditoria pública.

Em última análise, as DAOs são totalmente regidas por membros individuais que tomam coletivamente decisões críticas sobre o projeto. As regras de uma DAO são estabelecidas pelos principais membros da comunidade e implementadas por meio de contratos inteligentes. Como eles são visíveis, verificáveis e abertos à auditoria pública, cada membro da DAO pode entender como o protocolo funciona em cada etapa do caminho.

Limitações de EVM

Ao tentar entender o que é um EVM, é importante considerar seus prós e contras. Apesar de suas muitas vantagens, a tecnologia EVM também vem com certas limitações. Por um lado, o uso de uma máquina virtual Ethereum requer algum nível de experiência técnica. É obrigatório ter conhecimento de Solidez, Java e outras linguagens de programação.

Em segundo lugar, os EVMs são famosos por suas altas taxas de gás. Não importa o quão inteligente um EVM possa ser, ele não pode evitar sua própria popularidade e o congestionamento de dados que vem com ele, resultando em taxas de transação mais altas em comparação com outras cadeias.

Por fim, a máquina virtual Ethereum não é totalmente descentralizada. Na verdade, cerca de 25% dos nodos Ethereum estão sendo executados na Amazon Web Services. Se a AWS sofrer uma grande interrupção ou descontinuar seus serviços, os EVMs e os DApps que eles alimentam seriam visivelmente afetados.

O futuro das EVMs

Quando se trata do blockchain Ethereum e EVMs, estamos apenas no início. Em um futuro próximo, a velocidade, a complexidade e a capacidade da máquina virtual Ethereum só aumentarão, da mesma forma que os PCs da década de 1990 evoluíram para as potências de processamento usadas hoje.

Dito isso, as EVMs não são perfeitas. Os desafios relacionados ao rendimento da rede e à velocidade das transações continuam sendo um problema que afeta o sistema. Atualmente, esses problemas são pontos focais para a comunidade de desenvolvimento do Ethereum, e resolvê-los é um roteiro para o uso e sucesso contínuos do Ethereum.

Se o Ethereum for cumprir sua promessa de revolucionar a maneira como interagimos e fazemos transações uns com os outros, será o resultado das melhorias feitas no EVM.

Conclusão

Neste artigo, percorremos a máquina virtual Ethereum, exploramos a execução de contratos inteligentes e analisamos como as EVMs executam o bytecode. Também discutimos o gGas, o mecanismo de contabilidade para EVMs, e falamos sobre como elefacilita as transações e protege o Ethereum contra ataques DDoS. Em última análise, as EVMs são o coração e a alma da implantação e execução de contratos inteligentes. Obter uma compreensão mais profunda da máquina virtual Ethereum é essencial para qualquer pessoa que queira desenvolver DApps e mergulhar em nosso futuro mundo descentralizado.