🇧🇷
Ethereum Developer Pack - PT
  • Ethereum Developer Pack - PT
  • Módulo 1
    • Introdução a Smart Contracts
      • Fundamentos de Blockchain
        • Histórico
        • Bitcoin
        • O que é Blockchain
        • Conceitos-chave em Blockchain
        • Como funciona a Blockchain
        • Tipos de Blockchain
        • Modelos de Consenso
      • A nova Internet
        • Web 3
        • Elementos Fundamentais
        • Impacto do Ethereum em Diversos Setores
      • Wallets
        • Componentes de uma wallet
        • Tipos de Wallet
        • Códigos Mnemônicos
      • Ethereum 101
        • Smart Contracts
        • Contas
          • Tipos de contas
          • Conteúdo das contas
        • Transações
          • Componentes
          • Ciclo de vida
        • Gás
        • Solidity
        • EVM
          • A máquina de estados
          • Opcodes
          • Como funciona a EVM
          • Clientes de execução
          • DApps
      • Blockchain Explorer
        • Funções de um blockchain explorer
        • Beneficios de utilizar um blockchain explorer
      • Remix
        • Características do Remix
        • Workspaces ou espaços de trabalho
        • Carregar e compilar um contrato
        • Implantar na máquina virtual do Remix (Remix VM)
        • Interagindo com funções
        • Deployar em uma rede pública
      • Crie seu primeiro Smart Contract
  • Módulo 2
    • Fundamentos de Solidity
      • Hello World
      • Tipos de Dados
      • Funções
      • Variáveis
        • Exercício 1
      • Operadores
        • Ejercicio 2
      • Constructor
        • Exercício 3
      • Convenções de nomenclatura
      • Tipos de armazenamento para variáveis
      • Estruturas de Controle
        • Exercício 4
      • Modificadores
      • Eventos
        • Exercício 5
      • Tipos de Referencia
        • Arrays
          • Exercício 6
        • Mappings
          • Exercício 7
        • Structs
          • Exercício 8
      • Address Payable
      • Como os contratos e funções recebem Ether.
      • Transferências de Ether
      • Conceitos Avançados
        • Codificação de ABI
        • Hashing
        • This
        • Herança
        • Abstract
        • Interface
        • Chamada entre contratos
        • EVM
        • ABI
        • Bytecode
        • Opcodes
  • Módulo 3
    • ERCs, Bibliotecas e Padrões de Desenvolvimento
      • Boas Práticas de Desenvolvimento
      • Padrões de Desenvolvimento
      • EIP & ERC
      • ERC-20
      • ERC-721
      • Open Zeppelin
      • Crie um Token ERC-20
      • Almacenamiento Descentralizado: IPFS
      • Crea un Token ERC-721
      • DeFi
  • Módulo 4
    • Kit de ferramentas para desenvolvimento na Ethereum
      • Requisitos para o módulo 4
        • Terminal
        • Git e Github
        • Node.js e npm
        • Visual Studio Code para Solidity
      • Toolkit
        • JSON-RPC
        • Ethers.js
          • Exercício
        • Hardhat
          • Implantação de um contrato no Hardhat
          • Implantação de um contrato em uma rede pública
        • Scaffold-ETH
          • Características do Scaffold-ETHCaracterísticas
          • Como instalar o Scaffold-ETH
  • Módulo 5
    • Segurança, Testes e Auditorias
      • Testes
        • Importância de realizar testes
        • Métodos para testar contratos inteligentes
          • Testes automatizados
          • Testes manuais
        • Conceitos importantes em testes
        • Ferramentas para testes
        • Testes com Hardhat
        • Recursos adicionais
      • Segurança
        • Uma mentalidade diferente de design
        • Principais vulnerabilidades em contratos inteligentes
          • Reentrancy attack (ataque de reentrada)
          • Replay attack (ataque de repetición)
          • Price Oracle Manipulation (Manipulación de Oráculos de Precios)
          • Missing Access Control (Pérdida de Control de Acceso)
          • Reward Manipulation (Manipulación de Recompensas)
          • Failure to Initialize (Falla al Inicializar)
          • Front-running
          • Invariant Breaks (Quebra de Invariantes)
          • Mishandling of ETH (Má gestão de ETH)
          • Denial of Service (DoS - Negação de Serviço)
          • Integer overflow and underflow (Overflow e Underflow de inteiros)
          • Phishing y Typosquatting
        • Recursos adicionais
      • Auditoria de smart contracts
        • Processo de Auditoria
        • Ferramentas
        • Como se preparar para uma auditoria
        • O teste Rekt
        • Desafios
        • Recursos adicionais
  • Contribuye
    • Kipu Explorer
Powered by GitBook
On this page
  1. Módulo 2
  2. Fundamentos de Solidity
  3. Conceitos Avançados

Bytecode

O bytecode é uma forma de instrução executável por um computador ou uma máquina virtual. No contexto do Ethereum e da Ethereum Virtual Machine (EVM), o bytecode refere-se ao código de baixo nível que a EVM pode interpretar e executar diretamente. Esse bytecode é gerado a partir do código-fonte de um contrato inteligente escrito em uma linguagem de alto nível, como Solidity ou Vyper, por meio de um processo de compilação.

Características do Bytecode no Ethereum

  • Compilado a partir de código de alto nível: Os desenvolvedores escrevem contratos inteligentes em linguagens de alto nível projetadas especificamente para o Ethereum, como Solidity. Esses contratos são então compilados em bytecode para que possam ser implantados e executados na EVM.

  • Executável pela EVM: A EVM foi projetada para executar bytecode. Cada nó da rede Ethereum possui uma instância da EVM, permitindo que contratos inteligentes sejam executados de forma descentralizada em toda a rede.

  • Determinístico: O bytecode executado na EVM produz resultados determinísticos. Isso significa que, dadas as mesmas entradas e o mesmo estado da blockchain, a execução do bytecode sempre produzirá os mesmos resultados. Essa característica é crucial para o consenso e a integridade da rede Ethereum.

  • Consumo de gas: A execução de operações no bytecode consome "gas", que é uma medida do poder computacional necessário. Cada operação no bytecode tem um custo de gas associado, e os usuários devem pagar esse gas para executar operações e alterar o estado da blockchain.

Processo de compilação

O processo de compilação transforma o código-fonte do contrato inteligente em bytecode. Esse processo geralmente também gera um ABI, que define como chamar as funções do contrato, mas o bytecode é o código que realmente é executado na blockchain.

Imagine que você tenha um contrato inteligente simples escrito em Solidity que armazena uma mensagem. A versão em Solidity pode ser assim:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleStorage {

    string public message;

    constructor(string memory initialMessage) {
        message = initialMessage;
    }

    function setMessage(string memory newMessage) public {
        message = newMessage;
    }

    function getMessage() public view returns (string memory) {
        return message;
    }
}

Uma vez compilado, esse contrato é transformado em bytecode, que é uma sequência de bytes que representa as instruções que a EVM executará. O bytecode para este contrato é a longa sequência de caracteres hexadecimais mostrada abaixo. Embora difícil de ler ou interpretar por humanos, a EVM pode executar esse código de maneira eficiente.

608060405234801562000010575f80fd5b5060405162000c4838038062000c488339818101604052810190620000369190620001d3565b805f908162000046919062000459565b50506200053d565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620000af8262000067565b810181811067ffffffffffffffff82111715620000d157620000d062000077565b5b80604052505050565b5f620000e56200004e565b9050620000f38282620000a4565b919050565b5f67ffffffffffffffff82111562000115576200011462000077565b5b620001208262000067565b9050602081019050919050565b5f5b838110156200014c5780820151818401526020810190506200012f565b5f8484015250505050565b5f6200016d6200016784620000f8565b620000da565b9050828152602081018484840111156200018c576200018b62000063565b5b620001998482856200012d565b509392505050565b5f82601f830112620001b857620001b76200005f565b5b8151620001ca84826020860162000157565b91505092915050565b5f60208284031215620001eb57620001ea62000057565b5b5f82015167ffffffffffffffff8111156200020b576200020a6200005b565b5b6200021984828501620001a1565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200027157607f821691505b6020821081036200028757620002866200022c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620002eb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002ae565b620002f78683620002ae565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620003416200033b62000335846200030f565b62000318565b6200030f565b9050919050565b5f819050919050565b6200035c8362000321565b620003746200036b8262000348565b848454620002ba565b825550505050565b5f90565b6200038a6200037c565b6200039781848462000351565b505050565b5b81811015620003be57620003b25f8262000380565b6001810190506200039d565b5050565b601f8211156200040d57620003d7816200028d565b620003e2846200029f565b81016020851015620003f2578190505b6200040a62000401856200029f565b8301826200039c565b50505b505050565b5f82821c905092915050565b5f6200042f5f198460080262000412565b1980831691505092915050565b5f6200044983836200041e565b9150826002028217905092915050565b620004648262000222565b67ffffffffffffffff81111562000480576200047f62000077565b5b6200048c825462000259565b62000499828285620003c2565b5f60209050601f831160018114620004cf575f8415620004ba578287015190505b620004c685826200043c565b86555062000535565b601f198416620004df866200028d565b5f5b828110156200050857848901518255600182019150602085019450602081019050620004e1565b8683101562000528578489015162000524601f8916826200041e565b8355505b6001600288020188555050505b505050505050565b6106fd806200054b5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063368b877214610043578063ce6d41de1461005f578063e21f37ce1461007d575b5f80fd5b61005d60048036038101906100589190610314565b61009b565b005b6100676100ad565b60405161007491906103d5565b60405180910390f35b61008561013c565b60405161009291906103d5565b60405180910390f35b805f90816100a991906105f8565b5050565b60605f80546100bb90610422565b80601f01602080910402602001604051908101604052809291908181526020018280546100e790610422565b80156101325780601f1061010957610100808354040283529160200191610132565b820191905f5260205f20905b81548152906001019060200180831161011557829003601f168201915b5050505050905090565b5f805461014890610422565b80601f016020809104026020016040519081016040528092919081815260200182805461017490610422565b80156101bf5780601f10610196576101008083540402835291602001916101bf565b820191905f5260205f20905b8154815290600101906020018083116101a257829003601f168201915b505050505081565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610226826101e0565b810181811067ffffffffffffffff82111715610245576102446101f0565b5b80604052505050565b5f6102576101c7565b9050610263828261021d565b919050565b5f67ffffffffffffffff821115610282576102816101f0565b5b61028b826101e0565b9050602081019050919050565b828183375f83830152505050565b5f6102b86102b384610268565b61024e565b9050828152602081018484840111156102d4576102d36101dc565b5b6102df848285610298565b509392505050565b5f82601f8301126102fb576102fa6101d8565b5b813561030b8482602086016102a6565b91505092915050565b5f60208284031215610329576103286101d0565b5b5f82013567ffffffffffffffff811115610346576103456101d4565b5b610352848285016102e7565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610392578082015181840152602081019050610377565b5f8484015250505050565b5f6103a78261035b565b6103b18185610365565b93506103c1818560208601610375565b6103ca816101e0565b840191505092915050565b5f6020820190508181035f8301526103ed818461039d565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061043957607f821691505b60208210810361044c5761044b6103f5565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104ae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610473565b6104b88683610473565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6104fc6104f76104f2846104d0565b6104d9565b6104d0565b9050919050565b5f819050919050565b610515836104e2565b61052961052182610503565b84845461047f565b825550505050565b5f90565b61053d610531565b61054881848461050c565b505050565b5b8181101561056b576105605f82610535565b60018101905061054e565b5050565b601f8211156105b05761058181610452565b61058a84610464565b81016020851015610599578190505b6105ad6105a585610464565b83018261054d565b50505b505050565b5f82821c905092915050565b5f6105d05f19846008026105b5565b1980831691505092915050565b5f6105e883836105c1565b9150826002028217905092915050565b6106018261035b565b67ffffffffffffffff81111561061a576106196101f0565b5b6106248254610422565b61062f82828561056f565b5f60209050601f831160018114610660575f841561064e578287015190505b61065885826105dd565b8655506106bf565b601f19841661066e86610452565b5f5b8281101561069557848901518255600182019150602085019450602081019050610670565b868310156106b257848901516106ae601f8916826105c1565b8355505b6001600288020188555050505b50505050505056fea2646970667358221220577ca3d9adfba3f05e9828c37d17d5d53f8c4c319bee672d3c5472c50b010b3364736f6c63430008180033

PreviousABINextOpcodes

Last updated 5 months ago