> For the complete documentation index, see [llms.txt](https://docs.bvm.network/bvm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bvm.network/bvm/l3-scaling-solutions/rollups-from-appchains-to-l2s.md).

# Rollups from appchains to L2s

In this example, we'll use Supersonic, a Bitcoin L2, as the base layer. However, you can use any Bitcoin L2 as a base layer.&#x20;

An application (Bitcoin L3) first rolls up to Supersonic. Then Supersonic itself rolls up to Bitcoin.

Let's zoom in on the architecture below and examine rollup flows step by step.

<figure><img src="/files/eHcgf21Np73zJmulaUGf" alt=""><figcaption></figcaption></figure>

&#x20;

The steps to do a ZK rollup from a Bitcoin L3 to Supersonic (a Bitcoin L2) are as follows:&#x20;

1. A user submits a transaction to the Bitcoin L3 Sequencer
2. The Bitcoin L3 Sequencer executes the transaction and provides a soft confirmation&#x20;
3. If the user chooses, they can force the Bitcoin L3 Sequencer to include their transaction&#x20;
4. The Bitcoin L3 Sequencer executes the block of transactions and sends it over to the Bitcoin L3 Prover&#x20;
5. The Bitcoin L3 Prover creates a cryptographic proof of the block’s execution and sends it to the smart contract on Supersonic.&#x20;
6. The smart contract verifies that the proof is valid and all the data has been submitted and then updates the rollup’s state in the contract.&#x20;
7. The Bitcoin L3 Sequencer sends the block’s data to one of the Data Availability layers supported by BVM, such as Celestia, Near DA, Polygon, Avail DA, Filecoin, or Eigen DA.
