# [−][src]Struct bulletproofs::r1cs::R1CSProof

A proof of some statement specified by a
`ConstraintSystem`

.

Statements are specified by writing gadget functions which add
constraints to a `ConstraintSystem`

implementation. To construct an `R1CSProof`

, a prover constructs
a `ProverCS`

, then passes it to gadget
functions to build the constraint system, then consumes the
constraint system using
`ProverCS::prove`

to produce an
`R1CSProof`

. To verify an `R1CSProof`

, a verifier constructs a
`VerifierCS`

, then passes it to the same
gadget functions to (re)build the constraint system, then consumes
the constraint system using
`VerifierCS::verify`

to verify the
proof.

## Methods

`impl R1CSProof`

[src]

`pub fn to_bytes(&self) -> Vec<u8>`

[src]

Serializes the proof into a byte array of 1 version byte + \((13 or 16) + 2k\) 32-byte elements, where \(k=\lceil \log_2(n) \rceil\) and \(n\) is the number of multiplication gates.

# Layout

The layout of the r1cs proof encoding is:

- 1 version byte indicating whether the proof contains second-phase commitments or not,
- 8 or 11 compressed Ristretto points \(A_{I1},A_{O1},S_1,(A_{I2},A_{O2},S_2),T_1,...,T_6\) (\(A_{I2},A_{O2},S_2\) are skipped if there were no multipliers added in the randomized phase),
- three scalars \(t_x, \tilde{t}_x, \tilde{e}\),
- \(k\) pairs of compressed Ristretto points \(L_0,R_0\dots,L_{k-1},R_{k-1}\),
- two scalars \(a, b\).

`pub fn serialized_size(&self) -> usize`

[src]

Returns the size in bytes required to serialize the `R1CSProof`

.

`pub fn from_bytes(slice: &[u8]) -> Result<R1CSProof, R1CSError>`

[src]

Deserializes the proof from a byte slice.

Returns an error if the byte slice cannot be parsed into a `R1CSProof`

.

## Trait Implementations

`impl Clone for R1CSProof`

[src]

`fn clone(&self) -> R1CSProof`

[src]

`fn clone_from(&mut self, source: &Self)`

1.0.0[src]

Performs copy-assignment from `source`

. Read more

`impl Debug for R1CSProof`

[src]

`impl<'de> Deserialize<'de> for R1CSProof`

[src]

`fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where`

D: Deserializer<'de>,

[src]

D: Deserializer<'de>,

`impl Serialize for R1CSProof`

[src]

## Auto Trait Implementations

## Blanket Implementations

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

U: From<T>,

[src]

U: From<T>,

`impl<T> ToOwned for T where`

T: Clone,

[src]

T: Clone,

`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`

`impl<T> DeserializeOwned for T where`

T: Deserialize<'de>,

[src]

T: Deserialize<'de>,