# [−][src]Struct bulletproofs::r1cs::verifier::Verifier

An entry point for verifying a R1CS proof.

The lifecycle of a `Verifier`

is as follows. The verifying code
provides high-level commitments one by one,
`Verifier`

adds them to the transcript and returns
the corresponding variables.

After all variables are committed, the verifying code calls `finalize_inputs`

,
which consumes `Verifier`

and returns `VerifierCS`

.
The verifying code then allocates low-level variables and adds constraints to the `VerifierCS`

.

When all constraints are added, the verifying code calls `verify`

on the instance of the constraint system to check the proof.

## Fields

`m: u64`

Number of high-level variables

`cs: VerifierCS<'a, 'b>`

Constraint system implementation

## Methods

`impl<'a, 'b> Verifier<'a, 'b>`

[src]

`pub fn new(`

bp_gens: &'b BulletproofGens,

pc_gens: &'b PedersenGens,

transcript: &'a mut Transcript

) -> Self

[src]

bp_gens: &'b BulletproofGens,

pc_gens: &'b PedersenGens,

transcript: &'a mut Transcript

) -> Self

Construct an empty constraint system with specified external input variables.

# Inputs

The `bp_gens`

and `pc_gens`

are generators for Bulletproofs
and for the Pedersen commitments, respectively. The
`BulletproofGens`

should have `gens_capacity`

greater than
the number of multiplication constraints that will eventually
be added into the constraint system.

The `transcript`

parameter is a Merlin proof transcript. The
`VerifierCS`

holds onto the `&mut Transcript`

until it consumes
itself during `VerifierCS::verify`

, releasing its borrow of the
transcript. This ensures that the transcript cannot be
altered except by the `VerifierCS`

before proving is complete.

The `commitments`

parameter is a list of Pedersen commitments
to the external variables for the constraint system. All
external variables must be passed up-front, so that challenges
produced by `ConstraintSystem::challenge_scalar`

are bound
to the external variables.

# Returns

Returns a tuple `(cs, vars)`

.

The first element is the newly constructed constraint system.

The second element is a list of `Variable`

s corresponding to
the external inputs, which can be used to form constraints.

`pub fn commit(&mut self, commitment: CompressedRistretto) -> Variable`

[src]

Creates commitment to a high-level variable and adds it to the transcript.

# Inputs

The `commitment`

parameter is a Pedersen commitment
to the external variable for the constraint system. All
external variables must be passed up-front, so that challenges
produced by `ConstraintSystem::challenge_scalar`

are bound
to the external variables.

# Returns

Returns a pair of a Pedersen commitment (as a compressed Ristretto point),
and a `Variable`

corresponding to it, which can be used to form constraints.

`pub fn finalize_inputs(self) -> VerifierCS<'a, 'b>`

[src]

Consume the `Verifier`

, provide the `ConstraintSystem`

implementation to the closure,
and verify the proof against the resulting constraint system.

## Auto Trait Implementations

## Blanket Implementations

`impl<T, U> Into for T where`

U: From<T>,

[src]

U: From<T>,

`impl<T> From for T`

[src]

`impl<T, U> TryFrom for T where`

U: Into<T>,

[src]

U: Into<T>,

`type Error = !`

`try_from`

)The type returned in the event of a conversion error.

`fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>`

[src]

`impl<T> Borrow for T where`

T: ?Sized,

[src]

T: ?Sized,

`impl<T, U> TryInto for T where`

U: TryFrom<T>,

[src]

U: TryFrom<T>,

`type Error = <U as TryFrom<T>>::Error`

`try_from`

)The type returned in the event of a conversion error.

`fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>`

[src]

`impl<T> Any for T where`

T: 'static + ?Sized,

[src]

T: 'static + ?Sized,

`impl<T> BorrowMut for T where`

T: ?Sized,

[src]

T: ?Sized,

`fn borrow_mut(&mut self) -> &mut T`

[src]

`impl<T> Same for T`

`type Output = T`

Should always be `Self`