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.
¿Quieres escuchar más?
Una reunión de consultoría gratuita incluida.