¿Se entrega el gas reembolsado por el almacenamiento "liberado" al contrato, al "asignador" o al "borrador"?

¿Se entrega el gas reembolsado por el almacenamiento "liberado" al contrato, al "asignador" o al "borrador"?

Supongamos que un contrato asigna algo de almacenamiento. Este almacenamiento lo paga el remitente de la transacción que realiza la asignación, ¿verdad?

Ahora, cuando este almacenamiento es "liberado" por el deleteoperador en Solidity, ¿quién recibe el reembolso y cómo se calcula el reembolso?

¿Es el contrato el que recibe el reembolso, el remitente ("asignador") de la transacción de asignación o el remitente ("eliminador") de la transacción de eliminación? En particular, ¿qué precio del gas se utiliza para calcular el reembolso?

Respuestas (1)

En resumen, al remitente de la transacción que provoca la liberación del lugar de almacenamiento (establecido en cero) se le deducirá una cantidad (un gas neto de 10000 por lugar de almacenamiento liberado) de la cantidad total de gas utilizado para la transacción.

Es un poco más matizado en realidad:

  1. El costo del gas de establecer la ubicación en cero es 5000 (G_sreset en el Libro amarillo).

  2. Se añaden 15000 de gasolina al contador de reembolsos (R_sclear en el Libro Amarillo).

  3. Al final de una transacción exitosa, la cantidad de gas en el mostrador de reembolso (hasta un tope de la mitad del gas total utilizado) se agrega al gas no utilizado y se devuelve a la persona que llama (Ecuación 72 en el Libro Amarillo).

Las referencias anteriores corresponden a esta versión del Libro amarillo , que analiza el Contador de reembolsos en las secciones 6.1 y 6.2.

El precio del gas es el precio del gas que se aplica a toda la transacción en la que se produce el reembolso.

¿Significa esto que si el usuario "A" asigna y paga por el almacenamiento en una transacción, entonces otro usuario "B" puede obtener el reembolso si su transacción se realiza en deleteeste almacenamiento? ¿No sería más justo, si el usuario "A" fuera recompensado con el reembolso (usando algún mecanismo)?
Además, ¿no se puede malinterpretar esto? Supongamos que se utiliza un precio del gas de 20 GWei para pagar el gas para la asignación de almacenamiento. ¿Qué pasa si la transacción que libera este almacenamiento tiene un precio de gas de 2 ether?
El punto es que la parte que limpia la cadena de bloques de algunos datos es recompensada, ya que esos datos ya no necesitan persistir para siempre. "A" llenó la cadena de bloques; "B" lo aclaró - B es recompensado. En el segundo punto, no, es solo una reducción en la tarifa que pago por mi transacción; no hay ganancia neta o forma de hacer Eth usando esto.
Gracias por tu respuesta. Entonces, si he asignado mucho espacio de almacenamiento, ¿cuándo sería un buen momento para liberarlo? Si lo libero en una transacción "ligera" que no cuesta mucho gas para ejecutar, ¿entonces la mayor parte del gas agregado al contador de reembolso no se agregará al gas no utilizado (hasta un límite de la mitad del gas total utilizado)?
Realmente no tengo ninguna recomendación, excepto que si los datos no necesitan estar en la cadena de bloques, es bueno que se eliminen lo antes posible. Creo que sus preguntas originales están respondidas en cualquier caso, así que siéntase libre de abrir una nueva pregunta y marcar esta como completada.