There are three main processes involved in a wallet using the Orbis protocol:

  1. Moving inputs from the chain to the rollup.

  2. Submitting transactions to the rollup.

  3. And moving outputs from the rollup to the chain.

Let’s take a look at each of these steps.

Moving inputs from the chain to the rollup

To run transactions on the rollup, users must initially own inputs on Orbis. To do so, they must first send some of their funds from L1 (Cardano) to L2 (Orbis).

Sending funds is a three-step process:

  1. Lock L1 funds - Funds are sent to the verifier smart contract address on L1. This process is called “locking” the funds.

  2. Mint funds on L2 - The prover mints a new input on Orbis based on the locked funds.

  3. Rollup-state update - The prover creates a new block, and updates the roll-up state on L1, moving locked funds to the verifier smart contract state UTxO.

Submitting transactions to the rollup

After users have funds available on the rollup, they can start submitting transactions to Orbis. This process will be somewhat similar to the equivalent process on Cardano.

It involves three steps:

  1. Reserving the on-rollup input UTxOs - The purpose of this process is to avoid resource-contention problems that would prevent the transaction from going through. These locks should be temporary and expire automatically after a short time sufficient to complete the transaction.

  2. Generation and posting the transaction to the rollup by the wallet - The wallet generates and sends the unsigned transaction to the user’s wallet to be signed. The wallet signs the transaction with the user’s approval. The wallet receives the signed transaction from the wallet and posts the transaction to the rollup by calling the prover API.

  3. Processing of transactions and creation of blocks on the rollup - The prover will periodically process submitted transactions (stored in the transaction pool) and create a new block on the rollup. After creating a block on the rollup, the prover will send an update to the verifier smart contract on L1. After receiving and validating that update, the verifier will update the proof in the verifier smart contract state UTxO.

Moving outputs from the rollup

To be able to spend L2 outputs on the mainchain (L1), the user must move them back to L1 through a two-step process:

  1. Submitting LeafOutTx to the prover - A LeafOut transaction is sent to the prover to retrieve the funds from L2.

  2. Rollup-state update - The prover creates a new block and updates the rollup state on L1, transferring the requested funds from L2 to L1.

Last updated