Pelajaran 5

Final de optimización de contratos inteligentes: consejos y trucos avanzados

En nuestras lecciones anteriores, cubrimos los conceptos y herramientas fundamentales que necesita para optimizar el gas en los contratos inteligentes de Ethereum, especialmente utilizando Remix IDE. Mientras concluimos este curso, profundicemos en algunas técnicas avanzadas y mejores prácticas. Esta lección final combinará el conocimiento que hemos acumulado, lo que garantizará que obtenga una comprensión completa de la optimización del gas en los contratos inteligentes de Ethereum.

Refactorización y reducción de la complejidad del código

Una de las formas más sencillas de ahorrar gasolina es simplificar el código. Cuanto menos código haya que ejecutar, menos gas se consumirá.

Ejemplo de práctica

Considere la siguiente función:

Solidez 
 pragma solidez ^0.8.9; 

 contratos Ejemplo de optimización { 
 direcciones[] administradores públicos; 

 función isUserAdmin (usuario de dirección) vista pública devuelve (bool) { 
 for (uint i = 0; i < admins.length; i++) {
            if (admins[i] == user) return true;
        }
        devuelve falso; 
 } 
 }

La función anterior utiliza un bucle, que se vuelve más costoso a medida que se agregan más administradores. Una estructura más eficiente en términos de gas utilizaría un mapeo:

Solidez 
 contrato OptimizationExampleOptimized { 
 mapeo (dirección => bool) administradores públicos; 

 función isUserAdmin (usuario de dirección) vista pública devuelve (bool) {
        return admins[user];
    }
}

Reutilizar datos

Cuando trabaje con Ethereum, recuerde que está pagando por cada bit de almacenamiento. Si se encuentra almacenando los mismos datos en varios lugares, considere cómo podría almacenarlos una vez y consultarlos en otro lugar.

Usar bibliotecas

Las bibliotecas en Solidity son piezas de código reutilizables. Pueden ayudarle a escribir código modular y, dado que se implementan solo una vez y están vinculados a otros contratos, pueden ahorrar combustible a largo plazo.

Biblioteca Solidity 
 SafeMath { 
 función agregar(uint a, uint b) retornos puros internos (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    //... otras funciones matemáticas 
 } 

 contrato UsandoSafeMath { 
 usando SafeMath para uint; 

 valor público uint; 

 incremento de función (uint _value) público {
        value = value.add(_value);
    }
}

Eliminar almacenamiento innecesario

La palabra clave delete en Solidity le permite anular variables, lo que reembolsa parte del gas. Si ha terminado con un elemento de almacenamiento en particular, elimínelo para reclamar este reembolso.

Considere los registros de eventos

Si bien almacenar datos en blockchain puede resultar costoso, registrar eventos es comparativamente más barato. Si tiene datos que no es necesario leer del contrato pero que deben ser verificables, considere utilizar registros de eventos.

Evite el uso de operaciones costosas

Algunas operaciones consumen más gas que otras. Por ejemplo:

  • Las llamadas a funciones externas son más caras que las internas.
  • Interactuar con el almacenamiento es más caro que interactuar con la memoria.
  • Los arreglos dinámicos a veces pueden costar más gas que los arreglos de tamaño fijo.

Conclusión

La optimización de contratos inteligentes para el gas es tanto un arte como una ciencia. Los enfoques analizados en este curso, cuando se combinan, tienen el potencial de reducir drásticamente los costos del gas de sus contratos. Tenga en cuenta que el ecosistema Ethereum y sus herramientas, incluido Remix, siempre están cambiando. Manténgase actualizado y pruebe y mejore sus contratos periódicamente para optimizarlos. La comunidad Ethereum es grande y útil, así que nunca temas buscar orientación o mejores prácticas. ¡Diviértete codificando!

Pernyataan Formal
* Investasi Kripto melibatkan risiko besar. Lanjutkan dengan hati-hati. Kursus ini tidak dimaksudkan sebagai nasihat investasi.
* Kursus ini dibuat oleh penulis yang telah bergabung dengan Gate Learn. Setiap opini yang dibagikan oleh penulis tidak mewakili Gate Learn.
Katalog
Pelajaran 5

Final de optimización de contratos inteligentes: consejos y trucos avanzados

En nuestras lecciones anteriores, cubrimos los conceptos y herramientas fundamentales que necesita para optimizar el gas en los contratos inteligentes de Ethereum, especialmente utilizando Remix IDE. Mientras concluimos este curso, profundicemos en algunas técnicas avanzadas y mejores prácticas. Esta lección final combinará el conocimiento que hemos acumulado, lo que garantizará que obtenga una comprensión completa de la optimización del gas en los contratos inteligentes de Ethereum.

Refactorización y reducción de la complejidad del código

Una de las formas más sencillas de ahorrar gasolina es simplificar el código. Cuanto menos código haya que ejecutar, menos gas se consumirá.

Ejemplo de práctica

Considere la siguiente función:

Solidez 
 pragma solidez ^0.8.9; 

 contratos Ejemplo de optimización { 
 direcciones[] administradores públicos; 

 función isUserAdmin (usuario de dirección) vista pública devuelve (bool) { 
 for (uint i = 0; i < admins.length; i++) {
            if (admins[i] == user) return true;
        }
        devuelve falso; 
 } 
 }

La función anterior utiliza un bucle, que se vuelve más costoso a medida que se agregan más administradores. Una estructura más eficiente en términos de gas utilizaría un mapeo:

Solidez 
 contrato OptimizationExampleOptimized { 
 mapeo (dirección => bool) administradores públicos; 

 función isUserAdmin (usuario de dirección) vista pública devuelve (bool) {
        return admins[user];
    }
}

Reutilizar datos

Cuando trabaje con Ethereum, recuerde que está pagando por cada bit de almacenamiento. Si se encuentra almacenando los mismos datos en varios lugares, considere cómo podría almacenarlos una vez y consultarlos en otro lugar.

Usar bibliotecas

Las bibliotecas en Solidity son piezas de código reutilizables. Pueden ayudarle a escribir código modular y, dado que se implementan solo una vez y están vinculados a otros contratos, pueden ahorrar combustible a largo plazo.

Biblioteca Solidity 
 SafeMath { 
 función agregar(uint a, uint b) retornos puros internos (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    //... otras funciones matemáticas 
 } 

 contrato UsandoSafeMath { 
 usando SafeMath para uint; 

 valor público uint; 

 incremento de función (uint _value) público {
        value = value.add(_value);
    }
}

Eliminar almacenamiento innecesario

La palabra clave delete en Solidity le permite anular variables, lo que reembolsa parte del gas. Si ha terminado con un elemento de almacenamiento en particular, elimínelo para reclamar este reembolso.

Considere los registros de eventos

Si bien almacenar datos en blockchain puede resultar costoso, registrar eventos es comparativamente más barato. Si tiene datos que no es necesario leer del contrato pero que deben ser verificables, considere utilizar registros de eventos.

Evite el uso de operaciones costosas

Algunas operaciones consumen más gas que otras. Por ejemplo:

  • Las llamadas a funciones externas son más caras que las internas.
  • Interactuar con el almacenamiento es más caro que interactuar con la memoria.
  • Los arreglos dinámicos a veces pueden costar más gas que los arreglos de tamaño fijo.

Conclusión

La optimización de contratos inteligentes para el gas es tanto un arte como una ciencia. Los enfoques analizados en este curso, cuando se combinan, tienen el potencial de reducir drásticamente los costos del gas de sus contratos. Tenga en cuenta que el ecosistema Ethereum y sus herramientas, incluido Remix, siempre están cambiando. Manténgase actualizado y pruebe y mejore sus contratos periódicamente para optimizarlos. La comunidad Ethereum es grande y útil, así que nunca temas buscar orientación o mejores prácticas. ¡Diviértete codificando!

Pernyataan Formal
* Investasi Kripto melibatkan risiko besar. Lanjutkan dengan hati-hati. Kursus ini tidak dimaksudkan sebagai nasihat investasi.
* Kursus ini dibuat oleh penulis yang telah bergabung dengan Gate Learn. Setiap opini yang dibagikan oleh penulis tidak mewakili Gate Learn.