//! Accumulators //! //! This module defines the Accumulator abstraction as well as the implementation details for //! several different accumulators. This library can be used for interacting with PythNet state //! proofs for account content. pub mod merkle; pub mod mul; /// The Accumulator trait defines the interface for an accumulator. /// /// This trait assumes an accumulator has an associated proof type that can be used to prove /// membership of a specific item. The choice to return Proof makes this the most generic /// implementation possible for any accumulator. pub trait Accumulator<'a> where Self: Sized, Self::Proof: 'a, Self::Proof: Sized, { type Proof; /// Prove an item is a member of the accumulator. fn prove(&'a self, item: &[u8]) -> Option; /// Verify an item is a member of the accumulator. fn check(&'a self, proof: Self::Proof, item: &[u8]) -> bool; /// Create an accumulator from a set of items. fn from_set(items: impl Iterator) -> Option; }