pub trait VidScheme {
type Param: Send + Sync + Serialize + for<'a> Deserialize<'a>;
type Share: Send + Sync + Serialize + for<'a> Deserialize<'a>;
type Commit: Eq + PartialEq + Send + Sync + Serialize + for<'a> Deserialize<'a>;
// Required methods
fn commit(
param: &Self::Param,
payload: &[u8],
) -> Result<Self::Commit, VidError>;
fn disperse(
param: &Self::Param,
distribution: &[u32],
payload: &[u8],
) -> Result<(Self::Commit, Vec<Self::Share>), VidError>;
fn verify_share(
param: &Self::Param,
commit: &Self::Commit,
share: &Self::Share,
) -> Result<Result<(), ()>, VidError>;
fn recover(
param: &Self::Param,
commit: &Self::Commit,
shares: &[Self::Share],
) -> Result<Vec<u8>, VidError>;
}
Expand description
Trait definition for a Verifiable Information Dispersal (VID) scheme.
Required Associated Types§
VID Share type
Required Methods§
Sourcefn commit(param: &Self::Param, payload: &[u8]) -> Result<Self::Commit, VidError>
fn commit(param: &Self::Param, payload: &[u8]) -> Result<Self::Commit, VidError>
Commit to a payload
without generating shares.
Sourcefn 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>
Disperse the given payload
according to the weights in distribution
.
Verify the given VID share
against the VID commit
.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.