Inclusion times
Every L1 event carries aninclusion_time, fixed when the event is created. It equals the upper bound of the creating transaction’s validity interval plus the event_wait_duration protocol parameter. The wait gives operators time to see the event on L1.
Each block claims a time interval, and consecutive intervals cover time with no gaps or overlaps. So an event’s inclusion time falls in exactly one block’s interval. A block that omits an event whose inclusion time lies in its interval, or includes one whose inclusion time lies outside it, is invalid.
While operators keep committing valid blocks, every L1 event is included in exactly one block.
Deposit
A deposit is created by an L1 transaction that:- Spends an input that uniquely identifies the deposit.
- Registers a witness staking script for it.
- Mints a deposit token and sends your funds to the deposit address, with a datum naming the L2 address and optional datum to credit.
max_tokens_allowed_in_deposits distinct tokens, ADA included.
Transaction request
The normal way to transact is to submit an L2 transaction to the current operator’s API. See the Transactions API. You set the transaction’s validity interval. The transaction can go into any block whose event interval overlaps it. A valid request misses the ledger only if the operator censors it, or if the last overlapping block was committed before the request arrived.Transaction order
If an operator ignores your request, post the transaction on L1 as a transaction order. Like a deposit, it carries an inclusion time, and the block covering that time must include it. Operators can’t check an order’s contents when it is created. If the ordered transaction turns out to be invalid, the operator includes it with a tag that says why. A wrong tag makes the block invalid.Withdrawal order
A withdrawal is created by an L1 transaction that:- Spends an input that uniquely identifies the order.
- Registers a witness staking script for it.
- Mints a withdrawal order token and sends it to the withdrawal order address, with a datum naming the L2 UTXO to withdraw, its owner and value, the L1 address to pay, and a refund address.
- The order moves to a payout accumulator.
- The accumulator collects funds from the reserve until it holds the full amount.
- The funds are sent to your L1 address.
A withdrawal can’t be paid before its block is confirmed, and a block is confirmed only after the maturity period. See Protocol parameters.