Chicos, estoy ocupado revisando el mempool y tratando de rastrear varias transacciones y partes de transacciones. Como primer paso, pensé en enumerar las transacciones y los bits que podría necesitar más adelante. Aquí viene el problema.
No puedo obtener ninguna información de la entrada de la transacción. Probé todas las soluciones anteriores y los paquetes recomendados, pero fue en vano.
Cuando uso web3.utils.toAscii me sale un galimatías. Cuando uso ethereum-tx-decoders decodeTx, obtengo un valor de arrayify no válido. cuando uso cualquiera de las otras herramientas de web3, aparece un error.
Encuentre la última iteración de mi código a continuación después de muchas horas de intentar todas las soluciones que pude encontrar (arriba están las tres fallas más recientes)
const txDecoder = require("ethereum-tx-decoder");
const express = require("express");
require("dotenv").config();
const Web3 = require("web3");
const curl = `wss://mainnet.infura.io/ws/v3/${process.env.infuraProjId}`;
const web3 = new Web3(new Web3.providers.WebsocketProvider(curl));
let counter = 0;
const subscription = web3.eth.subscribe(
"pendingTransactions",
(error, transactionHash) => {
if (!error) {
web3.eth
.getTransaction(transactionHash)
.then((tx) => {
if (tx !== null) {
counter++;
// console.log(tx.hash);
const decodedInput = txDecoder.decodeTx(tx.input);
console.log(decodedInput);
}
})
.catch((err) => console.error(err));
} else {
console.error(error);
}
}
);
// .on("data", (transactionHash) => {
// web3.eth.getTransaction(transactionHash).then((transaction) => {
// console.log("coming from data");
// console.log(transaction.from, transaction.to);
// });
// });
// ^^ this kept returning null
Por favor y gracias
te falta una pieza vital. No podrá descodificar la entrada o los registros hasta que tenga el ABI del contrato "receptor" para la entrada TX y el contrato FROM para los registros.
Para obtener el ABI: use etherscan, use https://sourcify.dev/ o encuéntrelo en IPFS/BZZ leyendo el código de bytes y analizando la dirección si el compilador de solidity pudo cargarlo.
DESPUÉS de tener el ABI, lo pasa a ethersjs/web3js/web3py y esas bibliotecas podrán analizar la entrada/salida.
Editar: también tenga en cuenta: si el contrato del receptor es un contrato de "Proxy", deberá buscar la dirección del contrato del "receptor final" de las transacciones internas.
rata callejera
andriy lisak
andriy lisak
rata callejera