# L1 Rollup Protocol: On-Chain Inputs and Outputs

This is a protocol implemented as a smart contract through which an on-chain UTxO represents the state of a rollup.&#x20;

Let’s look at the basic operations of the L1 rollup protocol.

1. The on-chain rollup state UTxO can be updated to reflect transactions added to the rollup.
2. Then the on-chain money can be added to the rollup state UTxO to make the funds available to its owner on the rollup.
3. On-rollup money can be removed from the rollup state UTxO and sent to an on-chain address of the owner’s choosing.&#x20;

The L1 rollup protocol does not define how the rollup data is stored off-chain or how transactions are added to it. But it merely defines the protocol through which changes to the rollup off-chain are reflected on-chain, and money can be added to and subtracted from the rollup.&#x20;

### Contract specification&#x20;

The L1 protocol respects a well-defined lifecycle for proof-state objects, such that they can be initialized, tracked, altered, and then finally shut down cleanly.&#x20;

Each proof state can be initialized with an NFT Asset Class to be used as a unique ID (UID) to track the proof state over its entire lifecycle.&#x20;

Having a well-defined lifecycle for proof-state objects allows the “NoFundsLocked” property to be satisfied so that no funds are ever stuck at a script address.&#x20;

## Validator Mechanics&#x20;

A given Orbis validator is parameterized with different asset classes for&#x20;

1. Identification&#x20;
2. Authentication
3. Assets accepted&#x20;

### Fallback mode&#x20;

In the event that the prover is offline for a protracted period of time (3 days), the validator will allow for a fallback option that allows users to retrieve their funds from the rollup.&#x20;

In this special case, users may submit a Fallback redeemer containing a list of UTxOs that they would like to retrieve from L2.&#x20;

The arithmetic circuit in this case will attempt to verify that:&#x20;

1. Only burn transactions have taken place in the rollup.&#x20;
2. Those burn transactions on L2 are signed by the users.&#x20;
3. The UTxOs burned on L2 correspond to the TxOuts provided in the redeemer on L1.&#x20;
4. At least 3 days have passed since the last L2 non-burn transaction.&#x20;

### Upgrade and governance process&#x20;

The validator will also allow the prover to move the UTxO to a new script address through the use of an “Upgrade” redeemer.&#x20;

The included zk-SNARK will prove that *n* of *m* members of the board (the governing body of Orbis) have signed off on the upgrade.&#x20;

Here, *n* and *m* are protocol parameters, and *m* is the number of board members; both numbers are potentially subject to change. The list of members of the board is part of the contract state and part of the statement to be proven.&#x20;

The coefficients of the fee calculation can be updated without upgrading the contract as long as *n* of the members of the board have signed off. In case of voting for an approval for a new board, the included zk-SNARK will prove that *n* of *m* members of the board have signed off on the election of the new board and that an approving vote for the new board occurred.
