Skip to Content

Building on the Arbitrum Nitro stack with Avail DA

What is Nitro?

Nitro is designed by Arbitrum, a software stack to build optimistic rollups, powering Arbitrum One and Arbitrum Nova. These chains are Optimistic L2 protocols that inherit Ethereum-level security.

You can read more about Nitro in:

  1. The Nitro whitepaper on github 
  2. Arbitrum docs. 

Arbitrum Orbit integration with Avail DA

Arbitrum Orbit chains can integrate with Avail DA using a number of different configurations. You can read more about them in our blog .

Let’s take a look at the transaction Lifecycle:

  1. Transaction Submission

    • Process: Users send transactions to the Sequencer.
    • Role: The Sequencer temporarily holds the transactions before they are batched.
  2. Batch Processing

    • Component: Sequencer
    • Function: Collects and orders transactions into batches for more efficient processing.
  3. Batch Submission on Avail

    • component: arbnode/batch-poster
    • Process: Sequencer posts a batch of L2 transactions onto the underlying data availability provider.
  4. BlobPointer Reference Creation

    • Outcome: Avail returns a unique transaction reference with Merkle proof of batch submission.
  5. BlobPointer Submission to Settlement layer ( Arbitrum One, Ethereum etc.)

    • Process: BlobPointer with Avail header byte(0x0a) is being sent over to sequencerInbox rollup contract for on-chain DA verification over Avail bridge and batch addition to canonical chain.
    • component: SequncerInbox.sol
  6. on-chain Data availability verification

    • Component: Avail bridge
    • Function: Verify Merkle proof for the batch submission with dataRootCommitment from VectorX.
  7. Replay batch execution over WASM binary STF

    • Component: Arbitrator, ArbState
    • Process: Recover payload from Avail DA (RecoverPayloadFromAvailBatch), and re-executes the State Transition Function against input messages to determine the correct output block.
Last updated on