Overview
Dispersing Blobs
The EigenDA v2 Disperser provides an API for:
- Dispersing blobs to the EigenDA network.
- Flexible payment modalities: on-demand and reserved bandwidth.
As part of its essential data availability guarantee, the EigenDA network supports direct communication with the EigenDA validators for blob retrieval; permissionless dispersal of blobs to the EigenDA network is planned for a future protocol upgrade in later 2025.
The low level specification for the Disperser v2 API spec is disperser.proto, adjusted to the current release. The goal of this document is to explain this spec at a higher level.
Eigen Labs hosts one v2 disperser endpoint for each EigenDA network. These endpoints are documented in respective network pages for mainnet, Holesky, and Sepolia.
Disperser Endpoints
The EigenDA v2 Disperser exposes the endpoints:
DisperseBlob()
GetBlobStatus()
GetBlobCommitment()
GetPaymentStateForAllQuorums()
GetPaymentSate()
is deprecated. Use GetPaymentStateForAllQuorums()
.
Blob Dispersal Lifecycle
These endpoints enable the blob dispersal lifecycle, from enqueuing blobs for dispersal, to waiting for a DA certificate that meets the
client requested quorum thresholds. The Disperser offers an asynchronous API for dispersing blobs, where clients poll the GetBlobStatus()
endpoint with
the blob key they received from calling the DisperseBlob()
endpoint until the disperser reports the blob as
successfully dispersed and complete.
The following flowchart describes how move blobs through this lifecycle with respect to these endpoints:
The GetBlobStatus()
response includes the relay keys. Fetch the relay URL from
onchain in the EigenDARelayRegistry
contract as it is required rather than hard coding the current relay URL.
Here we provide a narrative-level description of the major API endpoints. Please see the repo adjusted to the current release, for detailed, field-level API documentation.
Retrieving Blobs
Blobs can be retrieved from:
- Relays
- Validators.
Generally it will be faster and easier to retrieve the unencoded blob directly from a relay, and end users should first attempt to retrieve data from a relay. Retrieving from a relay requires less bandwidth and computation, and has a higher capacity and lower average latency than retrieving from a validator. If all relays in possession of a blob go down or are maliciously withholding the data, the validators nodes are a reliable way to fetch the data (as only a fraction of the chunks distributed to validator nodes are needed to reconstruct the original data).
Relay Endpoints
The EigenDA Relay exposes the endpoints:
GetBlob()
GetChunks()
Here we provide a narrative-level description of the major API endpoints. Please see the repo adjusted to the current release, for detailed, field-level API documentation.
Validator Endpoints
The EigenDA Node exposes the retrieval endpoints:
RetrieveChunks()
GetBlobHeader()
NodeInfo()
Here we provide a narrative-level description of the major API endpoints. Please see the repo adjusted to the current release, for detailed, field-level API documentation.