Trait filecoin_proofs::types::MerkleTreeTrait

source ·
pub trait MerkleTreeTrait: Send + Sync + Debug {
    type Arity: 'static + PoseidonArity;
    type SubTreeArity: 'static + PoseidonArity;
    type TopTreeArity: 'static + PoseidonArity;
    type Hasher: 'static + Hasher;
    type Store: Store<<Self::Hasher as Hasher>::Domain>;
    type Proof: MerkleProofTrait<Hasher = Self::Hasher, Arity = Self::Arity, SubTreeArity = Self::SubTreeArity, TopTreeArity = Self::TopTreeArity>;

    // Required methods
    fn display() -> String;
    fn root(&self) -> <Self::Hasher as Hasher>::Domain;
    fn gen_proof(&self, index: usize) -> Result<Self::Proof, Error>;
    fn gen_cached_proof(
        &self,
        i: usize,
        rows_to_discard: Option<usize>,
    ) -> Result<Self::Proof, Error>;
    fn row_count(&self) -> usize;
    fn leaves(&self) -> usize;
    fn from_merkle(
        tree: MerkleTree<<Self::Hasher as Hasher>::Domain, <Self::Hasher as Hasher>::Function, Self::Store, Self::Arity, Self::SubTreeArity, Self::TopTreeArity>,
    ) -> Self;
}
Expand description

Trait used to abstract over the way Merkle Trees are constructed and stored.

Required Associated Types§

source

type Arity: 'static + PoseidonArity

source

type SubTreeArity: 'static + PoseidonArity

source

type TopTreeArity: 'static + PoseidonArity

source

type Hasher: 'static + Hasher

source

type Store: Store<<Self::Hasher as Hasher>::Domain>

source

type Proof: MerkleProofTrait<Hasher = Self::Hasher, Arity = Self::Arity, SubTreeArity = Self::SubTreeArity, TopTreeArity = Self::TopTreeArity>

Required Methods§

source

fn display() -> String

Print a unique name for this configuration.

source

fn root(&self) -> <Self::Hasher as Hasher>::Domain

Returns the root hash of the tree.

source

fn gen_proof(&self, index: usize) -> Result<Self::Proof, Error>

Creates a merkle proof of the node at the given index.

source

fn gen_cached_proof( &self, i: usize, rows_to_discard: Option<usize>, ) -> Result<Self::Proof, Error>

source

fn row_count(&self) -> usize

source

fn leaves(&self) -> usize

source

fn from_merkle( tree: MerkleTree<<Self::Hasher as Hasher>::Domain, <Self::Hasher as Hasher>::Function, Self::Store, Self::Arity, Self::SubTreeArity, Self::TopTreeArity>, ) -> Self

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<H, S, U, V, W> MerkleTreeTrait for MerkleTreeWrapper<H, S, U, V, W>
where H: 'static + Hasher, S: Store<<H as Hasher>::Domain>, U: 'static + PoseidonArity, V: 'static + PoseidonArity, W: 'static + PoseidonArity,