O EVM¶
A Máquina Virtual Ethereum é o que realmente funciona quando uma conta de contrato (ver Contas de Contrato) é chamado, uma máquina virtual baseada em pilha executando bytecode, um opcode de cada vez, medido por gás. Esta seção vai para dentro dela diretamente: cada exemplo de código roda um bytes reais contra uma implementação EVM real e independente, não uma descrição do que o bytes devem fazer.
O que você precisa saber primeiro¶
Contas de Contrato e GásEsta seção assume que você entende por que os contratos precisam de código e por que a execução desse código precisa ser medido, e vai para o próprio mecanismo.
Capítulos¶
- Bytecode: um contrato completo de seis bytes, executado e verificado
- Opcodes: a instrução completa definida por categoria, mais um exemplo aritmético verificado
- Pilha: 1024 itens, DUP/SWAP, e por que uma máquina de pilha sobre registros nomeados
- Memória: byte-addressable, call-scoped, and quadrically priced better a point
- Armazenamento: o único lugar onde o estado sobrevive entre as chamadas, com seu custo real do gás medido diretamente
- Dados de chamadas: dados de entrada somente leitura, e sua conexão surpreendente aos custos da camada 2
- Chamadas de Mensagens: CALL, ESTATICCALL, e DELEGATECALL mecanismo de código emprestado explicado precisamente
- Criação de Contratos: Endereçamento nonce-dependente do CREATE versus determinismo do CREATE2
- Contabilidade de gás: custo intrínseco, a fórmula de memória verificada, e porque os reembolsos foram cortados
Próxima¶
Continuar a Contratos Inteligentes, onde Solidity compila para baixo para exatamente o bytecode esta seção examinada diretamente, agora do lado da linguagem de nível superior.