I am listening to a specific contract on the blockchain and when a certain event occurs on the contract, I send a TX. In the best case my TX is mined in the next block of the specific event that I am using as my trigger.
In blockchain explorer I see some addresses whose TX's are mined in the exact same block as their trigger events.
My question is how can I send a TX to be mined in the same block as the emitted contract event that I am using as my trigger?
I am currently using ethers.js as follows
filter = {address: "0x...."} // Contract address that I am listening to
// Start listening
provider.on(filter, async (_event) => {
// Do something with _event when a TX is emitted
// Sign a raw TX if certain criteria is met
await send_tx(tx_data, gasPrice, gasLimit)
})