Trait storage_proofs_core::proof::ProofScheme
source · pub trait ProofScheme<'a> {
type PublicParams: Clone;
type SetupParams: Clone;
type PublicInputs: Clone + Serialize + DeserializeOwned;
type PrivateInputs;
type Proof: Clone + Serialize + DeserializeOwned;
type Requirements: Default;
// Required methods
fn setup(_: &Self::SetupParams) -> Result<Self::PublicParams>;
fn prove(
_: &Self::PublicParams,
_: &Self::PublicInputs,
_: &Self::PrivateInputs,
) -> Result<Self::Proof>;
// Provided methods
fn prove_all_partitions(
pub_params: &Self::PublicParams,
pub_in: &Self::PublicInputs,
priv_in: &Self::PrivateInputs,
partition_count: usize,
) -> Result<Vec<Self::Proof>> { ... }
fn verify(
_pub_params: &Self::PublicParams,
_pub_inputs: &Self::PublicInputs,
_proof: &Self::Proof,
) -> Result<bool> { ... }
fn verify_all_partitions(
pub_params: &Self::PublicParams,
pub_in: &Self::PublicInputs,
proofs: &[Self::Proof],
) -> Result<bool> { ... }
fn with_partition(
pub_in: Self::PublicInputs,
_k: Option<usize>,
) -> Self::PublicInputs { ... }
fn satisfies_requirements(
_pub_params: &Self::PublicParams,
_requirements: &Self::Requirements,
_partitions: usize,
) -> bool { ... }
}
Expand description
The ProofScheme trait provides the methods that any proof scheme needs to implement.
Required Associated Types§
type PublicParams: Clone
type SetupParams: Clone
type PublicInputs: Clone + Serialize + DeserializeOwned
type PrivateInputs
type Proof: Clone + Serialize + DeserializeOwned
type Requirements: Default
Required Methods§
sourcefn setup(_: &Self::SetupParams) -> Result<Self::PublicParams>
fn setup(_: &Self::SetupParams) -> Result<Self::PublicParams>
setup is used to generate public parameters from setup parameters in order to specialize a ProofScheme to the specific parameters required by a consumer.
sourcefn prove(
_: &Self::PublicParams,
_: &Self::PublicInputs,
_: &Self::PrivateInputs,
) -> Result<Self::Proof>
fn prove( _: &Self::PublicParams, _: &Self::PublicInputs, _: &Self::PrivateInputs, ) -> Result<Self::Proof>
prove generates and returns a proof from public parameters, public inputs, and private inputs.
Provided Methods§
fn prove_all_partitions( pub_params: &Self::PublicParams, pub_in: &Self::PublicInputs, priv_in: &Self::PrivateInputs, partition_count: usize, ) -> Result<Vec<Self::Proof>>
sourcefn verify(
_pub_params: &Self::PublicParams,
_pub_inputs: &Self::PublicInputs,
_proof: &Self::Proof,
) -> Result<bool>
fn verify( _pub_params: &Self::PublicParams, _pub_inputs: &Self::PublicInputs, _proof: &Self::Proof, ) -> Result<bool>
verify returns true if the supplied proof is valid for the given public parameter and public inputs. Note that verify does not have access to private inputs. Remember that proof is untrusted, and any data it provides MUST be validated as corresponding to the supplied public parameters and inputs.
fn verify_all_partitions( pub_params: &Self::PublicParams, pub_in: &Self::PublicInputs, proofs: &[Self::Proof], ) -> Result<bool>
fn with_partition( pub_in: Self::PublicInputs, _k: Option<usize>, ) -> Self::PublicInputs
fn satisfies_requirements( _pub_params: &Self::PublicParams, _requirements: &Self::Requirements, _partitions: usize, ) -> bool
Object Safety§
This trait is not object safe.