8 trucos fáciles de optimización de gas para solidez

Para interactuar con una cadena de bloques EVM (Ethereum Virtual Machine), siempre tendrá que pagar tarifas de gas. Estas tarifas pueden ser frustrantes ya que pueden ser muy altas. Echemos un vistazo a qué son exactamente y cómo podemos optimizar nuestro código de contrato inteligente para reducir las tarifas de gas.

¿Qué es el gas en Ethereum?

En Documentación de Ethereum, el gas se define como sigue:

“Gas se refiere a la unidad que mide la cantidad de esfuerzo computacional requerido para ejecutar operaciones específicas en la red Ethereum. Dado que cada transacción de Ethereum requiere recursos computacionales para ejecutarse, cada transacción requiere una tarifa. Gas se refiere a la tarifa requerida para realizar una transacción en Ethereum con éxito”. 

En otras palabras, cuanto más complejo sea su código, más costará.
Detallar cómo se calculan las tarifas de gas es complejo y podría ser el tema de otra publicación por sí solo. La fórmula más importante para entender es:

Tarifas de gas=Unidades de gas*Precio del gas

Unidades de gas son el costo total de las operaciones computacionales medidas en la unidad denominada gas.
Precio del gas es el precio del gas en gwei (10-9 éter). El precio del gas fluctúa según la utilización de la red Ethereum.

No puede afectar el precio del combustible, por lo que debe concentrarse en las unidades de combustible de su código para reducirlas tanto como sea posible.

Cómo optimizar las tarifas de gas

La optimización de gas simplemente está favoreciendo lo que es "barato" para calcular como variables locales o constantes y evitando tanto como sea posible lo que es "caro" para calcular como variables de estado almacenadas en almacenamiento de contrato o bucles.

Aquí hay algunos consejos para comenzar a optimizar su gas.

Consejo #1: No inicialice variables

Si la variable no se inicializa, se supone que tiene un valor predeterminado (0, falso, 0x0, …). Inicializando variables es entonces sólo un desperdicio de gasolina.

Consejo n.º 2: use variables locales en lugar de variables de estado dentro de los bucles

Leyendo y escribiendo local variables es barato, mientras que leer y escribir estado Las variables que se almacenan en el almacenamiento de contratos son costoso.

Consejo n.º 3: use externo e interno en lugar de público

external significa que puede llamar a su función desde fuera de su contrato.
internal significa que puede llamar a su función desde dentro de su contrato.
public es una mezcla de external y internal, puedes hacer ambas cosas.
As external y internal concede menos acceso que public, son más barato.
entonces siempre preferir que se utilizará external or internal primero y cambiarlo en público si es necesario.

Consejo #4: almacene los datos en la memoria, no en el almacenamiento

Elegir la ubicación de datos perfecta es esencial. Debes conocer estos: 

  • STORAGE – la variable se almacena en la cadena de bloques. Es una variable de estado persistente. Cuesta Gasolina definirlo y cambiarlo.
  • memoria – variable temporal declarada dentro de una función. No hay gasolina para declarar. Pero cuesta gasolina cambiar las variables de memoria (menos que el almacenamiento)
  • datos de llamada – como memoria pero no modificable y solo disponible como argumento de funciones externas

Si no se especifica, la ubicación de los datos se almacena de forma predeterminada.

Consejo #5: Ordena tus variables

El orden de sus variables es importante en los contratos inteligentes. Solidity almacena datos en un ranura única de 256 bits. Si su variable es más pequeña que una ranura, se empaqueta con otra variable para colocarla en una sola ranura. Pero para hacerlo, necesitamos hacer que estas variables estén una al lado de la otra.

Consejo #6: Elimine sus variables para obtener un reembolso de gasolina

Esta es también una gran característica de Solidity. Como no hay recolección de basura, usted mismo debe desechar los datos no utilizados. El objetivo aquí es ahorrar espacio en la cadena de bloques. La buena noticia es que obtendrá 75% de sus costos de almacenamiento de vuelta

Solo usa la palabra clave delete.

Consejo #7: Use anidado if o múltiple exigir en lugar de && operador

Primero por la visibilidad, entonces porque es más barato!

Consejo #8: Use el Optimizador de Solidity

Asegúrese Optimizador de Solidity is facilita. Reduce los costos de gasolina. El número predeterminado es 200. 

Si desea optimizar el gas para la implementación del contrato (cuesta menos implementar un contrato), configure el optimizador de solidez en un número bajo. 
Si desea optimizar los costos de gas en tiempo de ejecución (cuando las funciones se solicitan en un contrato), configure el optimizador en un número alto.

Escrito por
AvigdorSason Cohen

Avigdor es investigador de seguridad web3 en Sayfer. Le apasionan las nuevas tecnologías de cadena de bloques y cómo podemos asegurarnos de desarrollarlas de manera segura.

 

Ir al contenido