Etherscan muestra tx sin gas, pero se completa de todos modos

¿Parece que de alguna manera es posible quedarse sin gasolina pero la transacción aún se completa? Esto viola mi comprensión de ethereum. Si te quedas sin gasolina, revierte todos los cambios. ¿Qué significa este error de etherscan?

Although one or more errors occured [Out of gas] contract execution completed

El minero todavía recibe una compensación por el trabajo. La transacción es válida aunque no realizó ningún cambio de estado.
También es posible recuperar de OOG para transacciones internas. Puede ser útil si muestra la transacción.
Gracias por la útil ayuda. Todavía no estoy seguro de lo que está pasando con este tx. etherscan.io/tx/…

Respuestas (1)

Siempre que la transacción sea válida (es decir, sin malas firmas, malos nonce, etc.), incluso si se queda sin gas, la transacción aún se completa . Ya sea que la transacción haya realizado cambios de estado o no, es una historia diferente.

¿Qué pasa si decimos que las transacciones OOG no son válidas y no pueden estar en un bloque válido y los mineros no reciben compensación por el trabajo?

Imagine a un atacante que envía un montón de transacciones de llamadas de función computacionalmente costosas, pero se asegura de que cada una de esas transacciones falle al final. Los mineros los ejecutarían, desperdiciarían poder de cómputo y no obtendrían nada a cambio. Esto es efectivamente un ataque de DOS a la cadena de bloques.


Unas palabras sobre las transacciones internas.

Dado que el contrato puede llamar a otros contratos o enviar fondos, una llamada de transacción puede incluir múltiples transacciones internas. Es posible recuperar desde OOG de una transacción interna dentro de su transacción.

Si solo reenvía una cantidad limitada de gas a una llamada de función de transacción interna, su transacción interna puede fallar y OOG. Pero dado que todavía le queda gasolina en su TX principal, eventualmente puede completarse.

Ver si una transacción completa se revierte cuando ocurre el lanzamiento