pub trait BlobAdmissionIsBounded: CorrectValidator { }Expand description
Lemma (Unpaid blob storage is bounded). A validator’s storage of blobs that no certified block references is bounded, so pushing data at a validator buys neither storage nor availability.
This is the companion to BlobRetention. Retention says a certified block’s blobs stay
available; without a matching bound on uncertified ones, “blobs are available” would be an
invitation to store anything for free.
Proof. Blobs arrive ahead of certification only through
ChainWorkerState::handle_pending_blob, which admits one only if it is expected: it must
belong to a pending proposal or validated block for this chain, or the call fails with
WorkerError::UnexpectedBlob. Admission is then bounded twice over by the committee’s
ResourceControlPolicy — in count, ensure!(count < policy.maximum_published_blobs) with
WorkerError::TooManyPublishedBlobs, and in size, by check_blob_size against
maximum_blob_size. The staging areas themselves are per-chain view state
(pending_proposed_blobs, pending_validated_blobs) and are cleared when the chain manager is
reset for the next height.
Publication that does survive is charged: the policy prices it at blob_published per blob and
blob_byte_published per byte, paid by the block that publishes it. ∎
The economic side is out of scope. That those prices cover the cost of keeping a blob for
as long as BlobRetention requires is an economic question this specification does not
address; it treats the fee schedule as given.