Bundle imitation on Arbitrum

Hi :wave:,

Recently, I researched if the effect of bundles can be mimicked on Arbitrum before bundles are natively supported. I am sharing the methods, results and findings here: Bundle imitation on Arbitrum - HackMD.

The main goal of the research was to investigate whether transactions submitted in quick succession or via BatchRPC end up positioned next to each other within the same block, while also preserving their original order of submission.

Key findings:

  • Introducing 5-10ms delay between the submission of two transactions preserved the order of transactions and placed them adjacent to each other in 76-79% of the cases submitted from Oregon.
  • Submitting multiple transactions via BatchRPC placed each transaction in a new block; in >99% of the cases, the blocks were sequential.
  • The geographical proximity to the sequencer and transaction volume affected the results.

Would appreciate your feedback!


Out of curiosity, what causes transactions submitted via BatchRPC to be placed in different blocks? I checked the code for batch handler for Arbitrum node, but I did not find any block delay associated with the underlying calls. Is this the right place in the codebase to be looking for the answer?

The most likely explanation for why the transactions are put in different blocks is because the combination of the fact that batch json rpc calls execute sequentially waiting for the previous one to return successfully and that fact that in arbitrum unlike ethereum eth_sendRawTransaction only returns successfully after a transaction is included in a block

1 Like

That makes sense, thanks!