The rollup node is responsible for splitting up the Scroll blockchain into sections that are suitable for proving and commitment on L1. The two main units of this are chunks and batches.
- A chunk is simply a contiguous section of the L2 ledger, it is a collection of L2 blocks, and chunks are the unit of zkEVM proving.
- A batch, on the other hand, is a collection of chunks that are submitted to L1, along with an aggregate proof.
The rollup node has the following submodules:
- Chunk Proposer: collects L2 blocks and proposes chunks while enforcing certain limits (see below).
- Batch Proposer: collect chunks and propose batches while enforcing certain limits (see below).
- Relayer: submits batch data and batch proofs to L1.
Chunk and batch constraints
Compared to the execution node, the rollup node is a much more straightforward and simple component. It collects L2 blocks, creates chunks and batches, and submits these to L1. In this section we outline the main limits that the rollup node must enforce during chunk and batch creation.
Constraints on chunks:
- No proof overflow: Using the circuit capacity checker, we make sure to include as many blocks in a chunk that it would still not lead to proof overflow.
- L1 payload: Inherited constraints from batch proposer, transaction payload cannot exceed 128KB.
Constraints on batches:
- L1 payload: Ethereum has a hardcoded 128KB limit on transaction payload size.
- L1 commit gas: The gas cost of committing a batch is proportional to the number of blocks and transactions in it. We must make sure that this cost does not exceed the L1 block gas limit.
- Number of chunks: A batch includes a number of chunks that is optimal for the aggregation prover.