Open
Description
Summary
When submitting multiple batches to the sequencer_publishBatch
of the RPC, if the execution of the first batch is slow for some reason (either offchain compute or even an artificial sleep), the sequencer rejects subsequent batches.
The potential reason for this is that subsequent batches are executed against un-updated state (which would only be updates after the first batch has been executed), which is causing them to be rejected.
For example, submitting 2 batches
batch1 -> create NFT collections
batch2-> mint NFTs to collections from batch1
causes batch2 to be rejected.
There are 2 issues here:
- Consistency: The race condition, because batch2 being accepted or not depends on how quick batch1 execution, so the behavior appears non-deterministic to a user submitting batches.
- Strictness: Do we want the sequencer to verify complete execution or just a subset of conditions (signature, nonce, gas). This is more of a design decision
Steps to reproduce
- introduce a small sleep (>=500ms) in any of the modules
- send multiple batches to the sequencer RPC in quick succession
- observe that the first batch is accepted, while remaining batches are rejected