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:
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 (opens in a new tab).
Letโs take a look at the transaction Lifecycle:
-
Transaction Submission
- Process: Users send transactions to the Sequencer.
- Role: The Sequencer temporarily holds the transactions before they are batched.
-
Batch Processing
- Component:
Sequencer
- Function: Collects and orders transactions into batches for more efficient processing.
- Component:
-
Batch Submission on Avail
- component:
arbnode/batch-poster
- Process: Sequencer posts a batch of L2 transactions onto the underlying data availability provider.
- component:
-
BlobPointer Reference Creation
- Outcome: Avail returns a unique transaction reference with Merkle proof of batch submission.
-
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
(opens in a new tab)
- Process: BlobPointer with Avail header byte(0x0a) is being sent over
to
-
on-chain Data availability verification
- Component:
Avail bridge
(opens in a new tab) - Function: Verify
Merkle proof
for the batch submission withdataRootCommitment
fromVectorX
(opens in a new tab).
- Component:
-
Replay batch execution over WASM binary STF
- Component:
Arbitrator, ArbState
- Process: Recover payload from Avail DA (
RecoverPayloadFromAvailBatch
(opens in a new tab)), and re-executes the State Transition Function against input messages to determine the correct output block.
- Component: