Por ejemplo: abra este https://etherscan.io/tx/0xcb1e3530950cf2c43a307bcb5645ae71a12c76a60831617badd04aea3efe68aa
es uno al azar
Veo estas informaciones en la página web:
Gas Limit:
136,500
Gas Used by Transaction:
35,531 (26.03%)
Gas Price:
0.000000008 Ether (8 Gwei)
Transaction Fee:
0.000284248 Ether ($0.05)
yo se que fee = gas_price x used_gas
=>0.000000008 x 35,531 = 0.000284248 eth
Perfecto.
Estoy interesado en leer, a través de api, la tarifa de transacción convertida en dinero real , como puede ver, hay un$0.05
No puedo llamar a una sola API para devolver esta información en Etherscan.
¿Qué puedo hacer para tener esta información?
Vocación
Solo obtengo estas informaciones
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"blockHash": "0xd8d3b1532b376dcb34c6c36fc7bc167cfc048cfcb3cc53a9ab7dab7f383d4240",
"blockNumber": "0x961a86",
"from": "0xcc5ce245a296667aca1b5855f1a05ca950017e68",
"gas": "0x21534",
"gasPrice": "0x1dcd65000",
"hash": "0xcb1e3530950cf2c43a307bcb5645ae71a12c76a60831617badd04aea3efe68aa",
"input": "0x1cff79cd00000000000000000000000050b881ceafece2034b899205fbbd7bafc0c0d23000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000104a70e78c1000000000000000000000000f173214c720f58e03e194085b1db28b50acdeead000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca00000000000000000000000056178a0d5f301baf6cf3e1cd53d9863437345bf9000000000000000000000000000000000000000000000000a688906bd8b000000000000000000000000000000000000000000000000002bd494127192db3364000000000000000000000000000000000000000000000000000450ed6b3b61f2e000000000000000000000000000000000000000000000000000000005e8ee87a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000",
"nonce": "0x514",
"to": "0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf",
"transactionIndex": "0x4e",
"value": "0x0",
"v": "0x1c",
"r": "0xa03627e5bc49b850afb92774a4dc21c436da8bfe569688dfbd14fc9c58a2bdbb",
"s": "0x59ddaf4c96b60f413d713902abb1f802fbe3266afd3a61e82a8e635b44522fed"
}
}
Dónde
"gas": "0x21534"
=> en decimal es 136,500
[límite de gas]
"gasPrice"○: "0x1dcd65000"
=> en decimal es 8,000,000,000
[precio de la gasolina]
También intenté llamar a https://api.etherscan.io/api?module=proxy&action=eth_getTransactionReceipt&txhash=0xcb1e3530950cf2c43a307bcb5645ae71a12c76a60831617badd04aea3efe68aa&apikey=your_api_key
Este es el resultado
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"blockHash": "0xd8d3b1532b376dcb34c6c36fc7bc167cfc048cfcb3cc53a9ab7dab7f383d4240",
"blockNumber": "0x961a86",
"contractAddress": null,
"cumulativeGasUsed": "0x778412",
"from": "0xcc5ce245a296667aca1b5855f1a05ca950017e68",
"gasUsed": "0x8acb",
"logs": [],
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"status": "0x1",
"to": "0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf",
"transactionHash": "0xcb1e3530950cf2c43a307bcb5645ae71a12c76a60831617badd04aea3efe68aa",
"transactionIndex": "0x4e"
}
}
aquí tengo
"cumulativeGasUsed": "0x778412" => 7,832,594 [ what ??? ]
"gasUsed": "0x8acb" => 35,531 [ gas used by this transaction]
Entonces, para reconstruir la información de la página web, necesito 2 llamadas api, para recuperar el precio del gas y el gas usado.
pero no tengo ninguna cita de eth, y esto es realmente lo que necesito
Puede usar la API de CryptoCompare, por ejemplo:
const ETH_AMOUNT = "0.000284248";
const request = require("request");
const Decimal = require("decimal.js");
request.get("https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD", function(error, response, body) {
if (error)
throw new Error(error);
else if (!response)
throw new Error("no response");
else if (response.statusCode != 200)
throw new Error("bad response");
else
convert(JSON.parse(body).USD);
});
function convert(usdRate) {
const USD_AMOUNT = new Decimal(ETH_AMOUNT).mul(usdRate);
console.log(USD_AMOUNT.toFixed(2 /* decimal places */));
}
Estaba haciendo algo similar (pero calc antes de enviar un tx).
El proceso es para
avgPriceUSD / 1000000000
. Esto le dará USD por Gwei. Con esto ya puedes hacer una búsqueda.Si está tratando de resolver esto para tx en el pasado, necesitará obtener el precio en un momento determinado. (puede usar la API gratuita de coingecko o su preferencia).
Espero haber entendido bien tu pregunta original. Leyendo de nuevo, podría haberlo hecho. Voy a dejar esto y borrarlo si no porque tengo que correr. jajaja.
No sé si mientras tanto pudo resolver el problema, pero a partir del 7 de enero de 2022, la llamada a la API eth_getTransactionReceipt
devuelve un campo llamado effectiveGasPrice
que corresponde al mismo valor que devuelve la eth_getTransactionByHash
llamada a la API, que es "0x1dcd65000"
.
Tomemos otra transacción, en este caso:
0xf23766719c61461673d9e6f5cdc1e9ba42c958c07b924bfb9809cd58c244b4c0
effectiveGasPrice
de eth_getTransactionReceipt
: 0x19bbced2d3
gasPrice
de eth_getTransactionByHash
: 0x19bbced2d3
En otras palabras, eth_getTransactionReceipt
es suficiente para recuperar tanto el precio del gas como el gas utilizado.
ethdailyprice
llamada api, o usas otro servicio como coingecko por el precio en USD y EURO pero no será el mismo valor que en la página etherscan
w3spi