Batch and Block Limits
To avoid overloading the prover and ensure that it can produce a proof within a bounded time frame for a single batch, the protocol imposes the following limits:- There can be at most
100
blocks in a batch. - There can be at most
5
transactions in a block.
Transaction Fees
The fee schedule is separated into fees for sequencer-committed transactions, which are paid on the keystore, and fees for L1-initiated transactions, which are paid on L1.Sequencer-Included Transactions
The fee for transactions sent to the sequencer is comprised of two parts, a L2 execution fee and a L1 data fee. Fees from transactions committed to L1 by the sequencer are funded on the keystore and collected by the sequencer. The execution fee is denominated in gas, which users bid on on a per unit basis. The gas cost by transaction type is listed below (DEPOSIT
transactions must be L1-initiated and are not shown).
Transaction Type | L2 Gas |
---|---|
WITHDRAW | 100_000 |
UPDATE | 100_000 |
Solidity
transaction
is the serialized transaction envelope specified in Keystore Transactionsl1Origin
is the sequencer-assigned L1 origin of the batch in which the tx was executed.- The
l1Origin.readL1BaseFee()
andl1Origin.readL1BlobBaseFee()
are the values from the L1 origin block. How this is enforced depends on the execution context.
- The
l1BaseFeeScalar
andl1BlobBaseFeeScalar
are scalars applied to the L1 base fee and L1 blob base fee respectively- The scalar values allow the sequencer to adjust the proportion of DA costs allocated to calldata versus blobs.
- Both values are interpreted as fixed-point decimals with 6 decimal places.
L1-Initiated Transactions
L1-initiated transactions pay transaction fees on L1 as part of the L1-initiation transaction. The fee schedule for L1-initiated transactions is:Transaction Type | Value |
---|---|
DEPOSIT | 0.001 ether |
WITHDRAW | 0.005 ether |
UPDATE | 0.005 ether |
Native Gas Sponsorship
All Update transactions can have fees either paid for by the user or sponsored by a sponsor account.Footnotes
- Currently, the sequencer and prover are both run by the same entity, and the protocol does not provide a way for provers to receive payments from the sequencer. However, the protocol is designed to enable such payments in the future. ↩