pub struct AvidmGf2Scheme;Expand description
Dummy struct for AVID-M scheme over GF2
Implementations§
Source§impl AvidmGf2Scheme
impl AvidmGf2Scheme
Sourcepub fn setup(
recovery_threshold: usize,
total_weights: usize,
) -> Result<AvidmGf2Param, VidError>
pub fn setup( recovery_threshold: usize, total_weights: usize, ) -> Result<AvidmGf2Param, VidError>
Setup an instance for AVID-M scheme
Sourcepub fn shard_bytes(
payload_byte_len: usize,
original_count: usize,
) -> Option<usize>
pub fn shard_bytes( payload_byte_len: usize, original_count: usize, ) -> Option<usize>
Size in bytes of every shard of a payload_byte_len-byte payload
dispersed into original_count original shards: the fewest bytes that
hold the payload plus its pad byte, rounded up to the even size
reed_solomon_simd requires.
None if original_count is zero or the size overflows, so a verifier
can evaluate it on an untrusted length without panicking.
fn payload_shard_bytes( param: &AvidmGf2Param, payload_len: usize, ) -> Result<usize, VidError>
Sourcefn chunk_and_pad(
payload: &[u8],
shard_bytes: usize,
original_count: usize,
) -> Result<Vec<Cow<'_, [u8]>>, VidError>
fn chunk_and_pad( payload: &[u8], shard_bytes: usize, original_count: usize, ) -> Result<Vec<Cow<'_, [u8]>>, VidError>
Build the original_count original shards from payload, applying
the AvidM-GF2 bit padding (one 0x01 byte at payload.len() followed
by zeros to fill the final shard).
Full shards borrow from payload; only shards touching the padding are allocated.
Sourcefn encode_recovery(
param: &AvidmGf2Param,
original: &[Cow<'_, [u8]>],
) -> Result<Vec<Vec<u8>>, VidError>
fn encode_recovery( param: &AvidmGf2Param, original: &[Cow<'_, [u8]>], ) -> Result<Vec<Vec<u8>>, VidError>
Erasure-code the padded original shards, returning only the recovery shards.
fn merkle_tree<T: AsRef<[u8]> + Sync>( shards: &[T], ) -> Result<MerkleTree<Blake3Node, Blake3DigestAlgorithm, u64, 4, Blake3Node>, VidError>
Sourcefn raw_commit(
param: &AvidmGf2Param,
payload: &[u8],
) -> Result<MerkleTree<Blake3Node, Blake3DigestAlgorithm, u64, 4, Blake3Node>, VidError>
fn raw_commit( param: &AvidmGf2Param, payload: &[u8], ) -> Result<MerkleTree<Blake3Node, Blake3DigestAlgorithm, u64, 4, Blake3Node>, VidError>
Merkle tree over all shards of payload, hashing recovery shards in place in the encoder.
fn raw_disperse( param: &AvidmGf2Param, payload: &[u8], ) -> Result<(MerkleTree<Blake3Node, Blake3DigestAlgorithm, u64, 4, Blake3Node>, Vec<Vec<u8>>), VidError>
Trait Implementations§
Source§impl VidScheme for AvidmGf2Scheme
impl VidScheme for AvidmGf2Scheme
Source§type Param = AvidmGf2Param
type Param = AvidmGf2Param
Source§type Commit = AvidmGf2Commit
type Commit = AvidmGf2Commit
Source§fn commit(param: &Self::Param, payload: &[u8]) -> Result<Self::Commit, VidError>
fn commit(param: &Self::Param, payload: &[u8]) -> Result<Self::Commit, VidError>
payload without generating shares.Source§fn disperse(
param: &Self::Param,
distribution: &[u32],
payload: &[u8],
) -> Result<(Self::Commit, Vec<Self::Share>), VidError>
fn disperse( param: &Self::Param, distribution: &[u32], payload: &[u8], ) -> Result<(Self::Commit, Vec<Self::Share>), VidError>
payload according to the weights in distribution.share against the VID commit.Auto Trait Implementations§
impl Freeze for AvidmGf2Scheme
impl RefUnwindSafe for AvidmGf2Scheme
impl Send for AvidmGf2Scheme
impl Sync for AvidmGf2Scheme
impl Unpin for AvidmGf2Scheme
impl UnsafeUnpin for AvidmGf2Scheme
impl UnwindSafe for AvidmGf2Scheme
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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