¿Qué es y cómo calcular el 'gas acumulado utilizado'?

Cuando veo transacciones en Etherscan (p. ej., 0x7eb9a7454f9cd2f39a7ea7c6212833673165b35f352127ffb337df866897eb73 ), veo el campo Gas acumulado utilizado que no está presente en la respuesta web3.

En general es igual al Gas Usado pero me pregunto si puede ser diferente y en caso de serlo como se debe calcular.

Respuestas (1)

En primer lugar, comprendamos cuál es el gas acumulativo utilizado.

acumulativoGasUsado: Número: la cantidad total de gas utilizado cuando se ejecutó esta transacción en el bloque.

Como lo sugiere la API de JavaScript. Esa explicación no me quedó nada clara, probemos con otra:

el gas usado acumulativo es la suma del gas usado por esta transacción y todas las transacciones anteriores en el mismo bloque.

Ejemplo: http://etherscan.io/txs?block=1402679 Tenemos allí 4 transacciones. 3 envíos simples y 1 creación de contrato.

  1. Enviar, 21000 gasUsed, 21000 acumulativoGasUsed
  2. Enviar, 21000 gasUsed, 42000 acumulativoGasUsed
  3. Enviar, 21000 gasUsed, 63000 acumulativoGasUsed
  4. Creación de contrato, 514474 gasUsed, 577474 acumuladoGasUsed

Ahora si calculamos 577474 - 63000 el resultado es 514474.

Volviendo a tu pregunta sobre cómo calcularlo. Respuesta simple: simplemente no se molesta, porque no afecta (casi) su transacción. Pero si realmente quieres hacer eso aquí, el enfoque simple. Obtenga el bloque 'pendiente' gasUsed web3.eth.getBlock('pending').gasUsedy agréguele el gas estimado de su transacción. La mayoría de las veces resultará en un GasUsado acumulativo para su transacción. Sin embargo, puede cambiar si alguien envía otra transacción entre su estimación y su envío.

Dije 'casi' anteriormente porque puede afectar su transacción de una manera que no se ajuste al límite de gas del bloque.

Veo el campo Gas acumulado acumulado que no está presente en la respuesta web3.

Está presente en web3.eth.getTransactionReceipt(txHash)respuesta.

Entonces, ¿esto es útil para sumar todo el gas utilizado en un bloque, pero para un desarrollador por contrato no tiene más valor?