¿En qué difiere el uso real de la unidad de gas para una transacción similar?

Transferí ETH 3 veces a un contrato inteligente que necesita 48734 unidades de gas reales para ejecutarse.

Tomó 68932 unidades para el 1er tx y 48734 para los 2 restantes. ¿Por qué tomó más gasolina para el primer tx que para los 2 últimos?

Enlace a y tx.

Llamó a un método de contrato inteligente, tal vez la primera vez que tiene que inicializar algún valor para su dirección que puede modificar la cantidad de gas utilizada.

Respuestas (1)

La mayor parte de eso es probablemente almacenamiento. Una de las operaciones más caras, a 20k de gas, es la asignación de un nuevo espacio de almacenamiento. Entonces, cuando un contrato inteligente establece un espacio de almacenamiento de cero a distinto de cero, al remitente del tx se le cobra 20k de gasolina. De manera similar, cuando una ranura de almacenamiento se establece de un valor distinto de cero a otro distinto de cero (actualización de una ranura de almacenamiento ya asignada), al remitente del tx se le cobran 5k. Esto a menudo significa que para muchos sistemas se cobra más al usuario por la primera invocación, especialmente con contratos de token porque tiene que inicializar el saldo de los usuarios.

Aparte de eso, la ramificación normal a menudo puede causar una diferencia de unos pocos cientos a varios miles. Además, una diferencia común está en los datos de tx. Los datos de Tx se cobran 64 de gas por bytes distintos de cero y solo 4 de gas por bytes cero, por lo que si dos personas llaman a la misma función pero mis parámetros tienen más bytes cero, entonces es más barato para mí.

Puede encontrar más información sobre los precios de los códigos de operación en el documento amarillo de las páginas 20 y 21.