Howsit Leute, ich bin damit beschäftigt, den Mempool zu durchsuchen und zu versuchen, verschiedene Transaktionen und Teile von Transaktionen zu verfolgen. Als ersten Schritt dachte ich, ich würde Transaktionen und die Bits auflisten, die ich später brauchen könnte. Hier kommt das Problem.
Ich kann keine Informationen aus der Transaktionseingabe entnehmen. Ich habe alle zuvor empfohlenen Lösungen und Pakete ausprobiert, aber ohne Erfolg.
Wenn ich web3.utils.toAscii verwende, erhalte ich Kauderwelsch. Wenn ich ethereum-tx-decoders decodeTx verwende, erhalte ich einen ungültigen Arrayify-Wert. Wenn ich eines der anderen Web3-Tools verwende, erhalte ich eine Fehlermeldung.
Bitte finden Sie die neueste Iteration meines Codes unten, nachdem ich viele Stunden lang versucht habe, alle Lösungen zu finden, die ich finden konnte (oben sind die drei jüngsten Fehler).
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
Bitte und Danke
Ihnen fehlt ein wichtiges Stück. Sie können die Eingabe oder die Protokolle erst entschlüsseln, wenn Sie die ABI des "Empfänger"-Vertrags für die TX-Eingabe und den FROM-Vertrag für die Protokolle haben.
Um die ABI zu erhalten: Verwenden Sie entweder etherscan, verwenden Sie https://sourcify.dev/ oder finden Sie sie in IPFS/BZZ, indem Sie den Bytecode lesen und die Adresse parsen, wenn der Solidity-Compiler sie hochladen durfte.
NACHDEM Sie die ABI haben, übergeben Sie sie an ethersjs/web3js/web3py und diese Bibliotheken können die Eingabe/Ausgabe analysieren.
Bearbeiten: Bitte denken Sie auch daran: Wenn der Empfängervertrag ein "Proxy" -Vertrag ist, müssen Sie die Vertragsadresse des "Endempfängers" aus den internen Transaktionen ermitteln.
Straßenratte
Andrij Lysak
Andrij Lysak
Straßenratte