Ajude a atualizar esta página

🌏

Há uma nova versão desta página mas, no momento, ela está apenas em inglês. Ajude-nos a traduzir a última versão.

Nenhum bug encontrado!🐛

Por enquanto, esta página permanecerá em inglês.

Máquina virtual do Ethereum (EVM)

Última edição: , Invalid DateTime
Editar Página

O contexto físico da Máquina Virtual do Ethereum (EVM, na sigla em inglês) não pode ser descrito da mesma maneira que é descrita uma nuvem no céu ou uma onda no meio do oceano, se não que deve ser entendido como uma entidade singular mantida por milhares de computadores conectados operando um cliente de Ethereum.

O protocolo do Ethereum existe única e exclusivamente para manter a operação contínua, ininterrupta e imutável desta máquina de estado especial; é o ambiente onde residem todas as contas de Ethereum e os contratos inteligentes. Para qualquer bloco da cadeia, o Ethereum tem um estado "canônico", e a EVM é a responsável por definir as regras para registrar um novo estado válido de um bloco para o seguinte.

Pré-requisitos

Alguma familiaridade básica com a terminologia comum em ciência da computação, como bytes, memória e pilha é necessária para entender a EVM. Também seria ótimo estar familiarizado com conceitos de criptografia/blockchain como funções hash, prova de trabalho e árvore de Merkle.

Do livro-razão para a máquina de estado

A analogia de um 'livro-razão distribuído' é muitas vezes usada para descrever blockchains como o Bitcoin, que permite uma moeda descentralizada usando ferramentas fundamentais de criptografia. Uma criptomoeda comporta-se como uma moeda "normal" devido às regras que regem o que pode e não pode se fazer para modificar o livro-razão. Por exemplo, um endereço de Bitcoin não pode gastar mais Bitcoin do que o recebido previamente. Essas regras sustentam todas as transações em Bitcoin e em muitas outras blockchains.

Embora Ethereum tenha sua própria criptomoeda nativa (Ether), que segue quase exatamente as mesmas regras intuitivas, ele também permite dispor de uma função muito mais poderosa: os contratos inteligentes. Para este recurso mais complexo, uma analogia mais sofisticada é necessária. Em vez de um livro-razão distribuído, Ethereum é uma máquina de estado distribuída. O estado do Ethereum é uma grande estrutura de dados que contém não apenas todas as contas e saldos, mas também um estado da máquina, que pode mudar de bloco para bloco de acordo com um conjunto predefinido de regras, as quais podem executar código de máquina arbitrário. As regras específicas para mudar o estado de bloco em bloco são definidas pela EVM.

Um diagrama mostrando a criação da EVM Diagrama adaptado do Ethereum EVM ilustrado

A função de transição do estado Ethereum

A EVM se comporta como uma função matemática seria: de acordo com a entrada, ele produz uma saída determinística. Portanto, é bastante útil descrever mais formalmente o Ethereum como tendo uma função de transição de estado:

1Y(S, T)= S'
2

Dado um antigo estado (S) e um novo conjunto de transações válidas (T), a função de transição de estado de Ethereum Y(S, T) produz um novo estado de saída válido S'

Estado

No contexto do Ethereum, o estado é uma enorme estrutura de dados chamada Merkle Patricia Triemodificada, que mantém todas as contas vinculadas por hashes e redutíveis a um único hash raiz armazenado na blockchain.

Transações

Transações são instruções assinadas criptograficamente de contas. Existem dois tipos de transações: as que resultam em chamadas de mensagem e as que resultam na criação de contratos.

A criação do contrato resulta na criação de uma nova conta de contrato que contém o bytecode compilado do contrato inteligente. Sempre que outra conta faz uma mensagem de chamada a esse contrato, ele executa seu bytecode.

Instruções da EVM

A EVM é executada como uma máquina de pilha com uma profundidade de 1.024 itens. Cada item é uma palavra de 256 bits, que foi escolhida para facilitar o uso com criptografia de 256 bits (como hashes Keccak-256 ou assinaturas secp256k1).

Durante a execução, a EVM mantém uma memória transiente (como um array de bytes direcionado por palavra) que não persiste entre as transações.

Os contratos, no entanto, contêm uma árvore Merkle Patricia de armazenamento (como um array direcionado por palavras) associada com a conta em questão e parte do estado global.

O bytecode compilado do contrato inteligente executa como um número de opcodes de EVM, que realizam operações padrão de stake como XOR, AND, ADD, SUB etc. A EVM também implementa um número de operações de stake específicas da blockchain, como ADDRESS, BALANCE, BLOCKHASH etc.

Diagrama mostrando onde o consumo de gás é utilizado para as operações da EVM Diagrama adaptado do Ethereum EVM ilustrado

Implementações da EVM

Todas as implementações da EVM devem aderir à especificação descrita no Ethereum Yellowpaper.

Durante o histórico de 5 anos do Ethereum, a EVM passou por várias revisões e existem várias implementações da EVM em várias linguagens de programação.

Todos os clientes Ethereum incluem uma implementação de EVM. Além disso, existem várias implementações independentes, incluindo:

Leitura adicional

Was this article helpful?

👈
AnteriorBlocos
PróximoOpCodes
👉