Guía práctica de optimización de Gas para contratos inteligentes de Ethereum
El costo de Gas en la red principal de Ethereum siempre ha sido un problema difícil de resolver, especialmente durante la congestión de la red. Durante los picos, los usuarios a menudo necesitan pagar altas tarifas de transacción. Por lo tanto, es crucial optimizar los costos de Gas durante la fase de desarrollo de contratos inteligentes. Optimizar el consumo de Gas no solo puede reducir efectivamente los costos de transacción, sino que también puede mejorar la eficiencia de las transacciones, brindando a los usuarios una experiencia de uso de blockchain más económica y eficiente.
Este artículo resumirá el mecanismo de tarifas de Gas de la Máquina Virtual de Ethereum (EVM), los conceptos clave de la optimización de tarifas de Gas, así como las mejores prácticas para la optimización de tarifas de Gas en el desarrollo de contratos inteligentes. Esperamos que este contenido pueda inspirar y ayudar a los desarrolladores, al mismo tiempo que ayude a los usuarios comunes a entender mejor cómo funcionan las tarifas de Gas de la EVM, enfrentando juntos los desafíos en el ecosistema blockchain.
Introducción al mecanismo de tarifas de Gas de EVM
En redes compatibles con EVM, "Gas" es la unidad utilizada para medir la capacidad de cálculo necesaria para ejecutar operaciones específicas.
En la estructura del EVM, el consumo de Gas se divide en tres partes: ejecución de operaciones, llamadas de mensajes externos y lectura/escritura de memoria y almacenamiento.
Debido a que la ejecución de cada transacción requiere recursos de cálculo, se cobrará una cierta tarifa para evitar ciclos infinitos y ataques de denegación de servicio ( DoS ). La tarifa necesaria para completar una transacción se denomina "tarifa de Gas".
Desde que el hard fork de Londres EIP-1559( ) entró en vigor, la tarifa de Gas se calcula mediante la siguiente fórmula:
Tarifa de gas = unidades de gas utilizadas * (tarifa base + tarifa de prioridad)
La tarifa base será destruida, mientras que la tarifa prioritaria se utilizará como incentivo para alentar a los validadores a agregar transacciones a la cadena de bloques. Configurar una tarifa prioritaria más alta al enviar una transacción puede aumentar la posibilidad de que la transacción se incluya en el siguiente bloque. Esto es similar a una "propina" que el usuario paga a los validadores.
Comprender la optimización de Gas en EVM
Al compilar contratos inteligentes con Solidity, el contrato se convierte en una serie de "códigos de operación", es decir, opcodes.
Cualquier fragmento de código de operación (, como crear contratos, realizar llamadas de mensajes, acceder al almacenamiento de cuentas y ejecutar operaciones en la máquina virtual ), tiene un costo de consumo de Gas reconocido, y estos costos están registrados en el libro amarillo de Ethereum.
Después de múltiples modificaciones de EIP, algunos de los costos de Gas de los códigos de operación han sido ajustados, lo que puede diferir del libro amarillo.
concepto básico de optimización de Gas
La idea central de la optimización de Gas es seleccionar en la cadena de bloques EVM las operaciones con alta eficiencia de costos y evitar las operaciones con altos costos de Gas.
En EVM, las siguientes operaciones tienen un costo relativamente bajo:
Leer y escribir variables de memoria
Leer constantes y variables inmutables
Leer y escribir variables locales
Leer la variable calldata, como el array y la estructura de calldata.
Llamada a funciones internas
Las operaciones de alto costo incluyen:
Leer y escribir variables de estado almacenadas en el almacenamiento del contrato
Llamada a funciones externas
Operación en bucle
Mejores prácticas para la optimización de tarifas de gas de EVM
Basado en los conceptos básicos mencionados anteriormente, hemos compilado una lista de mejores prácticas para la optimización de tarifas de Gas para la comunidad de desarrolladores. Al seguir estas prácticas, los desarrolladores pueden reducir el consumo de tarifas de Gas de los contratos inteligentes, disminuir los costos de transacción y crear aplicaciones más eficientes y amigables para el usuario.
1. Trate de reducir el uso de almacenamiento
En Solidity, el almacenamiento ( es un recurso limitado, cuyo consumo de Gas es mucho mayor que el de la memoria ). Cada vez que un contrato inteligente lee o escribe datos desde el almacenamiento, se incurre en altos costos de Gas.
Según la definición del libro amarillo de Ethereum, el costo de las operaciones de almacenamiento es más de 100 veces más alto que el de las operaciones de memoria. Por ejemplo, las instrucciones OPcodesmload y mstore solo consumen 3 unidades de Gas, mientras que las operaciones de almacenamiento como sload y sstore, incluso en las mejores condiciones, requieren al menos 100 unidades.
Los métodos para limitar el uso de almacenamiento incluyen:
Almacenar datos no permanentes en la memoria
Reducir el número de modificaciones de almacenamiento: Almacenar los resultados intermedios en la memoria y, una vez que se completen todos los cálculos, asignar los resultados a las variables de almacenamiento.
( 2. Empaquetado de variables
La cantidad de slots de almacenamiento ) utilizados en los contratos inteligentes y la forma en que los desarrolladores representan los datos afectarán en gran medida el consumo de Gas.
El compilador de Solidity empaquetará las variables de almacenamiento continuas durante el proceso de compilación, utilizando un slot de almacenamiento de 32 bytes como la unidad básica de almacenamiento de variables. El empaquetado de variables se refiere a organizar las variables de manera que múltiples variables puedan caber en un solo slot de almacenamiento.
A través de este ajuste de detalle, los desarrolladores pueden ahorrar 20,000 unidades de Gas ### almacenar una ranura de almacenamiento no utilizada requiere consumir 20,000 Gas (, pero ahora solo se necesitan dos ranuras de almacenamiento.
Dado que cada ranura de almacenamiento consume Gas, empaquetar variables optimiza el uso de Gas al reducir la cantidad de ranuras de almacenamiento necesarias.
![Gas optimización de los diez mejores prácticas de contratos inteligentes de Ethereum])https://img-cdn.gateio.im/webp-social/moments-995905cb414526d4d991899d0c2e6443.webp(
) 3. Optimizar tipos de datos
Una variable puede representarse con varios tipos de datos, pero el costo de operación correspondiente a cada tipo de dato es diferente. Elegir el tipo de dato adecuado ayuda a optimizar el uso de Gas.
Por ejemplo, en Solidity, los enteros se pueden dividir en diferentes tamaños: uint8, uint16, uint32, etc. Dado que la EVM ejecuta operaciones en unidades de 256 bits, usar uint8 significa que la EVM debe convertirlo primero a uint256, y esta conversión consumirá Gas adicional.
Vistos de forma aislada, usar uint256 es más barato que uint8. Sin embargo, si se utiliza la optimización de empaquetado de variables, es diferente. Si los desarrolladores pueden empaquetar cuatro variables uint8 en un solo espacio de almacenamiento, entonces el costo total de iterarlas será menor que el de cuatro variables uint256. De esta manera, el contrato inteligente puede leer y escribir en un solo espacio de almacenamiento, y en una sola operación, colocar las cuatro variables uint8 en memoria/almacenamiento.
4. Usar variables de tamaño fijo en lugar de variables dinámicas
Si los datos se pueden controlar dentro de 32 bytes, se recomienda usar el tipo de datos bytes32 en lugar de bytes o strings. En general, las variables de tamaño fijo consumen menos Gas que las variables de tamaño variable. Si se puede limitar la longitud en bytes, intente elegir la longitud mínima desde bytes1 hasta bytes32.
( 5. Mapeos y arreglos
Las listas de datos de Solidity se pueden representar de dos tipos de datos: Arrays) y Mappings###, pero su sintaxis y estructura son completamente diferentes.
En la mayoría de los casos, los mapeos son más eficientes y de menor costo, pero los arreglos tienen iterabilidad y admiten la agrupación de tipos de datos. Por lo tanto, se recomienda priorizar el uso de mapeos al gestionar listas de datos, a menos que se necesite iterar o se pueda optimizar el consumo de Gas mediante la agrupación de tipos de datos.
![Gas optimización de los diez mejores prácticas de contratos inteligentes de Ethereum]###https://img-cdn.gateio.im/webp-social/moments-5f3d7e103e47c886f50599cffe35c707.webp(
) 6. Usar calldata en lugar de memory
Las variables declaradas en los parámetros de la función pueden almacenarse en calldata o memory. La principal diferencia entre ambas es que memory puede ser modificada por la función, mientras que calldata es inmutable.
Recuerda este principio: si los parámetros de la función son de solo lectura, se debe usar preferentemente calldata en lugar de memory. Esto puede evitar operaciones de copia innecesarias de calldata de la función a memory.
( 7. Utiliza las palabras clave Constant/Immutable siempre que sea posible.
Las variables Constant/Immutable no se almacenan en el almacenamiento del contrato. Estas variables se calculan en el momento de la compilación y se almacenan en el bytecode del contrato. Por lo tanto, en comparación con el almacenamiento, su costo de acceso es mucho más bajo, se recomienda utilizar las palabras clave Constant o Immutable siempre que sea posible.
![Optimización de Gas para contratos inteligentes de Ethereum: Las 10 mejores prácticas])https://img-cdn.gateio.im/webp-social/moments-9c566626ab499ef65d6f5089a2876ad3.webp(
) 8. Utilizar Unchecked asegurando que no ocurran desbordamientos/subdesbordamientos.
Cuando los desarrolladores pueden asegurar que las operaciones aritméticas no causarán un desbordamiento o subdesbordamiento, pueden utilizar la palabra clave unchecked introducida en Solidity v0.8.0 para evitar comprobaciones innecesarias de desbordamiento o subdesbordamiento, ahorrando así costos de Gas.
Además, los compiladores de la versión 0.8.0 y superiores ya no necesitan usar la biblioteca SafeMath, ya que el compilador en sí mismo ha incorporado funciones de protección contra desbordamientos y subdesbordamientos.
9. Optimizador de modificaciones
El código del modificador se inserta en la función modificada, y cada vez que se utiliza el modificador, su código se copia. Esto aumenta el tamaño del bytecode y eleva el consumo de Gas.
Al reestructurar la lógica en una función interna _checkOwner###(, se permite reutilizar esta función interna en modificadores, lo que puede reducir el tamaño del bytecode y disminuir los costos de Gas.
![Gas optimización de los diez mejores prácticas de contratos inteligentes de Ethereum])https://img-cdn.gateio.im/webp-social/moments-c0701f9e09280a1667495d54e262dd2f.webp###
10. Optimización de cortocircuito
Para los operadores || y &&, la evaluación lógica se realiza mediante evaluación de cortocircuito, es decir, si la primera condición ya puede determinar el resultado de la expresión lógica, no se evaluará la segunda condición.
Para optimizar el consumo de Gas, se deben colocar las condiciones de bajo costo computacional al principio, de esta manera se puede evitar potencialmente el cálculo costoso.
Sugerencias generales adicionales
( 1. Eliminar código innecesario
Si hay funciones o variables no utilizadas en el contrato, se recomienda eliminarlas. Este es el método más directo para reducir el costo de despliegue del contrato y mantener el tamaño del contrato pequeño.
A continuación se presentan algunos consejos prácticos:
Utilizar el algoritmo más eficiente para realizar cálculos. Si los resultados de ciertos cálculos se utilizan directamente en el contrato, entonces se deben eliminar estos procesos de cálculo redundantes. En esencia, cualquier cálculo no utilizado debe ser eliminado.
En Ethereum, los desarrolladores pueden obtener recompensas de Gas al liberar espacio de almacenamiento. Si ya no se necesita una variable, se debe usar la palabra clave delete para eliminarla o establecerla en su valor predeterminado.
Optimización de bucles: evitar operaciones de bucle de alto costo, combinar bucles siempre que sea posible y mover cálculos repetidos fuera del cuerpo del bucle.
![Gas optimization de los diez mejores prácticas de contratos inteligentes de Ethereum])https://img-cdn.gateio.im/webp-social/moments-839b91e2f02389949aa698d460a497d8.webp###
( 2. Usar contratos inteligentes precompilados
Los contratos precompilados ofrecen funciones de biblioteca complejas, como operaciones de cifrado y hash. Dado que el código no se ejecuta en la EVM, sino que se ejecuta localmente en los nodos del cliente, se necesita menos Gas. Utilizar contratos precompilados puede ahorrar Gas al reducir la carga de trabajo computacional necesaria para ejecutar contratos inteligentes.
Ejemplos de contratos precompilados incluyen el algoritmo de firma digital de curva elíptica )ECDSA### y el algoritmo hash SHA2-256. Al utilizar estos contratos precompilados en contratos inteligentes, los desarrolladores pueden reducir los costos de Gas y mejorar la eficiencia de ejecución de las aplicaciones.
( 3. Uso de código de ensamblaje en línea
La ensambladura en línea ) permite a los desarrolladores escribir código de bajo nivel pero eficiente que puede ser ejecutado directamente por la EVM, sin necesidad de utilizar costosos códigos de operación de Solidity. La ensambladura en línea también permite un control más preciso sobre el uso de la memoria y el almacenamiento, lo que reduce aún más las tarifas de Gas. Además, la ensambladura en línea puede realizar algunas operaciones complejas que son difíciles de lograr solo con Solidity, proporcionando más flexibilidad para optimizar el consumo de Gas.
Sin embargo, el uso de ensamblaje en línea también puede conllevar riesgos y ser propenso a errores. Por lo tanto, debe usarse con precaución y limitarse a desarrolladores con experiencia.
![Gas optimización de los diez mejores prácticas de contratos inteligentes de Ethereum]###
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
14 me gusta
Recompensa
14
8
Compartir
Comentar
0/400
WalletInspector
· hace18h
las tarifas de gas son demasiado caras, no son mejores que L2
Ver originalesResponder0
CryptoCross-TalkClub
· 07-11 01:06
Riendo hasta morir, las tarifas de Gas están subiendo, la billetera de los tontos está ardiendo
Ver originalesResponder0
liquiditea_sipper
· 07-11 01:03
el gas realmente está carísimo
Ver originalesResponder0
AirdropChaser
· 07-11 01:03
¡Ahora el gas puede ser un poco más humano! Gastar dinero como si fuera agua.
Ver originalesResponder0
MEVSandwichVictim
· 07-11 01:02
Sigue optimizando, todos los días me exprimen el Gas.
Ver originalesResponder0
LiquidityNinja
· 07-11 01:01
Soy un ninja en el mundo de la encriptación. Las tarifas de Gas demasiado altas me rompen el corazón. Hacer transacciones puntuales es el camino a seguir.
Por favor, genera un comentario en chino sobre este artículo.
Ver originalesResponder0
DaoDeveloper
· 07-11 00:56
acabo de desplegar un contrato inteligente optimizado para gas... no creerían los ahorros fr
Guía de práctica de optimización de Gas para contratos inteligentes de Ethereum
Guía práctica de optimización de Gas para contratos inteligentes de Ethereum
El costo de Gas en la red principal de Ethereum siempre ha sido un problema difícil de resolver, especialmente durante la congestión de la red. Durante los picos, los usuarios a menudo necesitan pagar altas tarifas de transacción. Por lo tanto, es crucial optimizar los costos de Gas durante la fase de desarrollo de contratos inteligentes. Optimizar el consumo de Gas no solo puede reducir efectivamente los costos de transacción, sino que también puede mejorar la eficiencia de las transacciones, brindando a los usuarios una experiencia de uso de blockchain más económica y eficiente.
Este artículo resumirá el mecanismo de tarifas de Gas de la Máquina Virtual de Ethereum (EVM), los conceptos clave de la optimización de tarifas de Gas, así como las mejores prácticas para la optimización de tarifas de Gas en el desarrollo de contratos inteligentes. Esperamos que este contenido pueda inspirar y ayudar a los desarrolladores, al mismo tiempo que ayude a los usuarios comunes a entender mejor cómo funcionan las tarifas de Gas de la EVM, enfrentando juntos los desafíos en el ecosistema blockchain.
Introducción al mecanismo de tarifas de Gas de EVM
En redes compatibles con EVM, "Gas" es la unidad utilizada para medir la capacidad de cálculo necesaria para ejecutar operaciones específicas.
En la estructura del EVM, el consumo de Gas se divide en tres partes: ejecución de operaciones, llamadas de mensajes externos y lectura/escritura de memoria y almacenamiento.
Debido a que la ejecución de cada transacción requiere recursos de cálculo, se cobrará una cierta tarifa para evitar ciclos infinitos y ataques de denegación de servicio ( DoS ). La tarifa necesaria para completar una transacción se denomina "tarifa de Gas".
Desde que el hard fork de Londres EIP-1559( ) entró en vigor, la tarifa de Gas se calcula mediante la siguiente fórmula:
Tarifa de gas = unidades de gas utilizadas * (tarifa base + tarifa de prioridad)
La tarifa base será destruida, mientras que la tarifa prioritaria se utilizará como incentivo para alentar a los validadores a agregar transacciones a la cadena de bloques. Configurar una tarifa prioritaria más alta al enviar una transacción puede aumentar la posibilidad de que la transacción se incluya en el siguiente bloque. Esto es similar a una "propina" que el usuario paga a los validadores.
Comprender la optimización de Gas en EVM
Al compilar contratos inteligentes con Solidity, el contrato se convierte en una serie de "códigos de operación", es decir, opcodes.
Cualquier fragmento de código de operación (, como crear contratos, realizar llamadas de mensajes, acceder al almacenamiento de cuentas y ejecutar operaciones en la máquina virtual ), tiene un costo de consumo de Gas reconocido, y estos costos están registrados en el libro amarillo de Ethereum.
Después de múltiples modificaciones de EIP, algunos de los costos de Gas de los códigos de operación han sido ajustados, lo que puede diferir del libro amarillo.
concepto básico de optimización de Gas
La idea central de la optimización de Gas es seleccionar en la cadena de bloques EVM las operaciones con alta eficiencia de costos y evitar las operaciones con altos costos de Gas.
En EVM, las siguientes operaciones tienen un costo relativamente bajo:
Las operaciones de alto costo incluyen:
Mejores prácticas para la optimización de tarifas de gas de EVM
Basado en los conceptos básicos mencionados anteriormente, hemos compilado una lista de mejores prácticas para la optimización de tarifas de Gas para la comunidad de desarrolladores. Al seguir estas prácticas, los desarrolladores pueden reducir el consumo de tarifas de Gas de los contratos inteligentes, disminuir los costos de transacción y crear aplicaciones más eficientes y amigables para el usuario.
1. Trate de reducir el uso de almacenamiento
En Solidity, el almacenamiento ( es un recurso limitado, cuyo consumo de Gas es mucho mayor que el de la memoria ). Cada vez que un contrato inteligente lee o escribe datos desde el almacenamiento, se incurre en altos costos de Gas.
Según la definición del libro amarillo de Ethereum, el costo de las operaciones de almacenamiento es más de 100 veces más alto que el de las operaciones de memoria. Por ejemplo, las instrucciones OPcodesmload y mstore solo consumen 3 unidades de Gas, mientras que las operaciones de almacenamiento como sload y sstore, incluso en las mejores condiciones, requieren al menos 100 unidades.
Los métodos para limitar el uso de almacenamiento incluyen:
( 2. Empaquetado de variables
La cantidad de slots de almacenamiento ) utilizados en los contratos inteligentes y la forma en que los desarrolladores representan los datos afectarán en gran medida el consumo de Gas.
El compilador de Solidity empaquetará las variables de almacenamiento continuas durante el proceso de compilación, utilizando un slot de almacenamiento de 32 bytes como la unidad básica de almacenamiento de variables. El empaquetado de variables se refiere a organizar las variables de manera que múltiples variables puedan caber en un solo slot de almacenamiento.
A través de este ajuste de detalle, los desarrolladores pueden ahorrar 20,000 unidades de Gas ### almacenar una ranura de almacenamiento no utilizada requiere consumir 20,000 Gas (, pero ahora solo se necesitan dos ranuras de almacenamiento.
Dado que cada ranura de almacenamiento consume Gas, empaquetar variables optimiza el uso de Gas al reducir la cantidad de ranuras de almacenamiento necesarias.
![Gas optimización de los diez mejores prácticas de contratos inteligentes de Ethereum])https://img-cdn.gateio.im/webp-social/moments-995905cb414526d4d991899d0c2e6443.webp(
) 3. Optimizar tipos de datos
Una variable puede representarse con varios tipos de datos, pero el costo de operación correspondiente a cada tipo de dato es diferente. Elegir el tipo de dato adecuado ayuda a optimizar el uso de Gas.
Por ejemplo, en Solidity, los enteros se pueden dividir en diferentes tamaños: uint8, uint16, uint32, etc. Dado que la EVM ejecuta operaciones en unidades de 256 bits, usar uint8 significa que la EVM debe convertirlo primero a uint256, y esta conversión consumirá Gas adicional.
Vistos de forma aislada, usar uint256 es más barato que uint8. Sin embargo, si se utiliza la optimización de empaquetado de variables, es diferente. Si los desarrolladores pueden empaquetar cuatro variables uint8 en un solo espacio de almacenamiento, entonces el costo total de iterarlas será menor que el de cuatro variables uint256. De esta manera, el contrato inteligente puede leer y escribir en un solo espacio de almacenamiento, y en una sola operación, colocar las cuatro variables uint8 en memoria/almacenamiento.
4. Usar variables de tamaño fijo en lugar de variables dinámicas
Si los datos se pueden controlar dentro de 32 bytes, se recomienda usar el tipo de datos bytes32 en lugar de bytes o strings. En general, las variables de tamaño fijo consumen menos Gas que las variables de tamaño variable. Si se puede limitar la longitud en bytes, intente elegir la longitud mínima desde bytes1 hasta bytes32.
( 5. Mapeos y arreglos
Las listas de datos de Solidity se pueden representar de dos tipos de datos: Arrays) y Mappings###, pero su sintaxis y estructura son completamente diferentes.
En la mayoría de los casos, los mapeos son más eficientes y de menor costo, pero los arreglos tienen iterabilidad y admiten la agrupación de tipos de datos. Por lo tanto, se recomienda priorizar el uso de mapeos al gestionar listas de datos, a menos que se necesite iterar o se pueda optimizar el consumo de Gas mediante la agrupación de tipos de datos.
![Gas optimización de los diez mejores prácticas de contratos inteligentes de Ethereum]###https://img-cdn.gateio.im/webp-social/moments-5f3d7e103e47c886f50599cffe35c707.webp(
) 6. Usar calldata en lugar de memory
Las variables declaradas en los parámetros de la función pueden almacenarse en calldata o memory. La principal diferencia entre ambas es que memory puede ser modificada por la función, mientras que calldata es inmutable.
Recuerda este principio: si los parámetros de la función son de solo lectura, se debe usar preferentemente calldata en lugar de memory. Esto puede evitar operaciones de copia innecesarias de calldata de la función a memory.
( 7. Utiliza las palabras clave Constant/Immutable siempre que sea posible.
Las variables Constant/Immutable no se almacenan en el almacenamiento del contrato. Estas variables se calculan en el momento de la compilación y se almacenan en el bytecode del contrato. Por lo tanto, en comparación con el almacenamiento, su costo de acceso es mucho más bajo, se recomienda utilizar las palabras clave Constant o Immutable siempre que sea posible.
![Optimización de Gas para contratos inteligentes de Ethereum: Las 10 mejores prácticas])https://img-cdn.gateio.im/webp-social/moments-9c566626ab499ef65d6f5089a2876ad3.webp(
) 8. Utilizar Unchecked asegurando que no ocurran desbordamientos/subdesbordamientos.
Cuando los desarrolladores pueden asegurar que las operaciones aritméticas no causarán un desbordamiento o subdesbordamiento, pueden utilizar la palabra clave unchecked introducida en Solidity v0.8.0 para evitar comprobaciones innecesarias de desbordamiento o subdesbordamiento, ahorrando así costos de Gas.
Además, los compiladores de la versión 0.8.0 y superiores ya no necesitan usar la biblioteca SafeMath, ya que el compilador en sí mismo ha incorporado funciones de protección contra desbordamientos y subdesbordamientos.
9. Optimizador de modificaciones
El código del modificador se inserta en la función modificada, y cada vez que se utiliza el modificador, su código se copia. Esto aumenta el tamaño del bytecode y eleva el consumo de Gas.
Al reestructurar la lógica en una función interna _checkOwner###(, se permite reutilizar esta función interna en modificadores, lo que puede reducir el tamaño del bytecode y disminuir los costos de Gas.
![Gas optimización de los diez mejores prácticas de contratos inteligentes de Ethereum])https://img-cdn.gateio.im/webp-social/moments-c0701f9e09280a1667495d54e262dd2f.webp###
10. Optimización de cortocircuito
Para los operadores || y &&, la evaluación lógica se realiza mediante evaluación de cortocircuito, es decir, si la primera condición ya puede determinar el resultado de la expresión lógica, no se evaluará la segunda condición.
Para optimizar el consumo de Gas, se deben colocar las condiciones de bajo costo computacional al principio, de esta manera se puede evitar potencialmente el cálculo costoso.
Sugerencias generales adicionales
( 1. Eliminar código innecesario
Si hay funciones o variables no utilizadas en el contrato, se recomienda eliminarlas. Este es el método más directo para reducir el costo de despliegue del contrato y mantener el tamaño del contrato pequeño.
A continuación se presentan algunos consejos prácticos:
Utilizar el algoritmo más eficiente para realizar cálculos. Si los resultados de ciertos cálculos se utilizan directamente en el contrato, entonces se deben eliminar estos procesos de cálculo redundantes. En esencia, cualquier cálculo no utilizado debe ser eliminado.
En Ethereum, los desarrolladores pueden obtener recompensas de Gas al liberar espacio de almacenamiento. Si ya no se necesita una variable, se debe usar la palabra clave delete para eliminarla o establecerla en su valor predeterminado.
Optimización de bucles: evitar operaciones de bucle de alto costo, combinar bucles siempre que sea posible y mover cálculos repetidos fuera del cuerpo del bucle.
![Gas optimization de los diez mejores prácticas de contratos inteligentes de Ethereum])https://img-cdn.gateio.im/webp-social/moments-839b91e2f02389949aa698d460a497d8.webp###
( 2. Usar contratos inteligentes precompilados
Los contratos precompilados ofrecen funciones de biblioteca complejas, como operaciones de cifrado y hash. Dado que el código no se ejecuta en la EVM, sino que se ejecuta localmente en los nodos del cliente, se necesita menos Gas. Utilizar contratos precompilados puede ahorrar Gas al reducir la carga de trabajo computacional necesaria para ejecutar contratos inteligentes.
Ejemplos de contratos precompilados incluyen el algoritmo de firma digital de curva elíptica )ECDSA### y el algoritmo hash SHA2-256. Al utilizar estos contratos precompilados en contratos inteligentes, los desarrolladores pueden reducir los costos de Gas y mejorar la eficiencia de ejecución de las aplicaciones.
( 3. Uso de código de ensamblaje en línea
La ensambladura en línea ) permite a los desarrolladores escribir código de bajo nivel pero eficiente que puede ser ejecutado directamente por la EVM, sin necesidad de utilizar costosos códigos de operación de Solidity. La ensambladura en línea también permite un control más preciso sobre el uso de la memoria y el almacenamiento, lo que reduce aún más las tarifas de Gas. Además, la ensambladura en línea puede realizar algunas operaciones complejas que son difíciles de lograr solo con Solidity, proporcionando más flexibilidad para optimizar el consumo de Gas.
Sin embargo, el uso de ensamblaje en línea también puede conllevar riesgos y ser propenso a errores. Por lo tanto, debe usarse con precaución y limitarse a desarrolladores con experiencia.
![Gas optimización de los diez mejores prácticas de contratos inteligentes de Ethereum]###
Por favor, genera un comentario en chino sobre este artículo.