Guia de Práticas de Otimização de Gas para Contratos Inteligentes Ethereum
As taxas de Gas da rede principal Ethereum têm sido um problema complicado, especialmente durante períodos de congestionamento da rede. Durante os picos, os usuários frequentemente precisam pagar altas taxas de transação. Assim, é crucial otimizar as taxas de Gas durante a fase de desenvolvimento de contratos inteligentes. A otimização do consumo de Gas não só pode reduzir efetivamente os custos de transação, mas também melhorar a eficiência das transações, proporcionando aos usuários uma experiência de utilização de blockchain mais econômica e eficiente.
Este artigo irá abordar o mecanismo de taxas de Gas da Máquina Virtual Ethereum (EVM), os conceitos centrais relacionados à otimização de taxas de Gas, bem como as melhores práticas para otimização de taxas de Gas ao desenvolver contratos inteligentes. Espera-se que este conteúdo possa oferecer inspiração e ajuda prática aos desenvolvedores, ao mesmo tempo que ajuda os usuários comuns a entender melhor o funcionamento das taxas de Gas da EVM, enfrentando juntos os desafios do ecossistema blockchain.
Introdução ao mecanismo de taxas de Gas do EVM
Em redes compatíveis com EVM, "Gas" é a unidade usada para medir a capacidade de cálculo necessária para executar operações específicas.
Na estrutura do EVM, o consumo de Gas é dividido em três partes: execução de operações, chamadas de mensagens externas e leitura/escrita de memória e armazenamento.
Devido ao fato de que a execução de cada transação requer recursos computacionais, será cobrada uma certa taxa para evitar ciclos infinitos e ataques de negação de serviço (DoS). A taxa necessária para completar uma transação é chamada de "taxa de Gas".
Desde a ativação do fork duro de Londres EIP-1559( ), a taxa de Gas é calculada pela seguinte fórmula:
Taxa de gás = unidades de gás utilizadas * (taxa base + taxa de prioridade)
A taxa base será destruída, enquanto a taxa prioritária servirá como um incentivo, encorajando os validadores a adicionar transações à blockchain. Definir uma taxa prioritária mais alta ao enviar uma transação pode aumentar a probabilidade de a transação ser incluída no próximo bloco. Isso é semelhante a uma "gorjeta" que o usuário paga ao validador.
Compreendendo a otimização de Gas no EVM
Quando um contrato inteligente é compilado com Solidity, o contrato é convertido em uma série de "códigos de operação", ou seja, opcodes.
Qualquer sequência de código de operação (, como criar contratos, realizar chamadas de mensagem, acessar o armazenamento de contas e executar operações na máquina virtual ), tem um custo de consumo de Gas reconhecido, que está registrado no livro amarelo do Ethereum.
Após várias modificações no EIP, o custo em Gas de alguns códigos de operação foi ajustado, podendo diferir do que está no livro amarelo.
Conceito básico de otimização de Gas
A ideia central da otimização de Gas é priorizar operações com alta eficiência de custo na blockchain EVM, evitando operações com custos de Gas elevados.
No EVM, as seguintes operações têm um custo mais baixo:
Ler e escrever variáveis de memória
Ler constantes e variáveis imutáveis
Ler e escrever variáveis locais
Ler variáveis de calldata, como arrays e estruturas de calldata
Chamada de função interna
As operações com custos mais elevados incluem:
Ler e escrever variáveis de estado armazenadas no armazenamento do contrato
Chamada de função externa
Operação em loop
Melhores Práticas para Otimização de Custos de Gas EVM
Com base nos conceitos básicos mencionados, elaborámos uma lista de melhores práticas para a otimização das taxas de Gas para a comunidade de desenvolvedores. Ao seguir essas práticas, os desenvolvedores podem reduzir o consumo de Gas dos contratos inteligentes, diminuir os custos das transações e criar aplicações mais eficientes e amigáveis para os utilizadores.
1. Tente minimizar o uso de armazenamento
No Solidity, o Storage( armazenamento) é um recurso limitado, cujo consumo de Gas é muito superior ao Memory( memória). Cada vez que um contrato inteligente lê ou escreve dados no armazenamento, gera altos custos de Gas.
De acordo com a definição do livro branco do Ethereum, o custo das operações de armazenamento é mais de 100 vezes maior do que o das operações de memória. Por exemplo, os comandos OPcodes mload e mstore consomem apenas 3 unidades de Gas, enquanto as operações de armazenamento como sload e sstore, mesmo nas melhores condições, custam pelo menos 100 unidades.
Os métodos para limitar o uso de armazenamento incluem:
Armazenar dados não permanentes na memória
Reduzir o número de modificações de armazenamento: ao guardar os resultados intermediários na memória e, após a conclusão de todos os cálculos, alocar os resultados às variáveis de armazenamento.
2. Variável empacotada
O número de slots de armazenamento( utilizados em contratos inteligentes e a forma como os desenvolvedores expressam os dados terão um grande impacto no consumo de Gas.
O compilador Solidity empacota variáveis de armazenamento contínuas durante o processo de compilação, usando slots de armazenamento de 32 bytes como a unidade básica de armazenamento das variáveis. O empacotamento de variáveis refere-se à disposição adequada das variáveis, permitindo que múltiplas variáveis se ajustem a um único slot de armazenamento.
Através desse ajuste de detalhe, os desenvolvedores podem economizar 20.000 unidades de Gas ) armazenar um slot de armazenamento não utilizado consome 20.000 Gas (, mas agora apenas requer dois slots de armazenamento.
Como cada slot de armazenamento consome Gas, o empacotamento de variáveis otimiza o uso de Gas ao reduzir o número de slots de armazenamento necessários.
![Melhores práticas de otimização de Gas para contratos inteligentes Ethereum])https://img-cdn.gateio.im/webp-social/moments-995905cb414526d4d991899d0c2e6443.webp(
) 3. Otimizar tipos de dados
Uma variável pode ser representada por vários tipos de dados, mas o custo das operações correspondentes a diferentes tipos de dados também varia. Escolher o tipo de dado adequado ajuda a otimizar o uso de Gas.
Por exemplo, em Solidity, os inteiros podem ser divididos em diferentes tamanhos: uint8, uint16, uint32, etc. Como a EVM executa operações em unidades de 256 bits, usar uint8 significa que a EVM deve primeiro convertê-lo para uint256, e essa conversão consumirá Gas adicional.
Isoladamente, usar uint256 aqui é mais barato do que uint8. No entanto, se utilizarmos a otimização de empacotamento de variáveis que sugerimos anteriormente, a situação muda. Se os desenvolvedores puderem empacotar quatro variáveis uint8 em um slot de armazenamento, o custo total para iterá-las será menor do que o de quatro variáveis uint256. Assim, o contrato inteligente pode ler e escrever um slot de armazenamento uma única vez e colocar quatro variáveis uint8 na memória/armazenamento em uma única operação.
![Ethereum contratos inteligentes Gas otimização das dez melhores práticas]###https://img-cdn.gateio.im/webp-social/moments-55fcdb765912ef9cd238c46b1d248cff.webp(
) 4. Usar variáveis de tamanho fixo em vez de variáveis dinâmicas
Se os dados puderem ser controlados dentro de 32 bytes, é recomendável usar o tipo de dado bytes32 em vez de bytes ou strings. Em geral, variáveis de tamanho fixo consomem menos Gas do que variáveis de tamanho variável. Se o comprimento dos bytes puder ser limitado, tente escolher o menor comprimento possível entre bytes1 e bytes32.
5. Mapeamentos e arrays
A lista de dados do Solidity pode ser representada por duas tipos de dados: arrays ### Arrays ( e mapeamentos ) Mappings (, mas sua sintaxe e estrutura são completamente diferentes.
Em muitos casos, os mapeamentos são mais eficientes e custam menos, mas os arrays possuem iterabilidade e suportam o empacotamento de tipos de dados. Portanto, é aconselhável priorizar o uso de mapeamentos ao gerenciar listas de dados, a menos que seja necessário iterar ou que a otimização do consumo de Gas possa ser alcançada através do empacotamento de tipos de dados.
![Ethereum contratos inteligentes de otimização de Gas: as dez melhores práticas])https://img-cdn.gateio.im/webp-social/moments-5f3d7e103e47c886f50599cffe35c707.webp(
) 6. Usar calldata em vez de memory
As variáveis declaradas nos parâmetros da função podem ser armazenadas em calldata ou memory. A principal diferença entre os dois é que a memory pode ser modificada pela função, enquanto a calldata é imutável.
Lembre-se deste princípio: se os parâmetros da função forem somente leitura, deve-se preferir o uso de calldata em vez de memory. Isso pode evitar operações desnecessárias de cópia de calldata da função para memory.
7. Tente usar as palavras-chave Constant/Immutable sempre que possível
As variáveis Constant/Immutable não são armazenadas no armazenamento do contrato. Essas variáveis são calculadas em tempo de compilação e armazenadas no bytecode do contrato. Portanto, em comparação com o armazenamento, o custo de acesso a elas é muito menor, sendo recomendado usar as palavras-chave Constant ou Immutable sempre que possível.
![Otimização de Gas em contratos inteligentes Ethereum: 10 Melhores Práticas]###https://img-cdn.gateio.im/webp-social/moments-9c566626ab499ef65d6f5089a2876ad3.webp(
) 8. Usar Unchecked garantindo que não ocorra overflow/underflow
Quando os desenvolvedores podem garantir que as operações aritméticas não resultarão em overflow ou underflow, podem usar a palavra-chave unchecked introduzida no Solidity v0.8.0 para evitar verificações desnecessárias de overflow ou underflow, economizando assim custos de Gas.
Além disso, as versões 0.8.0 e superiores do compilador não precisam mais da biblioteca SafeMath, uma vez que o próprio compilador já incorporou funcionalidades de proteção contra estouro e subfluxo.
9. otimizador de modificações
O código do modificador é incorporado na função alterada, e cada vez que o modificador é utilizado, seu código é copiado. Isso aumentará o tamanho do bytecode e aumentará o consumo de Gas.
Ao reestruturar a lógica como a função interna _checkOwner###(, permite-se a reutilização dessa função interna dentro do modificador, o que pode reduzir o tamanho do bytecode e diminuir os custos de Gas.
![Ethereum contratos inteligentes Gas otimização das dez melhores práticas])https://img-cdn.gateio.im/webp-social/moments-c0701f9e09280a1667495d54e262dd2f.webp(
) 10. Otimização de atalho
Para os operadores || e &&, a avaliação lógica ocorre com avaliação de curto-circuito, ou seja, se a primeira condição já puder determinar o resultado da expressão lógica, a segunda condição não será avaliada.
Para otimizar o consumo de Gas, as condições com baixo custo de computação devem ser colocadas na frente, assim é possível pular cálculos dispendiosos.
![Oito melhores práticas de otimização de Gas para contratos inteligentes Ethereum]###https://img-cdn.gateio.im/webp-social/moments-a823fb7761aafa6529a6c45304e0314b.webp(
Sugestões gerais adicionais
) 1. Remover código inútil
Se existirem funções ou variáveis não utilizadas no contrato, recomenda-se que sejam eliminadas. Esta é a forma mais direta de reduzir os custos de implantação do contrato e manter o tamanho do contrato pequeno.
Aqui estão algumas sugestões úteis:
Utilize os algoritmos mais eficientes para calcular. Se os resultados de certos cálculos forem usados diretamente no contrato, então esses processos de cálculo redundantes devem ser eliminados. Em essência, qualquer cálculo não utilizado deve ser removido.
No Ethereum, os desenvolvedores podem obter recompensas em Gas ao liberar espaço de armazenamento. Se uma variável não for mais necessária, deve-se usar a palavra-chave delete para removê-la ou defini-la como o valor padrão.
Otimização de loops: evite operações de loop de alto custo, combine loops sempre que possível e mova cálculos repetidos para fora do corpo do loop.
2. Usar contratos inteligentes pré-compilados
Os contratos pré-compilados oferecem funções de biblioteca complexas, como operações de criptografia e hash. Como o código não é executado na EVM, mas sim localmente nos nós do cliente, é necessário menos Gas. O uso de contratos pré-compilados pode economizar Gas, reduzindo a carga de trabalho computacional necessária para a execução de contratos inteligentes.
Exemplos de contratos pré-compilados incluem o algoritmo de assinatura digital de curva elíptica ### ECDSA ( e o algoritmo de hash SHA2-256. Ao usar esses contratos pré-compilados em contratos inteligentes, os desenvolvedores podem reduzir os custos de Gas e aumentar a eficiência de execução das aplicações.
![Ethereum contratos inteligentes de Gas otimização das dez melhores práticas])https://img-cdn.gateio.im/webp-social/moments-839b91e2f02389949aa698d460a497d8.webp(
) 3. Usar código de montagem inline
assemblagem embutida ### in-line assembly ( permite aos desenvolvedores escrever código de baixo nível, mas eficiente, que pode ser executado diretamente pela EVM, sem a necessidade de usar
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.
6 gostos
Recompensa
6
4
Republicar
Partilhar
Comentar
0/400
GateUser-00be86fc
· 5h atrás
gás muito caro, que raios, contratos inteligentes
Ver originalResponder0
PermabullPete
· 6h atrás
O gás está tão caro que ninguém se atreve a tocar.
Ver originalResponder0
BearMarketMonk
· 6h atrás
Todas as otimizações, no final, não passam de uma forma de economizar o preço de uma refeição...
Ver originalResponder0
RunWithRugs
· 6h atrás
Durante o pico, o gás já dá para comprar uma refeição, tsk tsk.
Guia de Práticas de Otimização de Gas para Contratos Inteligentes Ethereum: Gota de Custo, Aumento de Eficiência
Guia de Práticas de Otimização de Gas para Contratos Inteligentes Ethereum
As taxas de Gas da rede principal Ethereum têm sido um problema complicado, especialmente durante períodos de congestionamento da rede. Durante os picos, os usuários frequentemente precisam pagar altas taxas de transação. Assim, é crucial otimizar as taxas de Gas durante a fase de desenvolvimento de contratos inteligentes. A otimização do consumo de Gas não só pode reduzir efetivamente os custos de transação, mas também melhorar a eficiência das transações, proporcionando aos usuários uma experiência de utilização de blockchain mais econômica e eficiente.
Este artigo irá abordar o mecanismo de taxas de Gas da Máquina Virtual Ethereum (EVM), os conceitos centrais relacionados à otimização de taxas de Gas, bem como as melhores práticas para otimização de taxas de Gas ao desenvolver contratos inteligentes. Espera-se que este conteúdo possa oferecer inspiração e ajuda prática aos desenvolvedores, ao mesmo tempo que ajuda os usuários comuns a entender melhor o funcionamento das taxas de Gas da EVM, enfrentando juntos os desafios do ecossistema blockchain.
Introdução ao mecanismo de taxas de Gas do EVM
Em redes compatíveis com EVM, "Gas" é a unidade usada para medir a capacidade de cálculo necessária para executar operações específicas.
Na estrutura do EVM, o consumo de Gas é dividido em três partes: execução de operações, chamadas de mensagens externas e leitura/escrita de memória e armazenamento.
Devido ao fato de que a execução de cada transação requer recursos computacionais, será cobrada uma certa taxa para evitar ciclos infinitos e ataques de negação de serviço (DoS). A taxa necessária para completar uma transação é chamada de "taxa de Gas".
Desde a ativação do fork duro de Londres EIP-1559( ), a taxa de Gas é calculada pela seguinte fórmula:
Taxa de gás = unidades de gás utilizadas * (taxa base + taxa de prioridade)
A taxa base será destruída, enquanto a taxa prioritária servirá como um incentivo, encorajando os validadores a adicionar transações à blockchain. Definir uma taxa prioritária mais alta ao enviar uma transação pode aumentar a probabilidade de a transação ser incluída no próximo bloco. Isso é semelhante a uma "gorjeta" que o usuário paga ao validador.
Compreendendo a otimização de Gas no EVM
Quando um contrato inteligente é compilado com Solidity, o contrato é convertido em uma série de "códigos de operação", ou seja, opcodes.
Qualquer sequência de código de operação (, como criar contratos, realizar chamadas de mensagem, acessar o armazenamento de contas e executar operações na máquina virtual ), tem um custo de consumo de Gas reconhecido, que está registrado no livro amarelo do Ethereum.
Após várias modificações no EIP, o custo em Gas de alguns códigos de operação foi ajustado, podendo diferir do que está no livro amarelo.
Conceito básico de otimização de Gas
A ideia central da otimização de Gas é priorizar operações com alta eficiência de custo na blockchain EVM, evitando operações com custos de Gas elevados.
No EVM, as seguintes operações têm um custo mais baixo:
As operações com custos mais elevados incluem:
Melhores Práticas para Otimização de Custos de Gas EVM
Com base nos conceitos básicos mencionados, elaborámos uma lista de melhores práticas para a otimização das taxas de Gas para a comunidade de desenvolvedores. Ao seguir essas práticas, os desenvolvedores podem reduzir o consumo de Gas dos contratos inteligentes, diminuir os custos das transações e criar aplicações mais eficientes e amigáveis para os utilizadores.
1. Tente minimizar o uso de armazenamento
No Solidity, o Storage( armazenamento) é um recurso limitado, cujo consumo de Gas é muito superior ao Memory( memória). Cada vez que um contrato inteligente lê ou escreve dados no armazenamento, gera altos custos de Gas.
De acordo com a definição do livro branco do Ethereum, o custo das operações de armazenamento é mais de 100 vezes maior do que o das operações de memória. Por exemplo, os comandos OPcodes mload e mstore consomem apenas 3 unidades de Gas, enquanto as operações de armazenamento como sload e sstore, mesmo nas melhores condições, custam pelo menos 100 unidades.
Os métodos para limitar o uso de armazenamento incluem:
2. Variável empacotada
O número de slots de armazenamento( utilizados em contratos inteligentes e a forma como os desenvolvedores expressam os dados terão um grande impacto no consumo de Gas.
O compilador Solidity empacota variáveis de armazenamento contínuas durante o processo de compilação, usando slots de armazenamento de 32 bytes como a unidade básica de armazenamento das variáveis. O empacotamento de variáveis refere-se à disposição adequada das variáveis, permitindo que múltiplas variáveis se ajustem a um único slot de armazenamento.
Através desse ajuste de detalhe, os desenvolvedores podem economizar 20.000 unidades de Gas ) armazenar um slot de armazenamento não utilizado consome 20.000 Gas (, mas agora apenas requer dois slots de armazenamento.
Como cada slot de armazenamento consome Gas, o empacotamento de variáveis otimiza o uso de Gas ao reduzir o número de slots de armazenamento necessários.
![Melhores práticas de otimização de Gas para contratos inteligentes Ethereum])https://img-cdn.gateio.im/webp-social/moments-995905cb414526d4d991899d0c2e6443.webp(
) 3. Otimizar tipos de dados
Uma variável pode ser representada por vários tipos de dados, mas o custo das operações correspondentes a diferentes tipos de dados também varia. Escolher o tipo de dado adequado ajuda a otimizar o uso de Gas.
Por exemplo, em Solidity, os inteiros podem ser divididos em diferentes tamanhos: uint8, uint16, uint32, etc. Como a EVM executa operações em unidades de 256 bits, usar uint8 significa que a EVM deve primeiro convertê-lo para uint256, e essa conversão consumirá Gas adicional.
Isoladamente, usar uint256 aqui é mais barato do que uint8. No entanto, se utilizarmos a otimização de empacotamento de variáveis que sugerimos anteriormente, a situação muda. Se os desenvolvedores puderem empacotar quatro variáveis uint8 em um slot de armazenamento, o custo total para iterá-las será menor do que o de quatro variáveis uint256. Assim, o contrato inteligente pode ler e escrever um slot de armazenamento uma única vez e colocar quatro variáveis uint8 na memória/armazenamento em uma única operação.
![Ethereum contratos inteligentes Gas otimização das dez melhores práticas]###https://img-cdn.gateio.im/webp-social/moments-55fcdb765912ef9cd238c46b1d248cff.webp(
) 4. Usar variáveis de tamanho fixo em vez de variáveis dinâmicas
Se os dados puderem ser controlados dentro de 32 bytes, é recomendável usar o tipo de dado bytes32 em vez de bytes ou strings. Em geral, variáveis de tamanho fixo consomem menos Gas do que variáveis de tamanho variável. Se o comprimento dos bytes puder ser limitado, tente escolher o menor comprimento possível entre bytes1 e bytes32.
5. Mapeamentos e arrays
A lista de dados do Solidity pode ser representada por duas tipos de dados: arrays ### Arrays ( e mapeamentos ) Mappings (, mas sua sintaxe e estrutura são completamente diferentes.
Em muitos casos, os mapeamentos são mais eficientes e custam menos, mas os arrays possuem iterabilidade e suportam o empacotamento de tipos de dados. Portanto, é aconselhável priorizar o uso de mapeamentos ao gerenciar listas de dados, a menos que seja necessário iterar ou que a otimização do consumo de Gas possa ser alcançada através do empacotamento de tipos de dados.
![Ethereum contratos inteligentes de otimização de Gas: as dez melhores práticas])https://img-cdn.gateio.im/webp-social/moments-5f3d7e103e47c886f50599cffe35c707.webp(
) 6. Usar calldata em vez de memory
As variáveis declaradas nos parâmetros da função podem ser armazenadas em calldata ou memory. A principal diferença entre os dois é que a memory pode ser modificada pela função, enquanto a calldata é imutável.
Lembre-se deste princípio: se os parâmetros da função forem somente leitura, deve-se preferir o uso de calldata em vez de memory. Isso pode evitar operações desnecessárias de cópia de calldata da função para memory.
7. Tente usar as palavras-chave Constant/Immutable sempre que possível
As variáveis Constant/Immutable não são armazenadas no armazenamento do contrato. Essas variáveis são calculadas em tempo de compilação e armazenadas no bytecode do contrato. Portanto, em comparação com o armazenamento, o custo de acesso a elas é muito menor, sendo recomendado usar as palavras-chave Constant ou Immutable sempre que possível.
![Otimização de Gas em contratos inteligentes Ethereum: 10 Melhores Práticas]###https://img-cdn.gateio.im/webp-social/moments-9c566626ab499ef65d6f5089a2876ad3.webp(
) 8. Usar Unchecked garantindo que não ocorra overflow/underflow
Quando os desenvolvedores podem garantir que as operações aritméticas não resultarão em overflow ou underflow, podem usar a palavra-chave unchecked introduzida no Solidity v0.8.0 para evitar verificações desnecessárias de overflow ou underflow, economizando assim custos de Gas.
Além disso, as versões 0.8.0 e superiores do compilador não precisam mais da biblioteca SafeMath, uma vez que o próprio compilador já incorporou funcionalidades de proteção contra estouro e subfluxo.
9. otimizador de modificações
O código do modificador é incorporado na função alterada, e cada vez que o modificador é utilizado, seu código é copiado. Isso aumentará o tamanho do bytecode e aumentará o consumo de Gas.
Ao reestruturar a lógica como a função interna _checkOwner###(, permite-se a reutilização dessa função interna dentro do modificador, o que pode reduzir o tamanho do bytecode e diminuir os custos de Gas.
![Ethereum contratos inteligentes Gas otimização das dez melhores práticas])https://img-cdn.gateio.im/webp-social/moments-c0701f9e09280a1667495d54e262dd2f.webp(
) 10. Otimização de atalho
Para os operadores || e &&, a avaliação lógica ocorre com avaliação de curto-circuito, ou seja, se a primeira condição já puder determinar o resultado da expressão lógica, a segunda condição não será avaliada.
Para otimizar o consumo de Gas, as condições com baixo custo de computação devem ser colocadas na frente, assim é possível pular cálculos dispendiosos.
![Oito melhores práticas de otimização de Gas para contratos inteligentes Ethereum]###https://img-cdn.gateio.im/webp-social/moments-a823fb7761aafa6529a6c45304e0314b.webp(
Sugestões gerais adicionais
) 1. Remover código inútil
Se existirem funções ou variáveis não utilizadas no contrato, recomenda-se que sejam eliminadas. Esta é a forma mais direta de reduzir os custos de implantação do contrato e manter o tamanho do contrato pequeno.
Aqui estão algumas sugestões úteis:
Utilize os algoritmos mais eficientes para calcular. Se os resultados de certos cálculos forem usados diretamente no contrato, então esses processos de cálculo redundantes devem ser eliminados. Em essência, qualquer cálculo não utilizado deve ser removido.
No Ethereum, os desenvolvedores podem obter recompensas em Gas ao liberar espaço de armazenamento. Se uma variável não for mais necessária, deve-se usar a palavra-chave delete para removê-la ou defini-la como o valor padrão.
Otimização de loops: evite operações de loop de alto custo, combine loops sempre que possível e mova cálculos repetidos para fora do corpo do loop.
2. Usar contratos inteligentes pré-compilados
Os contratos pré-compilados oferecem funções de biblioteca complexas, como operações de criptografia e hash. Como o código não é executado na EVM, mas sim localmente nos nós do cliente, é necessário menos Gas. O uso de contratos pré-compilados pode economizar Gas, reduzindo a carga de trabalho computacional necessária para a execução de contratos inteligentes.
Exemplos de contratos pré-compilados incluem o algoritmo de assinatura digital de curva elíptica ### ECDSA ( e o algoritmo de hash SHA2-256. Ao usar esses contratos pré-compilados em contratos inteligentes, os desenvolvedores podem reduzir os custos de Gas e aumentar a eficiência de execução das aplicações.
![Ethereum contratos inteligentes de Gas otimização das dez melhores práticas])https://img-cdn.gateio.im/webp-social/moments-839b91e2f02389949aa698d460a497d8.webp(
) 3. Usar código de montagem inline
assemblagem embutida ### in-line assembly ( permite aos desenvolvedores escrever código de baixo nível, mas eficiente, que pode ser executado diretamente pela EVM, sem a necessidade de usar