Pular para o conteúdo
0%

O que é a Ethereum virtual machine (EVM)?

Alchemy team headshot

Escrito por Alchemy

Publicado em 2 de março de 20226 min de leitura

A EVM - uma máquina com muitos nomes

The World's Computer. The Unstoppable Machine. The Heart of Ethereum. A Ethereum Virtual Machine (EVM) tem muitos nomes, o que evidencia sua importância para a Ethereum Network. É o recurso central que faz dela não apenas um 'distributed ledger' como o Bitcoin, mas uma 'distributed state machine'.

A EVM permite que desenvolvedores criem smart contracts em uma linguagem de programação chamada Solidity. Uma aplicação popular de smart contracts é gerenciar a geração e a troca de tokens. Muitas aplicações e protocolos usam tokens para recompensar usuários por ações importantes para seu objetivo. Sem a EVM, nada disso seria possível.

Para entender melhor o poder da EVM, vamos ver alguns de seus componentes centrais:

Virtual machines - a plataforma da EVM

Redes descentralizadas são difíceis de derrubar. Se você quiser fazer isso, precisará remover todos os nós atualmente online e encontrar uma forma de impedir que surjam mais.

Diagrama comparando topologias de rede centralizadas, descentralizadas e distribuídas
Redes distribuídas

Uma boa forma de escalar uma rede descentralizada é usar virtual machines (VM). Isso ocorre porque VMs podem ser executadas em diferentes sistemas operacionais e hardware, e a partir de qualquer localização geográfica. VMs funcionam como uma camada de abstração entre o código e a máquina que executa o código.

VMs funcionam de forma parecida com uma máquina física, com storage, memória e CPU, mas operam puramente como código. Em teoria, qualquer pessoa pode rodar uma VM, o que a torna uma plataforma altamente portátil para uma rede descentralizada. A EVM usa uma rede descentralizada de nós para executar smart contracts.

Smart contracts - o app da EVM

Smart contracts são linhas de código autoexecutáveis que permitem que partes transacionem entre si sem a necessidade de nenhuma autoridade central. Dentro de um smart contract há uma lista de operações definidas que são executadas quando certas condições, on-chain ou off-chain, são atendidas. Algumas operações podem ser transferir fundos para um determinado endereço, comunicar-se com outro contract ou até criar um novo contract. Em vez de um terceiro executar a transação, qualquer remetente pode enviar fundos para o endereço do smart contract para acionar essas operações.

Diagrama de como um contrato inteligente se autoexecuta quando suas condições são atendidas
Como funciona um contrato inteligente

O que torna os smart contracts um método seguro de transacionar é o fato de o código não poder ser alterado ou modificado. Sempre há um resultado esperado do smart contract, que é a confiança embutida no código. Toda vez que um contract é executado, diz-se que ele altera o state da EVM.

A EVM pode ser descrita como uma "state machine" porque é responsável por computar as mudanças de state resultantes da execução do código dos smart contracts. Isso significa que ela mantém os saldos de ether das contas, o armazenamento de dados dos smart contracts e as transações tanto no nível de conta quanto de contract à medida que são concluídas. Todas essas ações são o que altera o 'state' da rede.

Diagrama de transações EVM alterando o estado da rede Ethereum
Transações EVM

Smart contracts são escritos principalmente na linguagem Solidity. A EVM não consegue executar Solidity diretamente, então o código precisa primeiro ser compilado em instruções de máquina de nível mais baixo chamadas opcodes.

Opcodes - a linguagem da EVM

A EVM é amplamente descrita como Turing Complete, ou, mais precisamente, quasi-Turing Complete. Isso significa que a EVM pode, em teoria, resolver qualquer problema computacional. Isso é feito executando instruções de nível de máquina chamadas EVM opcodes.

Os EVM opcodes ajudam a EVM a concluir as tarefas específicas de um smart contract ou transação. Atualmente, há cerca de 150 opcodes que a EVM pode executar. Eles cobrem uma variedade de operações, incluindo: aritmética, parada, logging, duplicação, push, memória, comparação e troca. Além disso, servem para recuperar informações de block e de ambiente. Você pode encontrar uma lista de opcodes aqui.

Diagrama dos opcodes EVM, as instruções em nível de máquina executadas pela EVM
Opcodes EVM

Por eficiência, a EVM converte seu bytecode em opcode, onde cada opcode recebe um ou mais bytes no bytecode. Cada operação de opcode requer uma quantidade específica de gas para ser executada pela EVM. Você provavelmente já ouviu falar sobre gas, mas o que é isso?

Gas - o combustível da EVM

Gas é provavelmente o tópico mais falado e menos compreendido sobre a EVM. No momento em que este texto foi escrito, os preços de gas podem ser extremamente altos, mas há esforços para melhorar isso. Preços altos de gas podem ser uma grande barreira para a adoção mainstream da Ethereum. Mas por que precisamos pagar preços de gas e o que faz o preço ser tão alto?

O propósito do gas é atuar como uma taxa pela computação das operações de um smart contract feita por cada nó da Ethereum. É necessário haver uma taxa para a computação a fim de impedir que um atacante paralise a rede implantando uma grande quantidade de contracts complexos que exigem longos tempos de computação. Esse tipo de ataque DDoS é desencorajado porque seria muito caro de executar.

Cada opcode tem um gas cost atribuído a ele, sendo que os opcodes mais complexos têm custos mais altos. Por exemplo, uma adição simples custa 3 gas e toda transação começa com um custo de 21.000 gas. A maior parte das reclamações não é sobre o gas em si, mas sobre o gas limit necessário para concluir uma transação com sucesso.

Gas limit é a quantidade máxima de gas que o remetente está disposto a pagar para que a transação seja executada e validada. Para obter a gas fee, você pode multiplicar o custo total de gas (os valores base das operações) pelo preço do gas (o custo de completar essas operações). De forma parecida com quando você abastece seu carro com gasolina de verdade, há o custo do combustível em si e a quantidade de combustível necessária para chegar ao seu destino.

Gas Fee = Total Gas Cost x Gas Price

A gas fee serve para compensar o validator responsável por garantir que as informações na transação sejam válidas, que não haja erros/exceções por parte da EVM e que o remetente tenha os fundos necessários para pagar pela computação. Quando um remetente define um gas limit alto, isso indica que a operação é complexa, o que incentiva os validators a pegarem as transações em troca de uma recompensa maior.

Diagrama de como as taxas de gas compensam os validadores pela computação da EVM
Gas da EVM

Quando a atividade da rede está alta, os validators podem simplesmente escolher, dentre o pool de transações pendentes, aquelas com gas limits mais altos. As gas fees são, portanto, influenciadas pela oferta e demanda. O bom é que qualquer gas não consumido é reembolsado ao remetente.

Se o gas limit pré-pago for atingido, o validator ainda é compensado pelo seu trabalho, mas a transação não é concluída. Dessa forma, a EVM é quasi-Turing Complete, já que as computações que ela pode concluir são limitadas ao valor que um remetente está disposto a pagar para que sejam concluídas.

Casos de uso da EVM

Agora que cobrimos cada um dos elementos da EVM, vamos ver como essas partes se combinam para ajudar a viabilizar os projetos na Ethereum:

Tokens ERC-20

Tokens ERC-20 são tokens que podem ser transferidos entre endereços, têm uma quantidade fixa e seu valor é o mesmo em toda a rede. Smart contracts que seguem uma estrutura de dados definida na EVM são usados para criar tokens ERC-20. Essa estrutura de dados controla a nomeação, distribuição, quantidade de supply e monitoramento do token.

Diversas aplicações e projetos usam tokens ERC-20 para incentivar usuários. Livepeer, uma rede descentralizada de streaming de vídeo, usa o token Livepeer (LPT) para incentivar quem fornece recursos à rede. Nexus Mutual, um seguro descentralizado baseado em smart contracts, usa o token NXM para permitir que usuários comprem cobertura e façam claims.

Exchanges descentralizadas

Uma exchange descentralizada implanta smart contracts para permitir que usuários troquem tokens ERC-20. Esses smart contracts são chamados de Automated Market Makers (AMM) porque permitem que usuários contribuam para liquidity pools de determinados tokens sem que nenhum terceiro os controle. Algumas das exchanges populares, como Uniswap e SushiSwap, são aplicações desse modelo de AMM.

Diagrama de um criador de mercado automatizado combinando trocas de tokens por meio de pools de liquidez
Criador de mercado automatizado

Tokens ERC-721

O outro padrão de token amplamente popular é o primo não fungível do ERC-20, o ERC-721. Esses smart contracts são usados para mintar NFTs (Non-fungible tokens), que são tokens com valor único em toda a blockchain. Criar obras de arte únicas é o maior caso de uso desse tipo de token. Outros projetos da área de games, como Axie Infinity e God Unchained, usam esses tokens para colecionáveis dentro do jogo.

A EVM e além

A EVM faz da Ethereum uma plataforma, e não apenas uma blockchain. No entanto, a EVM não é um sistema perfeito. Há muitos desafios relacionados à velocidade de transação e ao throughput da rede. Essa é uma área de foco para a comunidade de desenvolvimento e para o roadmap da Ethereum. Se a Ethereum for cumprir suas promessas de revolucionar a forma como transacionamos entre nós, isso vai depender de melhorias na EVM.

Background gradient

Construa magia blockchain

A Alchemy combina os produtos e ferramentas de desenvolvimento Web3 mais poderosos com recursos, comunidade e suporte lendário.