Saltar al contenido

Gas y comisiones de transacción

Guía sensible al fork sobre unidades de gas, costes intrínsecos y de ejecución, límites de comisión de EIP-1559, quema de la comisión base, comisiones de prioridad, reversiones, agotamiento de gas, reembolsos, gas de blobs y componentes de comisiones L2.

Actualizado

Solo con fines educativos; no constituye asesoramiento ni recomendación de inversión. Las inversiones pueden ocasionar pérdidas.

Respuesta directa

El gas es la unidad contable del protocolo para medir el trabajo de ejecución y el acceso al estado; una comisión de gas es el importe monetario calculado a partir de las unidades de gas cobradas y un precio por unidad. En Ethereum con EIP-1559, effectiveGasPrice = min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas), la comisión de ejecución es gasUsed * effectiveGasPrice, la parte correspondiente a la comisión base se quema y la parte de prioridad se paga mediante la ruta del destinatario de comisiones del bloque. El límite de gas y los topes de comisión autorizan máximos; no son importes que se gasten automáticamente.

El gas consumido exacto depende de los calldata, la ruta de opcodes, la expansión de memoria, los accesos fríos y calientes al estado, los cambios de almacenamiento, las llamadas anidadas, los precompilados, el éxito o fallo, los reembolsos y el fork activo. Un precio mayor puede mejorar la competitividad para la inclusión, pero no corrige un REVERT, un límite de gas insuficiente, un contrato malicioso, una cotización obsoleta ni calldata erróneos. Las transacciones con blobs y muchas L2 añaden componentes independientes de datos o del protocolo que no deben agregarse al gas de la EVM por simple supuesto.

Comisión de red
0,000462 native
Equivalente en moneda fiduciaria
$1,39
Comisión base
22 gwei

Los resultados son aproximaciones educativas. Salvo que se indiquen, excluyen reglas del mercado, impuestos, latencia, comportamiento de oráculos y otros parámetros específicos del protocolo.

Cómo funciona

  1. Fije la cadena, el fork, el bloque o etiqueta de estado, el tipo de transacción, remitente, nonce, destino, valor, calldata, lista de acceso, campos de blobs, token de gas y moneda de pago. Registre si la cotización se refiere a una transacción L1, ejecución L2, publicación de datos, retirada o ruta compuesta.
  2. Reconstruya el gas intrínseco antes de ejecutar: envolvente de la transacción, coste de los bytes de calldata, creación, lista de acceso y sobrecarga propia del tipo. Si el límite de gas no cubre el gas intrínseco o el remitente no satisface las comprobaciones de validez sobre el coste máximo, la transacción se rechaza antes de una ejecución incluida; no se incluye para después revertirse.
  3. Trace la ejecución conforme al fork objetivo. Mida costes dinámicos de opcodes, expansión de memoria, cuentas o slots de almacenamiento fríos y calientes, SSTORE, reenvío de gas en llamadas, transferencia de valor, costes de precompilados, logs y reembolsos. Una misma función ABI puede recorrer ramas distintas y consumir diferente gas según el estado.
  4. Separe los resultados. Una ejecución correcta confirma sus efectos. REVERT revierte el ámbito fallido y puede devolver el gas no utilizado por ese frame; una interrupción excepcional por agotamiento de gas normalmente consume el gas puesto a disposición del frame. Un fallo de nivel superior incluido consume el nonce y el gas cobrado aunque se reviertan el estado del contrato, la transferencia de valor y los logs.
  5. Valore el gas de ejecución. Para una transacción de tipo 2, calcule el precio efectivo con la comisión base, el tope de prioridad y el tope total; después divida el gas cobrado entre comisión base quemada y comisión de prioridad. Distinga el gas no utilizado y el margen no consumido del tope de comisión de los reembolsos protocolarios de gas generados por una limpieza de estado admisible y limitados por el tope vigente.
  6. Valore por separado los demás mercados de comisiones. Una transacción con blobs paga gas de ejecución más blobGasUsed * blobGasPrice, sujeto a maxFeePerBlobGas; la comisión base de blobs sigue su propio mecanismo de ajuste. La comisión de usuario de una L2 puede incluir ejecución L2, datos L1 comprimidos o coste de blobs, cargos del operador o protocolo y márgenes, con fórmulas y escalares propios de cada despliegue y actualización.
  7. Concilie estimación, inclusión y recibo. Antes de firmar, compruebe el saldo frente al valor más las comisiones máximas autorizadas, simule sobre un estado fijado y establezca topes acotados. Tras la inclusión, registre límite de gas, gas consumido según el recibo, precio efectivo, comisión base, comisión de prioridad, efectos de reembolsos, gas de blobs, campos de comisión L2, estado y variación del saldo; trate por separado el error de estimación, la sustitución y la finalidad.

Ejemplos desarrollados

  • Éxito de tipo 2 y topes. El límite de gas es 120,000, el gas consumido es 70,000, la comisión base es 25 gwei, la comisión máxima de prioridad es 3 gwei y la comisión máxima es 40 gwei. El precio efectivo es min(40, 25 + 3) = 28 gwei; la comisión real es 70,000 * 28 gwei = 0.001960 ETH, dividida en 0.001750 ETH quemados y 0.000210 ETH de comisión de prioridad. La autorización máxima para la comisión de ejecución es 120,000 * 40 gwei = 0.004800 ETH; los 50,000 gas no utilizados y el margen no consumido del tope no son reembolsos protocolarios por limpieza.
  • REVERT frente a agotamiento de gas. Dos llamadas incluidas tienen cada una un límite de gas de 100,000 y un precio efectivo de 30 gwei. La llamada A ejecuta REVERT cuando el gas consumido del recibo llega a 60,000, por lo que su comisión es 60,000 * 30 gwei = 0.001800 ETH. La llamada B agota todo el límite de gas de la transacción, por lo que su comisión es 100,000 * 30 gwei = 0.003000 ETH. Ambos fallos de nivel superior revierten los efectos contractuales y consumen el nonce, pero REVERT puede conservar gas no utilizado mientras que el agotamiento de gas no.
  • Tope de reembolso. En un caso didáctico de EIP-3529 circunscrito a un fork, la ejecución consume 100,000 gas antes del reembolso y genera un contador de reembolso de 30,000 gas. El reembolso máximo aplicado es 100,000 / 5 = 20,000 gas, por lo que el gas cobrado es 100,000 - 20,000 = 80,000 gas. A 20 gwei, la comisión es 0.001600 ETH en lugar de 0.002000 ETH, un ahorro de 0.000400 ETH; las reglas y operaciones admisibles pueden cambiar con el fork.
  • Mercado separado de comisiones de blobs. Una transacción hipotética con blobs consume 100,000 de gas de ejecución a 20 gwei y lleva dos blobs. Con 131,072 blob gas/blob, el gas de blobs consumido es 262,144; a un precio de gas de blobs de 5 gwei, la comisión de blobs es 262,144 * 5 gwei = 0.00131072 ETH. La comisión de ejecución es 0.002000 ETH, por lo que la comisión protocolaria combinada es 0.00331072 ETH. Los 5 gwei elegidos son ilustrativos, y la comisión de blobs no es una propina de prioridad para el validador ni la comisión integral de un usuario L2.

Riesgos

  • Utilizar una cadena, fork, token de gas, tipo de transacción o moneda de pago incorrectos.
  • Confundir unidades de gas, wei, gwei, ETH y conversiones a moneda fiduciaria.
  • Tratar el límite de gas como la comisión esperada o real.
  • No superar las comprobaciones previas de gas intrínseco o coste máximo.
  • Depender de una estimación obsoleta tras cambiar el estado, la comisión base o los calldata.
  • Fijar un límite de gas inferior a las necesidades de la rama realmente ejecutada.
  • Suponer que un precio de gas mayor puede evitar un REVERT del contrato.
  • Confundir REVERT, agotamiento de gas, opcode no válido y rechazo previo a la validación.
  • No detectar el fallo capturado de una llamada hija pese a un estado superior 1.
  • Valorar mal accesos fríos y calientes al estado o usar una lista de acceso incompleta.
  • Ignorar expansión de memoria, reenvío de gas, precompilados o costes de logs.
  • Aplicar reglas obsoletas de reembolso de almacenamiento o superar su tope.
  • Contar gas no utilizado o margen del tope como reembolso protocolario de gas.
  • Fijar la comisión máxima por debajo de la comisión base del bloque de inclusión.
  • Pagar de más por prioridad sin entender la política del constructor o secuenciador.
  • Carecer del token de gas nativo aunque se posean otros activos.
  • Omitir gas de blobs, su tope de comisión o cargos por disponibilidad de datos.
  • Tratar como universal la fórmula de ejecución, datos, escalares y operador de una L2.
  • Ignorar carreras de sustitución, nonce, transacción descartada y reserva de saldo.
  • Interpretar una transacción pagada o correcta como prueba de seguridad del contrato o finalidad.

Errores comunes

  • El gas es un porcentaje del valor transferido.
  • Aumentar el límite de gas incrementa necesariamente el importe cobrado.
  • Una comisión máxima o de prioridad elevada garantiza una ejecución correcta.
  • Toda autorización no utilizada y todo reembolso por limpieza de estado son el mismo mecanismo.
  • Las comisiones L2 equivalen solo al gas EVM local y las comisiones de blobs son gas de ejecución ordinario.

Temas relacionados

Fuentes

Navegación

Buscar en la wiki...