¿Revert() reembolsará todo el gas de la transacción o solo el gas restante?

De acuerdo con los documentos revert() no consumirá ningún gas:

Tenga en cuenta que las excepciones de estilo de aserción consumen todo el gas disponible para la llamada, mientras que las excepciones de estilo de reversión no consumirán ningún gas a partir del lanzamiento de Metropolis.

Pero con frecuencia leo que revert()reembolsará el gas no utilizado , por ejemplo, en esta respuesta .

Estoy pensando que reembolsar TODO el gas abrirá las puertas para los ataques DOS, por lo que asumo que solo se reembolsará el gas no utilizado. Pero me gustaría confirmación :-)

Respuestas (1)

Sólo el gas restante.

revertmantendrá el gas sin usar: lo que significa que la persona que llama tendrá el gas sin usar para realizar más cálculos. es diferente y tiene razón en que si revertle devuelve el gas a la persona que llama, eso permitiría ataques DoS (una persona que llama podría repetirse muchas veces, luego revert, repetirse e revertinfinitamente).

Entonces, ¿podemos decir que se preferirá el uso de revert() al lanzamiento, ya que le ahorra algo de gasolina a la persona que llama? Por ejemplo, en los casos en que la persona que llama comete un error y proporciona parámetros incorrectos, lo que hace que el contrato genere un error.
@TripleSpeeder Sí, throwestá en desuso.
@eth ¿cuál es el costo de la gasolina para revertirse?
@ user2284570 de acuerdo con esta respuesta require (que esencialmente envuelve la reversión) hace muy poco, alrededor de 23 gases: stackoverflow.com/a/48085107/10261711