É assim que uma operação básica em Solidity funciona por baixo dos panos. Pegue uma expressão simples como uint c = a + b — parece straightforward quando a escreve, mas o compilador traduz isso para algo bastante diferente ao nível do bytecode.
Uma vez compilado, obtém-se opcodes que parecem mais ou menos assim: PUSH1 a PUSH1 b ADD
Isso é o EVM a falar. Cada instrução é executada uma após a outra. O cliente processa cada opcode sequencialmente, empurrando valores para a pilha, realizando operações e passando para a próxima instrução. Sem atalhos, sem magia — apenas uma série determinística de passos que transforma o seu código de alto nível em operações executáveis pela máquina.
É por isso que a otimização de gás é tão importante no desenvolvimento blockchain. Cada opcode tem um custo, e entender qual bytecode é gerado a partir do seu Solidity faz toda a diferença entre contratos inteligentes eficientes e contratos que desperdiçam recursos.
Ver original
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
10 gostos
Recompensa
10
5
Republicar
Partilhar
Comentar
0/400
SelfSovereignSteve
· 6h atrás
Só agora percebi que o código que escrevemos é tão simples e direto, é só empurrar e puxar o stack de forma louca
Essa parte do gas é realmente o trunfo, a diferença entre contratos que entendem de bytecode e os que não entendem é enorme
Ei, por que ainda há pessoas escrevendo coisas que consomem tanto gas...
Escrever em Solidity é divertido, mas depois de compilar, aquele conjunto de código dá uma dor de cabeça
É por isso que às vezes operações de baixo nível em assembly podem economizar uma fortuna
Ver originalResponder0
SchrödingersNode
· 6h atrás
Parece uma soma simples, mas depois de compilar vira este conjunto de opcode... Preciso sempre lembrar-me de não assumir nada como garantido
Ver originalResponder0
BearMarketBarber
· 6h atrás
Falando sério, desenvolver em Solidity sem entender bytecode é pagar um imposto sobre inteligência.
Ver originalResponder0
RetiredMiner
· 6h atrás
Caramba, escrever um a+b é tão complicado nos bastidores, não é de admirar que a taxa de gás seja tão frustrante
Ver originalResponder0
AirdropSkeptic
· 6h atrás
É assim mesmo, por trás de uma linha de código aparentemente simples, tudo são opcode a serem executados, não admira que as taxas de gas sejam tão altas...
É assim que uma operação básica em Solidity funciona por baixo dos panos. Pegue uma expressão simples como uint c = a + b — parece straightforward quando a escreve, mas o compilador traduz isso para algo bastante diferente ao nível do bytecode.
Uma vez compilado, obtém-se opcodes que parecem mais ou menos assim:
PUSH1 a
PUSH1 b
ADD
Isso é o EVM a falar. Cada instrução é executada uma após a outra. O cliente processa cada opcode sequencialmente, empurrando valores para a pilha, realizando operações e passando para a próxima instrução. Sem atalhos, sem magia — apenas uma série determinística de passos que transforma o seu código de alto nível em operações executáveis pela máquina.
É por isso que a otimização de gás é tão importante no desenvolvimento blockchain. Cada opcode tem um custo, e entender qual bytecode é gerado a partir do seu Solidity faz toda a diferença entre contratos inteligentes eficientes e contratos que desperdiçam recursos.