Expand description
Verifiable information dispersal (VID) for the new protocol.
A block’s payload is erasure-coded per namespace and spread across the committee so the block can be recovered from any subset of storage nodes whose shards cover the recovery threshold. This module owns the three stages of that lifecycle, one per submodule:
-
disperse– the leader side. The block builder erasure-codes each namespace into aBuiltDispersaland folds the payload commitment from it.VidDispersercoalesces namespaces into size-balanced buckets and unicasts to every node a stream ofAvidmGf2DisperseShareFragmentmessages (one per bucket), each carrying that node’s shares for the bucket’s namespaces. Without a built dispersal it erasure-codes the namespaces itself. -
fragments– the receive side of dispersal, the mirror ofVidDisperser.VidFragmentAccumulatorbuffers the fragments a node receives for its own share and, once every namespace has arrived, reassembles them into a completeVidDisperseShare2. That share is then verified, attached to this node’s vote, and fed to the reconstructor. -
reconstruct– block recovery.VidReconstructorcollects the verified shares contributed by many voters (each node’s own share, carried on its vote) and decodes the payload once their shards cover the recovery threshold.
Modules§
- disperse 🔒
- fragments 🔒
- reconstruct 🔒
Structs§
- Built
Dispersal - A block’s dispersal, computed by the block builder together with its commitment, so the disperser only signs and sends it.
- Obtained
Payload - A block’s payload in hand, with what the node needs to file it.
- VidDisperse
Output - VidDisperse
Request - VidDisperser
- VidFragment
Accumulator - VidReconstruct
Error - A failed reconstruction attempt for one view and claimed commitment.
- VidReconstructor
Enums§
- Dispersal
- A block for
disperse_payloadto send. - Pinned
By - What vouches for the proposal a view is pinned to.
- VidDisperse
Error - VidFragment
Error - VidReconstruct
Error Kind - Why a reconstruction attempt failed.
Functions§
- disperse_
payload - Signs a block’s dispersal and hands every recipient’s fragment of each bucket of namespaces to
send, which the disperser points at the network. ADispersal::Encodeis erasure-coded bucket by bucket first. Theblock_buildbench in espresso-types passes asendthat only serializes; the spans time each step. - expected_
vid_ param - The VID erasure parameters the committee for
epochfixes, matching what an honest disperser derives. Used to reject shares whosecommon.paramis forged (the commitment bindsns_commits, notparam) and to verify payloads fetched whole.Noneif the committee cannot be resolved. - ns_
lens_ 🔒match_ metadata - Whether
common.ns_lensare the namespace lengths an honest disperser derives from the header’s namespace tablens_tableat the payload length the common claims, which the table must be sized for if it is one.