---
# System prepended metadata

title: EigenDA Architecture High Level
tags: [EigenDA]

---

## Architecture

![image](https://hackmd.io/_uploads/HJYk3WZnee.png)

The image shows a High level architecture of EigenDA (specifically the disperser, data plane, and control plane). I've written a high level break down piece by piece for the same:

### End User
- Submit Blob / Query Blob Status → The user (e.g., an L2 sequencer or rollup client) submits a blob (batch of data) or asks for its status
- They interact only with the API Server
- End users also pull blobs from relays and chunks from validators depending on their retrieval strategy (fast vs higher availability and correctness) 

### Disperser

This is the service that takes in blobs and disperses them into chunks across validators. It has three main parts:

#### 1. API Server
- Entry point for clients
- Receives blob submissions and status queries
- Passes blobs and metadata to the rest of the system

#### Blob/Chunk Store
- Storage layer inside the disperser.
- Holds blobs and their erasure-coded chunks before sending them out
- Talks to Encoders (to get data encoded) and Relays (to distribute blobs)
	
#### Encoders
- Turn raw blobs into encoded chunks using erasure coding
- Send chunk headers (commitments, metadata) back to the Controller
- Push chunks into the Blob/Chunk Store

#### Controller & Metadata Store
- **Controller**: Orchestrates the whole process. Pulls headers from Encoders, manages dispersal, and coordinates validators
- **Metadata Store**: Keeps blob metadata (commitments, quorum parameters, cert references)
- Together, they manage consistency between data plane (blobs/chunks) and control plane (certs, quorum state)

### Data Plane
Handles data movement (fast retrieval & redundancy)

#### Relays
- Optimized nodes for fast blob retrieval
- Pull chunks from the Blob/Chunk Store and serve entire blobs quickly to end users
- Provide a low-latency path for retrieval
#### Validators
- Long-term storage & high-availability path
- Hold encoded chunks and provide them when relays fail or for reconstruction
- End users can pull chunks directly from validators
- Validators also receive headers from Controller and return signatures (attestations)

### Control Plane

Handles membership, certificates, and security guarantees.
#### Validators (again, in the control plane context)
- Return signatures over headers (attest that they store chunks)
- Provide quorum membership data
#### Churner
- Module that manages validator membership (joins, leaves, slashing, stake tracking)
- Syncs with Ethereum (L1 smart contracts) for stake weight and membership proofs
#### Ethereum
- Anchors validator set, quorum membership, and finality on-chain
- Acts as the root of trust for EigenDA’s quorums and certificate validity


So an E2E flow would looks something like this:

1. **User submits a blob** to API Server
2. Blob is **encoded** → split into chunks → stored in Blob/Chunk Store
3. Encoders send headers (commitment, metadata) to Controller
4. Controller distributes headers to validators
5. Validators sign headers (proving they got chunks)
6. Signatures are aggregated → **produce a DA Certificate**
7. Relays and Validators serve data:
    - **Relays**: fast blob access
    - **Validators**: high-availability chunk retrieval 
8. Ethereum contract holds validator membership and quorum registry → ensures certificates are tied to stake-weighted signatures

TLDR;
- **Disperser** = preprocessing (encode, split, send chunks, gather sigs)
- **Data Plane** = how clients retrieve blobs (Relays = fast, Validators = reliable)
- **Control Plane** = governance, signatures, and validator set management anchored to Ethereum


## blobs from relays vs chunks from validators

the end user (which in practice = an L2 sequencer, rollup node, or any client that needs the data) has two retrieval paths in EigenDA:

### Pull blobs from Relays (fast path)
- Relays exist specifically to give users low-latency full blob retrieval
- A relay talks to the disperser’s blob/chunk store and re-serves entire blobs directly
- Useful for sequencer → derivation pipelines or for light clients that don’t want to do chunk reconstruction
- relays are not trusted for correctness; they’re just a performance optimization. If a relay lies, the client can fall back to validators

### Pull chunks from Validators (authoritative path)
- Every validator stores its assigned chunks of the encoded blob
- A client can query enough validators ($\ge \gamma$ fraction of stake = reconstruction threshold) to retrieve a sufficient set of chunks
- The client verifies each chunk’s **KZG opening** against the on-chain commitment, then runs Reed–Solomon decoding to reconstruct the blob
- This is the cryptographic fallback guarantees safety even if relays are byzantine or offline

#### Why I think both exist
- **Relays** = performance (fast path, user-friendly, but not trust-critical)
- **Validators** = correctness & availability (slower, chunk-based, but trust-anchored in the DA cert)

EigenDA’s design gives you both	Fast blob serving in the common case (via relays) and Cryptographic assurance and liveness guarantees in the fallback (via validators).
