Entiendo que algunas operaciones cuestan gas negativo porque liberan espacio en la cadena de bloques, como las autodestrucciones. ¿Cuáles son todas las operaciones que pueden tener gas negativo? ¿Esto solo ocurre porque la operación finalmente libera espacio en la cadena de bloques o hay otras razones por las que tiene gas negativo?
Los únicos dos OPCODE con costos de gas negativos son STORAGEKILL(-15000) y GSUICIDEREFUND(-24000).
Esto ocurre cuando se eliminan los valores de almacenamiento o se suicidan los contactos.
Estos OPCODE otorgan reembolsos de gasolina porque liberan espacio en la cadena de bloques.
Los precios de todos los OPCODE se pueden encontrar aquí
Como un complemento práctico a la respuesta de Tjaden, en Solidity se emite un reembolso de gas cuando se realiza selfdestruct
o delete
sobre los datos existentes :
delete a
asigna el valor inicial para el tipo aa
. Es decir, para números enteros es equivalente aa
= 0, pero también se puede usar en arreglos, donde asigna un arreglo dinámico de longitud cero o un arreglo estático de la misma longitud con todos los elementos reiniciados. Para estructuras, asigna una estructura con todos los miembros reiniciados.
delete
no tiene efecto en las asignaciones completas (ya que las claves de las asignaciones pueden ser arbitrarias y generalmente desconocidas). Entonces, si elimina una estructura, restablecerá todos los miembros que no sean asignaciones y también recurra a los miembros a menos que sean asignaciones. Sin embargo, las claves individuales y lo que asignan se pueden eliminar.Es importante notar que
delete a
realmente se comporta como una asignación aa
, es decir, almacena un nuevo objeto ena
.
ética
nick johnson
alper
length_of_the_array
? Consulte ( ethereum.stackexchange.com/q/69882/4575 ) para obtener más detalles en cuestión. @ethusuario2284570