Get desktop application:
View/edit binary Protocol Buffers messages
StoreChunks validates that the chunks match what the Node is supposed to receive ( different Nodes are responsible for different chunks, as EigenDA is horizontally sharded) and is correctly coded (e.g. each chunk must be a valid KZG multiproof) according to the EigenDA protocol. It also stores the chunks along with metadata for the protocol-defined length of custody. It will return a signature at the end to attest to the data in this request it has processed.
Which batch this request is for.
The chunks for each blob in the batch to be stored in an EigenDA Node.
The operator's BLS signature signed on the batch header hash.
StoreBlobs is similar to StoreChunks, but it stores the blobs using a different storage schema so that the stored blobs can later be aggregated by AttestBatch method to a bigger batch. StoreBlobs + AttestBatch will eventually replace and deprecate StoreChunks method. DEPRECATED: StoreBlobs method is not used
Blobs to store
The reference block number whose state is used to encode the blobs
The operator's BLS sgnature signed on the blob header hashes. The ordering of the signatures must match the ordering of the blobs sent in the request, with empty signatures in the places for discarded blobs.
AttestBatch is used to aggregate the batches stored by StoreBlobs method to a bigger batch. It will return a signature at the end to attest to the aggregated batch. DEPRECATED: AttestBatch method is not used
header of the batch
the header hashes of all blobs in the batch
Retrieve node info metadata
RetrieveChunks retrieves the chunks for a blob custodied at the Node.
The hash of the ReducedBatchHeader defined onchain, see: https://github.com/Layr-Labs/eigenda/blob/master/contracts/src/interfaces/IEigenDAServiceManager.sol#L43 This identifies which batch to retrieve for.
Which blob in the batch to retrieve for (note: a batch is logically an ordered list of blobs).
Which quorum of the blob to retrieve for (note: a blob can have multiple quorums and the chunks for different quorums at a Node can be different). The ID must be in range [0, 254].
All chunks the Node is storing for the requested blob per RetrieveChunksRequest.
How the above chunks are encoded.
GetBlobHeader is similar to RetrieveChunks, this just returns the header of the blob.
See RetrieveChunksRequest for documentation of each parameter of GetBlobHeaderRequest.
The header of the blob requested per GetBlobHeaderRequest.
Merkle proof that returned blob header belongs to the batch and is the batch's MerkleProof.index-th blob. This can be checked against the batch root on chain.
Retrieve node info metadata
BatchHeader (see core/data.go#BatchHeader)
Used in:
,The root of the merkle tree with hashes of blob headers as leaves.
The Ethereum block number at which the batch is dispersed.
In EigenDA, the original blob to disperse is encoded as a polynomial via taking taking different point evaluations (i.e. erasure coding). These points are split into disjoint subsets which are assigned to different operator nodes in the EigenDA network. The data in this message is a subset of these points that are assigned to a single operator node.
Used in:
,Which (original) blob this is for.
Each bundle contains all chunks for a single quorum of the blob. The number of bundles must be equal to the total number of quorums associated with the blob, and the ordering must be the same as BlobHeader.quorum_headers. Note: an operator may be in some but not all of the quorums; in that case the bundle corresponding to that quorum will be empty.
Used in:
,The KZG commitment to the polynomial representing the blob.
The KZG commitment to the polynomial representing the blob on G2, it is used for proving the degree of the polynomial
The low degree proof. It's the KZG commitment to the polynomial shifted to the largest SRS degree.
The length of the original blob in number of symbols (in the field where the polynomial is defined).
The params of the quorums that this blob participates in.
The ID of the user who is dispersing this blob to EigenDA.
The reference block number whose state is used to encode the blob
See BlobQuorumParam as defined in api/proto/disperser/disperser.proto
Used in:
A Bundle is the collection of chunks associated with a single blob, for a single operator and a single quorum.
Used in:
Each chunk corresponds to a collection of points on the polynomial. Each chunk has same number of points.
All chunks of the bundle encoded in a byte array.
This describes how the chunks returned in RetrieveChunksReply are encoded. Used to facilitate the decoding of chunks.
Used in:
Used in:
The A0 element of the X coordinate of G2 point.
The A1 element of the X coordinate of G2 point.
The A0 element of the Y coordinate of G2 point.
The A1 element of the Y coordinate of G2 point.
Used in:
The proof itself.
Which index (the leaf of the Merkle tree) this proof is for.
Node info reply
Used as response type in: Dispersal.NodeInfo, Retrieval.NodeInfo
Node info request
Used as request type in: Dispersal.NodeInfo, Retrieval.NodeInfo
(message has no fields)