Wie bekomme ich immer nur Ereignisse der letzten 2 Tage mit getPastEvents?

Wie kann die folgende Abfrage geändert werden, um nur die Ereignisse der letzten zwei Tage abzurufen:

const events= await MyContract.getPastEvents("eventName", {
  fromBlock: 0,
  toBlock: "latest"
});
Meine Vermutung ist, dass Sie überprüfen müssen, wann Blöcke abgebaut wurden, und entscheiden, welcher als fromBlock.
const events= await MyContract.getPastEvents("EventName", { fromBlock: (await web3.eth.getBlockNumber()) - 12343, // ca. 12343 Blöcke alle 2 Tage toBlock: "latest" });

Antworten (2)

Alle zwei Tage gibt es ungefähr 12.343 Blöcke. Wenn Sie also die aktuelle Blocknummer ermitteln und diesen Betrag subtrahieren, erhalten Sie die Blocknummer zum Ziel. Übergeben Sie das als fromBlockParameter an die getPastEventsFunktion, um diesen Bereich zu begrenzen:

const events= await MyContract.getPastEvents("EventName", {
  fromBlock: (await web3.eth.getBlockNumber()) - 12343,
  toBlock: "latest"
});

const getBlock = async () => {
    const result = await web3.eth.getBlockNumber()
    return web3.utils.hexToNumberString(result)
    
}

const calculated = getBlock().then((res) => { const calculated = Number(res) - 12343; return calculated});
const options =                                 
{
    address: getPair(tokenA, tokenB),
    fromBlock: calculated,
    toBlock: 'latest'

}