¿Cómo obtener solo eventos de los últimos 2 días usando getPastEvents cada vez?

¿Cómo se puede modificar la siguiente consulta para recuperar solo los eventos de los últimos dos días?

const events= await MyContract.getPastEvents("eventName", {
  fromBlock: 0,
  toBlock: "latest"
});
Mi conjetura es que debe verificar cuándo se extrajeron los bloques y decidir cuál pasar como fromBlock.
const events= await MyContract.getPastEvents("EventName", { fromBlock: (await web3.eth.getBlockNumber()) - 12343, // aproximadamente 12343 bloques cada 2 días toBlock: "latest" });

Respuestas (2)

Hay aproximadamente 12 343 bloques cada dos días, por lo que encontrar el número de bloque actual y restar esa cantidad daría el número de bloque objetivo. Pase eso como fromBlockparámetro a la getPastEventsfunción para limitar a ese rango:

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'

}