Struct ark_marlin::ahp::AHPForR1CS [−][src]
The algebraic holographic proof defined in CHMMVW19. Currently, this AHP only supports inputs of size one less than a power of 2 (i.e., of the form 2^n - 1).
Implementations
impl<F: PrimeField> AHPForR1CS<F>
[src]
pub fn index<C: ConstraintSynthesizer<F>>(c: C) -> Result<Index<F>, Error>
[src]
Generate the index for this constraint system.
impl<F: PrimeField> AHPForR1CS<F>
[src]
pub fn prover_init<'a, C: ConstraintSynthesizer<F>>(
index: &'a Index<F>,
c: C
) -> Result<ProverState<'a, F>, Error>
[src]
index: &'a Index<F>,
c: C
) -> Result<ProverState<'a, F>, Error>
Initialize the AHP prover.
pub fn prover_first_round<'a, R: RngCore>(
state: ProverState<'a, F>,
rng: &mut R
) -> Result<(ProverMsg<F>, ProverFirstOracles<F>, ProverState<'a, F>), Error>
[src]
state: ProverState<'a, F>,
rng: &mut R
) -> Result<(ProverMsg<F>, ProverFirstOracles<F>, ProverState<'a, F>), Error>
Output the first round message and the next state.
pub fn prover_num_first_round_oracles() -> usize
[src]
Output the number of oracles sent by the prover in the first round.
pub fn prover_first_round_degree_bounds(
_info: &IndexInfo<F>
) -> impl Iterator<Item = Option<usize>>
[src]
_info: &IndexInfo<F>
) -> impl Iterator<Item = Option<usize>>
Output the degree bounds of oracles in the first round.
pub fn prover_second_round<'a, R: RngCore>(
ver_message: &VerifierFirstMsg<F>,
state: ProverState<'a, F>,
_r: &mut R
) -> (ProverMsg<F>, ProverSecondOracles<F>, ProverState<'a, F>)
[src]
ver_message: &VerifierFirstMsg<F>,
state: ProverState<'a, F>,
_r: &mut R
) -> (ProverMsg<F>, ProverSecondOracles<F>, ProverState<'a, F>)
Output the second round message and the next state.
pub fn prover_num_second_round_oracles() -> usize
[src]
Output the number of oracles sent by the prover in the second round.
pub fn prover_second_round_degree_bounds(
info: &IndexInfo<F>
) -> impl Iterator<Item = Option<usize>>
[src]
info: &IndexInfo<F>
) -> impl Iterator<Item = Option<usize>>
Output the degree bounds of oracles in the second round.
pub fn prover_third_round<'a, R: RngCore>(
ver_message: &VerifierSecondMsg<F>,
prover_state: ProverState<'a, F>,
_r: &mut R
) -> Result<(ProverMsg<F>, ProverThirdOracles<F>), Error>
[src]
ver_message: &VerifierSecondMsg<F>,
prover_state: ProverState<'a, F>,
_r: &mut R
) -> Result<(ProverMsg<F>, ProverThirdOracles<F>), Error>
Output the third round message and the next state.
pub fn prover_num_third_round_oracles() -> usize
[src]
Output the number of oracles sent by the prover in the third round.
pub fn prover_third_round_degree_bounds(
info: &IndexInfo<F>
) -> impl Iterator<Item = Option<usize>>
[src]
info: &IndexInfo<F>
) -> impl Iterator<Item = Option<usize>>
Output the degree bounds of oracles in the third round.
impl<F: PrimeField> AHPForR1CS<F>
[src]
pub fn verifier_first_round<R: RngCore>(
index_info: IndexInfo<F>,
rng: &mut R
) -> Result<(VerifierFirstMsg<F>, VerifierState<F>), Error>
[src]
index_info: IndexInfo<F>,
rng: &mut R
) -> Result<(VerifierFirstMsg<F>, VerifierState<F>), Error>
Output the first message and next round state.
pub fn verifier_second_round<R: RngCore>(
state: VerifierState<F>,
rng: &mut R
) -> (VerifierSecondMsg<F>, VerifierState<F>)
[src]
state: VerifierState<F>,
rng: &mut R
) -> (VerifierSecondMsg<F>, VerifierState<F>)
Output the second message and next round state.
pub fn verifier_third_round<R: RngCore>(
state: VerifierState<F>,
rng: &mut R
) -> VerifierState<F>
[src]
state: VerifierState<F>,
rng: &mut R
) -> VerifierState<F>
Output the third message and next round state.
pub fn verifier_query_set<'a, R: RngCore>(
state: VerifierState<F>,
_: &'a mut R
) -> (QuerySet<F>, VerifierState<F>)
[src]
state: VerifierState<F>,
_: &'a mut R
) -> (QuerySet<F>, VerifierState<F>)
Output the query state and next round state.
impl<F: PrimeField> AHPForR1CS<F>
[src]
pub const INDEXER_POLYNOMIALS: [&'static str; 12]
[src]
The labels for the polynomials output by the AHP indexer.
pub const PROVER_POLYNOMIALS: [&'static str; 9]
[src]
The labels for the polynomials output by the AHP prover.
pub const LC_WITH_ZERO_EVAL: [&'static str; 2]
[src]
THe linear combinations that are statically known to evaluate to zero.
pub fn num_formatted_public_inputs_is_admissible(num_inputs: usize) -> bool
[src]
Check that the (formatted) public input is of the form 2^n for some integer n.
pub fn formatted_public_input_is_admissible(input: &[F]) -> bool
[src]
Check that the (formatted) public input is of the form 2^n for some integer n.
pub fn max_degree(
num_constraints: usize,
num_variables: usize,
num_non_zero: usize
) -> Result<usize, Error>
[src]
num_constraints: usize,
num_variables: usize,
num_non_zero: usize
) -> Result<usize, Error>
The maximum degree of polynomials produced by the indexer and prover of this protocol. The number of the variables must include the “one” variable. That is, it must be with respect to the number of formatted public inputs.
pub fn get_degree_bounds(info: &IndexInfo<F>) -> [usize; 2]
[src]
Get all the strict degree bounds enforced in the AHP.
pub fn construct_linear_combinations<E>(
public_input: &[F],
evals: &E,
state: &VerifierState<F>
) -> Result<Vec<LinearCombination<F>>, Error> where
E: EvaluationsProvider<F>,
[src]
public_input: &[F],
evals: &E,
state: &VerifierState<F>
) -> Result<Vec<LinearCombination<F>>, Error> where
E: EvaluationsProvider<F>,
Construct the linear combinations that are checked by the AHP.
Auto Trait Implementations
impl<F> RefUnwindSafe for AHPForR1CS<F> where
F: RefUnwindSafe,
F: RefUnwindSafe,
impl<F> Send for AHPForR1CS<F>
impl<F> Sync for AHPForR1CS<F>
impl<F> Unpin for AHPForR1CS<F> where
F: Unpin,
F: Unpin,
impl<F> UnwindSafe for AHPForR1CS<F> where
F: UnwindSafe,
F: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Pointable for T
pub const ALIGN: usize
type Init = T
The type for initializers.
pub unsafe fn init(init: <T as Pointable>::Init) -> usize
pub unsafe fn deref<'a>(ptr: usize) -> &'a T
pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
pub unsafe fn drop(ptr: usize)
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,