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.