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:
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
Last updated