¿Qué es el límite de gas y por qué fallan las transacciones?
Explica qué es el límite de gas en Ethereum, cómo se calcula la comisión y por qué fallan las transacciones, con un ejemplo práctico.
Un límite de gas es la cantidad máxima de cómputo, medida en unidades de gas, que permites que una transacción de Ethereum utilice. Si la transacción necesita más que eso, se detiene, sus cambios se deshacen y aun así pagas por el gas que utilizó. Las transacciones también fallan cuando un contrato inteligente las rechaza, por ejemplo porque un precio se movió demasiado.
Gas, precio del gas y límite de gas
Cada operación en Ethereum tiene un costo fijo en unidades de gas. Una transferencia simple de ETH cuesta 21.000 gas; interactuar con un contrato inteligente cuesta más, según lo que haga el código. La comisión que pagas es:
Comisión = gas utilizado × (tarifa base + tarifa de prioridad)
La tarifa base la establece la red y se quema. La tarifa de prioridad es una propina para el validador. Ambas se expresan en gwei, donde 1 gwei es 0,000000001 ETH. El límite de gas es el tope del gas utilizado: tu billetera lo estima y rara vez necesitas cambiarlo.
Un ejemplo práctico
Intercambias tokens con un límite de gas de 100.000. El intercambio utiliza en realidad 65.000 gas, y la tarifa base más la propina es de 20 gwei.
- Comisión = 65.000 × 20 gwei = 1.300.000 gwei = 0,0013 ETH
- Los 35.000 gas no utilizados no cuestan nada.
Ahora el mismo intercambio con un límite de gas de 50.000:
- El intercambio necesita 65.000 gas, así que se queda sin gas después de 50.000.
- La transacción falla y el intercambio no se realiza.
- Aun así pagas 50.000 × 20 gwei = 1.000.000 gwei = 0,001 ETH.
Las cifras son ilustrativas; las comisiones reales cambian según la demanda de la red.
Figura: El ejemplo práctico a 20 gwei. Valores ilustrativos; las comisiones reales cambian según la demanda.
Comisión máxima, tarifa de prioridad y lo que realmente pagas
Las billeteras modernas de Ethereum piden dos precios en lugar de uno. La comisión máxima es lo más que estás dispuesto a pagar por unidad de gas en total; la tarifa de prioridad es la propina que ofreces al validador. Cuando la transacción se incluye, pagas la tarifa base vigente más tu propina, y cualquier diferencia entre eso y tu comisión máxima nunca se cobra.
Supón que fijas una comisión máxima de 30 gwei y una tarifa de prioridad de 2 gwei, y que la tarifa base cuando se incluye tu transferencia es de 18 gwei. Pagas 20 gwei por unidad: 21.000 × 20 gwei = 0,00042 ETH. Tu billetera reservó brevemente hasta 0,00063 ETH, pero los 10 gwei por unidad que no necesitabas nunca se gastaron. (Valores de ejemplo.) Una comisión máxima generosa, por tanto, te protege frente a una tarifa base en aumento sin que pagues de más.
Por qué fallan las transacciones
Sin gas. El límite se fijó demasiado bajo para lo que necesitaba la transacción, a menudo porque se editó manualmente o porque el estado del contrato cambió después de la estimación.
El contrato la revirtió. Los contratos inteligentes comprueban las condiciones antes de actuar. Un intercambio se revierte si el precio se mueve más allá de tu configuración de deslizamiento, una transferencia se revierte si el saldo es insuficiente, y una acuñación se revierte si la venta está agotada. El gas utilizado hasta ese punto se cobra igualmente.
Comisión demasiado baja para ser incluida. Si la comisión máxima que permitiste es inferior a la tarifa base actual, la transacción espera en la cola en lugar de fallar, y puede que haya que reemplazarla con una comisión más alta.
Acelerar o cancelar una transacción atascada
Una transacción pendiente puede reemplazarse mientras espera. Las billeteras ofrecen «acelerar», que reenvía la misma transacción con una comisión más alta, y «cancelar», que envía a ti mismo una transacción sin valor usando el mismo número de secuencia, llamado nonce, con una comisión más alta. Gana la versión que un validador incluya primero, y la otra se descarta. El reemplazo solo funciona antes de que la original se incluya en un bloque; una vez confirmada, una transacción no puede cancelarse.
Por qué las estimaciones de gas a veces fallan
Tu billetera estima el gas simulando la transacción con el estado actual de la blockchain. Si ese estado cambia antes de que tu transacción se incluya, por ejemplo porque otras operaciones modificaron el precio de un pool o porque una venta se agotó, el recorrido real por el contrato puede diferir y usar más gas, o revertirse por completo. Los contratos que recorren en bucle listas cuya longitud cambia son especialmente propensos a esto.
El límite de gas de bloque es diferente
Cada bloque también tiene un límite de gas que restringe el gas total de todas las transacciones incluidas en él. Lo establecen los validadores de la red y determina cuánta actividad cabe en cada bloque de 12 segundos. Cuando la demanda supera ese espacio, la tarifa base sube hasta que algunos usuarios deben esperar. El límite de gas de tu transacción solo controla tu propia transacción.
El gas en las redes de capa 2
Los rollups construidos sobre Ethereum usan los mismos conceptos: las transacciones tienen límites de gas, las tarifas normalmente se pagan en ETH, y una transacción que se queda sin gas o revierte sigue costando el gas que utilizó. La diferencia está en la escala. Las tarifas en la mayoría de las redes de capa 2 son una pequeña fracción de las de la cadena principal, así que una transacción fallida allí cuesta poco, aunque los mismos hábitos de revisar los errores antes de reintentar siguen siendo válidos. Consulta qué son los rollups de Ethereum.
Cómo leer una transacción fallida en un explorador de bloques
Busca el hash de la transacción en un explorador de bloques. La línea de estado muestra si la transacción tuvo éxito o falló. Compara el gas usado con el límite de gas: si son iguales, la transacción se quedó sin gas, y subir el límite podría solucionarlo. Si el gas usado es menor que el límite y el estado indica que la ejecución fue revertida, el contrato rechazó la acción, y el motivo, cuando se muestra, explica por qué: saldo insuficiente, deslizamiento (slippage) superado o venta cerrada. En ese caso, subir el límite de gas solo hace que el siguiente fallo sea más caro.
Cómo evitar las transacciones fallidas
- Deja que tu cartera estime el límite de gas, salvo que sepas por qué es incorrecto.
- Lee el error en un explorador de bloques: «out of gas» (sin gas) y «execution reverted» (ejecución revertida) requieren soluciones distintas.
- En los intercambios, establece una tolerancia de deslizamiento acorde con la velocidad a la que se mueve el mercado.
- Antes de reintentar, averigua por qué falló el primer intento, o podrías pagar dos veces por el mismo resultado.
Para saber cómo funcionan las tarifas en las distintas redes, lee sobre las comisiones de las transacciones blockchain. Para los programas que consumen gas, consulta qué es un contrato inteligente, y para la red en sí, qué es Ethereum.
Este artículo es contenido educativo y no constituye asesoramiento financiero, de inversión, legal ni fiscal. Los activos digitales son volátiles y podrías perder el importe que inviertas.