pub struct ShardSet {
pub pack_hash: Hash,
pub config: Config,
pub shard_hashes: Vec<Hash>,
pub commitment: Hash,
}Expand description
Manifest describing a set of shards encoding one pack.
In the wire protocol this is published alongside the shards under
/packs/<pack_hash>/shards.manifest (see SPEC-PACK-SHARDS §2). A
consumer fetches the manifest first, then fetches up to
config.total_shards() shards in parallel, rejecting any whose
BLAKE3 hash does not match.
Fields§
§pack_hash: HashBLAKE3 of the original pack bytes. Verified after reconstruction as the final defence against shard-set forgery.
config: ConfigReed-Solomon (minimum_shards, extra_shards) configuration used
to produce this shard set. The decoder MUST use the same
configuration.
shard_hashes: Vec<Hash>BLAKE3 of each shard’s bytes, indexed by shard index.
shard_hashes.len() MUST equal config.total_shards().
commitment: HashCommonware BMT root committing to all shards. Required by the commonware decoder for per-shard Merkle-proof checks. Stored here so the manifest is self-contained — a receiver does not need a second round-trip to fetch the commitment.
Trait Implementations§
impl Eq for ShardSet
impl StructuralPartialEq for ShardSet
Auto Trait Implementations§
impl Freeze for ShardSet
impl RefUnwindSafe for ShardSet
impl Send for ShardSet
impl Sync for ShardSet
impl Unpin for ShardSet
impl UnsafeUnpin for ShardSet
impl UnwindSafe for ShardSet
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more