Topics Tech Deep Dive

O que é uma Máquina virtual Ethereum (EVM)? Guia do Iniciante

Avançado
Tech Deep Dive
2022年7月17日

A máquina virtual Ethereum (EVM) é frequentemente referida como "o coração do Ethereum" — que é exatamente o que ela é. 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 que estão sendo criados hoje, o que o distingue do Bitcoin e de outros registros distribuídos. Neste artigo, vamos mergulhar de cabeça nas máquinas virtuais Ethereum e explicar o que elas 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 aplicações descentralizadas (DApps), bem como para executar e implementar contratos inteligentes no sistema Ethereum.

Se você é um programador interessado em DApps ou um investidor querendo saber mais sobre o mundo em constante evolução da criptomoeda EVM, provavelmente já ouviu falar das máquinas virtuais Ethereum. Para compreender melhor o que é um EVM, ajuda primeiro aprender um pouco sobre sua história.

De acordo com Vitalik Buterin, criador do Ethereum, o BitTorrent foi o primeiro DApp. Bram Cohen inventou o protocolo de compartilhamento de arquivos em 2001 e, apesar de várias tentativas para destruí-lo, o BitTorrent continua muito vivo.

Para realmente parar o BitTorrent, todos os computadores em cada casa do mundo teriam que ser desligados. É uma máquina virtual desvinculada de restrições físicas. O mesmo é verdadeiro para a máquina virtual Ethereum. O EVM elimina a necessidade de hardware superpotente e é uma plataforma ideal para programadores iniciantes. No entanto, conhecimento sobre bytes, pilhas e conceitos de blockchain como funções de 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 propósito da máquina virtual Ethereum é determinar o estado de cada bloco na blockchain Ethereum. Embora os EVMs sejam semelhantes a outras redes baseadas em blockchain no sentido de que usam um livro-razão distribuído para manter bancos de dados de transações, eles adicionam outra camada de funcionalidade devido às suas capacidades de contratos inteligentes. Muitos se referem a essa segunda camada como uma "máquina de estado distribuído".

O Que Faz um EVM?

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

Colocando de forma mais simples, uma máquina virtual Ethereum é um motor de processamento e plataforma de software que funciona como um computador descentralizado. De DeFi e aplicativos cripto de EVM a jogos e mercados como o OpenSea, os desenvolvedores usam a máquina virtual Ethereum para criar DApps baseados 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 na blockchain Ethereum vivem e respiram.

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

EVMs e as Suas Semelhanças com CPUs

Para esclarecer melhor o conceito de EVM, ajuda voltar ao básico pensando em como os programas de computador funcionam. Todo o software deles é escrito em uma linguagem de programação, como Java ou C++. No entanto, como os CPUs não conseguem ler Java ou C++, o código é compilado e traduzido em bytecode.

Ethereum não é uma CPU — é uma rede mundial distribuída com 100 CPUs executando o EVM simultaneamente. No entanto, o EVM funciona como uma CPU virtual ou “máquina” virtual executando 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 para Ethereum é chamada de Solidity. O código Solidity é compilado em bytecode e distribuído para todos os computadores (nós) executando Geth na rede.

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

Portanto, uma EVM é frequentemente referida como uma “máquina de estado distribuída”. Ela monitora o estado da blockchain à medida que se transforma com cada transação.

Como Funcionam as EVMs?

Se você já fez download de uma música, filme ou software do BitTorrent, então sabe o que uma rede descentralizada pode fazer. Mesmo as autoridades mais poderosas do mundo não conseguem removê-la, pois isso exigiria desligar todos os computadores vinculados à rede.

Uma das melhores maneiras de escalar uma rede descentralizada é através do uso de máquinas virtuais. Atuando como uma camada entre máquinas e o código que elas executam, máquinas virtuais podem ser executadas em diversos hardwares e sistemas operacionais de qualquer lugar do mundo.

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

A máquina virtual Ethereum usa uma rede nodal descentralizada para executar contratos inteligentes. É uma pilha virtual dinâmica e isolada, incorporada dentro de cada nó Ethereum para executar bytecode de contratos inteligentes compatíveis com a EVM.

Contratos Inteligentes, Nós e P2P

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

Cada nó na rede da Ethereum deve concordar com o próximo para executar as mesmas instruções. Isso faz com que a máquina virtual Ethereum seja Turing Completa, o que significa que ela pode executar passos lógicos para função computacional.

Para cada instrução que a EVM implementa, é atribuído um custo a ela, 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 gas.

Permitindo uma economia baseada em cobranças por instruções executadas, em vez de transações financeiras executadas, como o Bitcoin, a Turing Completeness é alcançada. Isso significa que a máquina virtual Ethereum é um computador ponto a ponto, conectado globalmente, capaz de criar contratos inteligentes, eventos de crowdfunding P2P, economias de compartilhamento de arquivos e mais.

Não muito diferente da internet no início dos anos 1990, o futuro está lá para ser aproveitado.

Opções de código

No momento, existem aproximadamente 150 diferentes opcodes que um EVM pode executar. Então, o que exatamente são opcodes — e por que eles são importantes para entender EVMs?

A razão pela qual a máquina virtual Ethereum é referida como Turing Complete é em grande parte devido à sua capacidade de executar instruções de nível de máquina conhecidas como opcodes.

Os opcodes compatíveis com EVM ajudam a EVM a completar tarefas específicas relacionadas a transações de criptomoeda EVM ou contratos inteligentes. No entanto, os opcodes são usados para uma variedade de operações, desde aritmética e registro de dados até memória e a obtenção de informações de blocos.

Dito isso, os opcodes não são escritos diretamente em um EVM. Devido à sua capacidade de permitir que desenvolvedores criem e interajam facilmente com contratos inteligentes, os EVMs são escritos na linguagem de programação Solidity. No entanto, essa linguagem nativa deve ser convertida para opcode para que um EVM possa interpretá-la.

Cada opcode é atribuído a um byte. Isso significa que um máximo de 256 opcodes pode ser usado.

Contratos Inteligentes

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

Às vezes chamados de "App do EVM", os contratos inteligentes são linhas de código compatíveis com EVM usadas pelas partes para transacionar umas com as outras sem o uso de um terceiro 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- ou off-chain são 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 já existentes. Em vez de exigir um terceiro, qualquer pessoa pode enviar fundos para um endereço de contrato inteligente para iniciar essas operações.

O Ethereum pegou o conceito do Bitcoin e o potencializou permitindo que desenvolvedores criassem contratos inteligentes em cima de sua blockchain. O próximo passo foi criar um ambiente onde os contratos inteligentes pudessem existir e interagir uns com os outros. É aqui que a máquina virtual Ethereum entra em cena.

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

Gás

Gasolina é o combustível que impulsiona a máquina virtual Ethereum. Quer você esteja transferindo criptomoeda da EVM ou investindo em um NFT, é necessário gás para pagar pela execução da operação. O gás atua como uma taxa computacional necessária para a execução de contratos inteligentes.

Cada opcode recebe um custo em gás. Quanto mais complexo o 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 na EVM.

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

O Que São Blockchains Compatíveis com EVM?

A interoperabilidade entre blockchains tem se mostrado um problema significativo. À medida que surgem problemas com o Ethereum — como altas taxas de gás e transações lentas —, os desenvolvedores começaram a criar DApps e contratos inteligentes baseados em outras blockchains permissionless para oferecer transações mais rápidas e taxas de gás mais baixas. Infelizmente, muitas dessas blockchains são severamente limitadas e carecem de interoperabilidade com outras blockchains.

Blockchains compatíveis com EVM têm se mostrado uma maneira fácil de resolver esse problema. Em vez de começar do zero e criar um ambiente semelhante ao das EVMs através do uso de pontes entre blockchains, os desenvolvedores podem copiar certas partes da rede Ethereum e criar DApps que permitem aos usuários transferir rapidamente e facilmente ativos entre quaisquer redes EVM.

Com essa interoperabilidade, muitas das blockchains mais usadas atualmente seguem esse modelo compatível com EVM. Exemplos incluem alguns dos nomes mais conhecidos no espaço de criptomoedas EVM, tais como:

Binance Smart Chain

Avalanche

Fantom

Cardano

Polygon

Tron

Independentemente de suas razões para querer entender EVMs, é importante saber que todas essas sidechains são compatíveis com EVM.  Elas oferecem todos os benefícios e alcance da blockchain Ethereum, mas com velocidades mais rápidas, maior capacidade e custos de transação mais baixos.

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

Interoperabilidade do Ecossistema Ethereum

Um dos maiores benefícios dos EVMs é a sua interoperabilidade dentro do ecossistema Ethereum. Ethereum é a blockchain mais utilizada no mundo. Graças à máquina virtual Ethereum, DApps baseados na blockchain Ethereum conseguem se comunicar e interagir uns com os outros, permitindo uma experiência de usuário mais rápida e fluida.

Usando pontes de blockchain, a interoperabilidade entre blockchains pode ser alcançada. Os usuários podem enviar ativos livremente através das redes EVM de um DApp para outro.

Fácil para DApps serem transferidos

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 torna a portabilidade de DApps muito mais difícil.

Baixa Barreira de Entrada para Desenvolvedores Ethereum

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

Casos de Uso da EVM

Agora que discutimos o que é uma EVM e como ela funciona, vamos ver como tudo se junta para impulsionar o cripto EVM e outros projetos baseados em Ethereum.

Tokens ERC-20

Diversos DApps e projetos Ethereum incentivam usuários com tokens ERC-20, que são especificamente projetados para serem facilmente transferidos entre endereços e manterem 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 oferece seguros 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 é Livepeer. Embora não seja exatamente o exemplo mais popular ao discutir EVMs, esta rede de streaming de vídeo descentralizada emprega o token Livepeer ERC-20 para incentivar os usuários a fornecer recursos para a rede. Estes são apenas dois dos muitos DApps que lidam com tokens ERC-20.

AMMs e DEXs

Exchanges descentralizadas (DEXs) possibilitam a troca de tokens ERC-20 através da implementação de contratos inteligentes. Esses contratos inteligentes permitem que os usuários acessem as pools de liquidez de tokens sem a interferência de terceiros, dando-lhes o título de formadores de mercado automatizados (AMMs). SushiSwap, Uniswap e várias outras exchanges populares são, na verdade, aplicações deste modelo de AMM descentralizado.

Criação de NFTs

Outro token amplamente popular é o não fungível ERC-721. Contratos inteligentes com este token são frequentemente usados para criar tokens não fungíveis (NFTs), que são tokens que possuem valor único em toda a blockchain do Ethereum.

Impensável há alguns anos, um pedaço de código agora tem a capacidade de democratizar o acesso virtual aos mercados de arte. Projetos de jogos como Gods Unchained e Axie Infinity também usam esses tokens para itens e colecionáveis no jogo.

Empréstimos DeFi

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

AdaSwap e Milkomeda estão usando essa colaboração para integrar máquinas virtuais Ethereum no ecossistema Cardano. Há várias outras plataformas DeFi seguindo o exemplo da Cardano.

DAOs

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

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

No final das contas, DAOs são totalmente governados por membros individuais que coletivamente tomam decisões críticas sobre o projeto. As regras de um DAO são estabelecidas por membros centrais da comunidade e implementadas através de contratos inteligentes. Como estas são visíveis, verificáveis e abertas a auditoria pública, cada membro do DAO pode entender como o protocolo funciona em cada etapa do caminho.

Limitações do EVM

Ao tentar entender o que são EVMs, é importante considerar tanto suas vantagens quanto suas desvantagens. Apesar de suas muitas vantagens, a tecnologia EVM também tem certas limitações. Em primeiro lugar, usar uma máquina virtual Ethereum requer algum nível de experiência técnica. Conhecimento de Solidity, Java e outras linguagens de programação é obrigatório.

Em segundo lugar, as EVMs são infames por suas altas taxas de gás. Não importa quão inteligente uma EVM possa ser, ela não consegue evitar sua própria popularidade e a congestão de dados que isso traz, resultando em taxas de transação mais altas em comparação com outras cadeias.

Por último, a máquina virtual Ethereum não é totalmente descentralizada. Na verdade, cerca de 25 por cento dos nós Ethereum estão realmente operando na Amazon Web Services. Se a AWS fosse sofrer uma grande interrupção ou descontinuar seus serviços, as EVMs e os DApps que elas suportam seriam visivelmente afetados.

O Futuro das EVMs

Quando se trata da blockchain Ethereum e de EVMs, estamos apenas no começo. Num futuro próximo, a velocidade, complexidade e capacidade da máquina virtual Ethereum só aumentarão, de maneira muito semelhante à forma como os PCs dos anos 1990 evoluíram para os potentes processadores que são usados hoje.

Dito isso, EVMs não são perfeitas. Desafios em relação à capacidade de rede e velocidade de transação continuam sendo um problema que aflige o sistema. Atualmente, esses problemas são pontos focais para a comunidade de desenvolvimento Ethereum, e resolvê-los é um roteiro para o uso e sucesso contínuo do Ethereum.

Se o Ethereum pretende cumprir sua promessa de revolucionar a maneira como interagimos e transacionamos uns com os outros, será o resultado de melhorias feitas na 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 ele facilita transações e protege o Ethereum de ataques DDoS. Em última análise, os 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 e obrigatório para quem deseja desenvolver DApps e mergulhar em nosso futuro mundo descentralizado.