Overview
To disperse and retrieve payloads, there are three options:
- Run a proxy server and use the REST API. This is the simplest option to implement.
- Use the golang or rust client with the gRPC API and onchain interfaces.
- Write your own client to use with the gRPC API and onchain interfaces.
Advanced usecases might require using the clients directly (that is, option 2 or 3 above). For example, ZKsync prefered to keep their ZK Stack sequencer as a single binary and didn't want to have to spin up a sidecar process for the proxy. So they opted to integrate with our rust client directly in their DA dispatcher code. For most users, we recommend making use of the EigenDA proxy. This is how Arbitrum Nitroand Op Stack integrations work.
The below diagram documents the different ways to interface with the EigenDA disperser.
Proxy with REST API
The EigenDA Proxy is a proxy server that can be spun up to provide a simple REST API to simplify interacting with the EigenDA Network. It handles the payment state, blob status polling, and cert verification for you, and provides a simple interface for dispersing and retrieving blobs. We recommend most users make use of the proxy, as it simplifies the integration process significantly.
Clients
We provide golang and rust clients to simplify the integration process.
gRPC API
The EigenDA Disperser provides a gRPC API with 4 RPC methods. See the protobuf definitions for full details. This API is asynchronous and requires managing payment state and polling for blob status, until a cert is available. Furthermore, a payload must be encoded into an EigenDA blob before it can be dispersed (see the V2 integration spec for full details).