Bài học 5

Final de Otimização de Contratos Inteligentes - Dicas e Truques Avançados

Nas nossas lições anteriores, cobrimos conceitos e ferramentas fundamentais de que precisa para otimizar o gás nos contratos inteligentes da Ethereum, especialmente usando o IDE Remix. À medida que encerramos este curso, vamos mergulhar em algumas técnicas avançadas e melhores práticas. Esta lição final combinará o conhecimento que acumulamos, garantindo que vai embora com uma compreensão aprofundada da otimização de gás nos contratos inteligentes Ethereum.

Refactoração e Redução da Complexidade do Código

Uma das formas mais simples de poupar gás é simplificando o seu código. Quanto menos código houver para executar, menos gás é consumido.

Exemplo de prática

Considere a seguinte função:

Solidez
solidez do pragma ^0.8.9;

exemplo de otimização do contrato {
 endereço [] administradores públicos;

 função isUserAdmin (endereço do utilizador) retornos de vista pública (bool) {
 para (unidade i = 0; i < admins.length; i++) {
            if (admins[i] == user) return true;
        }
        retorno falso;
 }
}

A função acima usa um loop, que se torna mais caro à medida que mais administradores são adicionados. Uma estrutura mais eficiente em termos de gás usaria um mapeamento:

Solidez
contracto OptimizationExampleOptimize {
 mapeamento (endereço = > bool) administradores públicos;

 função isUserAdmin (endereço do utilizador) retornos de vista pública (bool) {
        return admins[user];
    }
}

Reutilizar Dados

Ao trabalhar com o Ethereum, lembre-se que está a pagar por cada bit de armazenamento. Se estiver a armazenar os mesmos dados em vários locais, considere como pode armazená-los uma vez e referenciá-los noutro lugar.

Utilizar Bibliotecas

As bibliotecas no Solidity são pedaços de código reutilizáveis. Podem ajudá-lo a escrever código modular e, uma vez que são implementados apenas uma vez e ligados a outros contratos, podem poupar gás a longo prazo.

Solidez
biblioteca SafeMath {
 função add (uint a, uint b) retornos puros internos (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    //... outras funções matemáticas
}

contrato usando SafeMath {
 usando SafeMath para unidade;

 valor público da unidade;

 incremento de função (uint _value) público {
        value = value.add(_value);
    }
}

Eliminar armazenamento desnecessário

A palavra-chave delete no Solidity permite-lhe anular variáveis, que reembolsam parte do gás. Se tiver terminado com um determinado pedaço de armazenamento, elimine-o para reclamar este reembolso.

Considere os registos de eventos

Embora o armazenamento de dados na cadeia de blocos possa ser caro, registar eventos é comparativamente mais barato. Se tiver dados que não precisam ser lidos do contrato mas devem ser verificáveis, considere usar registos de eventos.

Evite usar operações caras

Algumas operações são mais intensivas em gás do que outras. Por exemplo:

  • As chamadas de função externa são mais caras que as internas.
  • Interagir com o armazenamento é mais caro do que interagir com a memória.
  • As matrizes dinâmicas podem por vezes custar mais gás do que as matrizes de tamanho fixo.

Conclusão

A otimização de contratos inteligentes para gás é uma arte e uma ciência. As abordagens discutidas neste curso, quando combinadas, têm o potencial de reduzir drasticamente os custos do gás dos seus contratos. Tenha em mente que o ecossistema Ethereum e as suas ferramentas, incluindo o Remix, estão sempre a mudar. Mantenha-se atualizado e teste e melhore os seus contratos regularmente para otimização. A comunidade Ethereum é grande e útil, por isso nunca tenha medo de procurar orientação ou melhores práticas. Divirta-se a codificação!

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 5

Final de Otimização de Contratos Inteligentes - Dicas e Truques Avançados

Nas nossas lições anteriores, cobrimos conceitos e ferramentas fundamentais de que precisa para otimizar o gás nos contratos inteligentes da Ethereum, especialmente usando o IDE Remix. À medida que encerramos este curso, vamos mergulhar em algumas técnicas avançadas e melhores práticas. Esta lição final combinará o conhecimento que acumulamos, garantindo que vai embora com uma compreensão aprofundada da otimização de gás nos contratos inteligentes Ethereum.

Refactoração e Redução da Complexidade do Código

Uma das formas mais simples de poupar gás é simplificando o seu código. Quanto menos código houver para executar, menos gás é consumido.

Exemplo de prática

Considere a seguinte função:

Solidez
solidez do pragma ^0.8.9;

exemplo de otimização do contrato {
 endereço [] administradores públicos;

 função isUserAdmin (endereço do utilizador) retornos de vista pública (bool) {
 para (unidade i = 0; i < admins.length; i++) {
            if (admins[i] == user) return true;
        }
        retorno falso;
 }
}

A função acima usa um loop, que se torna mais caro à medida que mais administradores são adicionados. Uma estrutura mais eficiente em termos de gás usaria um mapeamento:

Solidez
contracto OptimizationExampleOptimize {
 mapeamento (endereço = > bool) administradores públicos;

 função isUserAdmin (endereço do utilizador) retornos de vista pública (bool) {
        return admins[user];
    }
}

Reutilizar Dados

Ao trabalhar com o Ethereum, lembre-se que está a pagar por cada bit de armazenamento. Se estiver a armazenar os mesmos dados em vários locais, considere como pode armazená-los uma vez e referenciá-los noutro lugar.

Utilizar Bibliotecas

As bibliotecas no Solidity são pedaços de código reutilizáveis. Podem ajudá-lo a escrever código modular e, uma vez que são implementados apenas uma vez e ligados a outros contratos, podem poupar gás a longo prazo.

Solidez
biblioteca SafeMath {
 função add (uint a, uint b) retornos puros internos (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    //... outras funções matemáticas
}

contrato usando SafeMath {
 usando SafeMath para unidade;

 valor público da unidade;

 incremento de função (uint _value) público {
        value = value.add(_value);
    }
}

Eliminar armazenamento desnecessário

A palavra-chave delete no Solidity permite-lhe anular variáveis, que reembolsam parte do gás. Se tiver terminado com um determinado pedaço de armazenamento, elimine-o para reclamar este reembolso.

Considere os registos de eventos

Embora o armazenamento de dados na cadeia de blocos possa ser caro, registar eventos é comparativamente mais barato. Se tiver dados que não precisam ser lidos do contrato mas devem ser verificáveis, considere usar registos de eventos.

Evite usar operações caras

Algumas operações são mais intensivas em gás do que outras. Por exemplo:

  • As chamadas de função externa são mais caras que as internas.
  • Interagir com o armazenamento é mais caro do que interagir com a memória.
  • As matrizes dinâmicas podem por vezes custar mais gás do que as matrizes de tamanho fixo.

Conclusão

A otimização de contratos inteligentes para gás é uma arte e uma ciência. As abordagens discutidas neste curso, quando combinadas, têm o potencial de reduzir drasticamente os custos do gás dos seus contratos. Tenha em mente que o ecossistema Ethereum e as suas ferramentas, incluindo o Remix, estão sempre a mudar. Mantenha-se atualizado e teste e melhore os seus contratos regularmente para otimização. A comunidade Ethereum é grande e útil, por isso nunca tenha medo de procurar orientação ou melhores práticas. Divirta-se a codificação!

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.