Usando getTransactionReceipt para obtener acumulativoGasUsed en trufa javascript

Intentar analizar el resultado de la transacción, por ejemplo, el gas exacto utilizado por una transacción. ¿Cómo puedo hacerlo en javascript?

Lo siguiente no funciona por cierto, ¿alguna idea?

return metaInstance.deposit({ from: accounts[0], value: web3.toWei(5, "ether") }).then(function (tx) {
  var rcpt = web3.eth.getTransactionReceipt(tx).then(function (rcpt) {
    console.log(rcpt.cumulativeGasUsed.toString());
  });

Respuestas (2)

Su ejemplo no funciona porque la transacción aún no se ha extraído en el momento en que llama a getTransactionReceipt (tx). El hash de la transacción se conoce antes de la minería, mientras que el recibo solo después. Si desea esperar a que se extraiga la transacción y luego obtener el recibo, use web3 1.0 o truffle-contract . Ambos proporcionan buenos envoltorios que resuelven una promesa con el recibo de la transacción al extraer el tx. (Aunque aún en beta recomiendo web3).

/EDITAR

Si ya está usando trufa, lo anterior no es el problema, pero creo que se está confundiendo con la promesa js. Intentar:

     return metaInstance.deposit({ from: accounts[0], value: web3.toWei(5, "ether") }).then(function (tx) {
       return web3.eth.getTransactionReceipt(tx);
     }).then((_rcpt) => {
       console.log(_rcpt.cumulativeGasUsed.toString());
       return;
     });
Pensé en las pruebas unitarias de trufas, ¡está usando minería instantánea! ¿No es el caso? La razón por la que pregunto son todos los demás pasos debajo de él dependiendo de si esta transacción tiene éxito, incluido un saldo de verificación.
sí, esto fue de una prueba unitaria de trufas. por cierto, el problema fue un malentendido sobre los parámetros.

La respuesta de la transacción no es el hash, el hash debe tomarse de la respuesta. Vea abajo.

Por cierto, esto funciona solo en casos de prueba de trufas, en escenarios del mundo real, como dijo @theo-port, debemos esperar a que se complete la extracción para obtener el recibo de la transacción.

      return metaInstance.deposit({ from: accounts[0], value: web3.toWei(5, "ether") }).then(function (resp) {
        var rcpt = web3.eth.getTransactionReceipt(resp.tx);

        console.log("cumulativeGasUsed: " + rcpt.cumulativeGasUsed);