Celestia Integration (Data Availability)
A rollup without external DA is a rollup that stores calldata on L1. On Ethereum this costs money: before EIP-4844 each byte of calldata cost ~16 gas, after—cheaper through blobs, but blob space is limited (~375 KB per block, 6 blobs). Under high load from rollup projects on mainnet, the blob market becomes competitive, and transaction costs rise. Celestia solves this through modular specialization: the chain does only one thing—Data Availability—and does it cheap and scalable.
Key point: Celestia does not execute transactions, does not store state, does not reach consensus on computational correctness. It only guarantees that data was published and is available for download. This allows optimization for DA-specific parameters: DAS (Data Availability Sampling), Namespaced Merkle Trees, high throughput.
How DAS Works and Why It Matters
Data Availability Sampling is a mechanism where a light node does not download the entire block, but makes random requests for small chunks of data. If all requests succeed—with high probability (cryptographic guarantee)—the block is fully available.
Celestia uses 2D Reed-Solomon erasure coding: data is broken into a matrix, coded by rows and columns. To recover the full block, 50% of data is sufficient (any portion). This means: even if part of the nodes are offline or malicious—data is recoverable as long as at least half is stored.
For a rollup developer this means: publish data to Celestia, and any network participant can verify its availability without downloading everything. Light nodes for users—a real scenario, not theory.
Rollup Integration with Celestia: Practice
Sovereign Rollup vs. Settlement Rollup
First architectural decision: where does settlement happen?
Sovereign rollup uses Celestia only as DA. Consensus on chain correctness—among rollup participants. Forks are possible. This is the model for projects that need maximum sovereignty and flexibility.
Settlement rollup publishes data to Celestia, and the verification proof goes to a separate settlement layer (Ethereum, or Celestia-based settlement chain). This is closer to the classic L2 model, but with cheap DA.
Data Publication via celestia-node
import (
"github.com/celestiaorg/celestia-node/api/rpc/client"
"github.com/celestiaorg/celestia-app/pkg/namespace"
)
// Initialize client (connect to celestia-node)
rpcClient, err := client.NewClient(ctx, "http://localhost:26658", authToken)
// Create namespace—isolated space for rollup data
ns, err := namespace.From([]byte("myrollup123456789")) // 10 bytes
// Publish batch of transactions
blob, err := blob.NewBlob(ns, batchData)
height, err := rpcClient.Blob.Submit(ctx, []*blob.Blob{blob}, blob.DefaultGasPrice())
fmt.Printf("Data submitted at height: %d\n", height)
After publication, save (height, namespace, commitment)—this is proof that data was included. Commitment is the hash of blob data, which is included in the Celestia block header.
Inclusion Verification: Namespace Merkle Proof
For a smart contract on L1 to verify that data was included in Celestia, Namespaced Merkle Tree (NMT) proofs are used:
// Get inclusion proof
proof, err := rpcClient.Blob.GetProof(ctx, height, ns, commitment)
// proof contains:
// - NMT siblings path
// - Row roots from data root
// - Inclusion proof of row in data root
On the Ethereum contract side: Blobstream (formerly Quantum Gravity Bridge) publishes Celestia data root commitments to Ethereum. Verifier contract checks NMT proof against the posted data root.
interface IBlobstream {
function verifyAttestation(
uint64 _tupleRootNonce,
DataRootTuple calldata _tuple,
BinaryMerkleProof calldata _proof
) external view returns (bool);
}
// In rollup verifier
function verifyDataAvailability(
uint64 celestiaHeight,
bytes32 dataRoot,
NMTProof calldata nmtProof
) external view returns (bool) {
// 1. Verify that dataRoot is included in Blobstream
bool rootVerified = blobstream.verifyAttestation(nonce, tuple, binaryProof);
require(rootVerified, "DataRoot not attested");
// 2. Verify NMT proof that our namespace is included in dataRoot
return nmtVerifier.verify(dataRoot, nmtProof, namespaceStart, namespaceEnd);
}
Celestia in the Modular Rollup Stack
Realistic stack for a new rollup project with Celestia DA:
OP Stack + Celestia is the most well-trodden path. alt-da mode in OP Stack allows replacing Ethereum DA with Celestia. Repository celestiaorg/optimism contains the patch. Sequencer publishes batches to Celestia, derivation pipeline reads from Celestia by namespace.
Rollkit is a sovereign rollup framework from Celestia Labs. Built-in support for Celestia DA, on top of Cosmos SDK. For projects that want Cosmos compatibility without IBC complexity.
Arbitrum + Celestia via AnyTrust DA committee, you can configure Celestia as one of the committee members. More complex integration, but preserves compatibility with Arbitrum ecosystem.
Performance Parameters
| Parameter | Value |
|---|---|
| Throughput (testnet) | ~8 MB/block |
| Throughput (roadmap) | ~1 GB/block (via DAS scaling) |
| Block time | ~12 seconds |
| Data cost | ~$0.000001/byte (Mocha testnet) |
| Namespaces | 256^10 possible spaces |
For comparison: Ethereum blobs after EIP-4844—~375 KB/block, target price ~1 ETH for 1 MB under high load.
Operational Aspects
celestia-node exists in three modes:
- Full node downloads and stores all data, participates in DAS
- Bridge node connects Celestia P2P with Celestia App (consensus), needed for DA bridging
- Light node DAS only, minimal resource requirements
For production rollup sequencer, at least your own full node or bridge node is needed—don't depend on public endpoints for transaction publication.
Monitoring: Celestia node exports Prometheus metrics. Key alerts: celestia_das_sampling_failures (DAS not working), celestia_node_sync_delay (node lagging), blob submission errors.
Fallback: if Celestia is unavailable—rollup sequencer should have fallback to L1 DA. OP Stack alt-da mode supports this via challenge mechanism: if data is not available via DA provider within challenge window, sequencer must publish it on-chain.
Integration with Celestia is an infrastructural decision with long-term architectural consequences. Done correctly, it reduces DA costs by 1-2 orders of magnitude and opens the path to throughput unreachable when storing data on Ethereum.







