Struct halo2_proofs::plonk::ProvingKey  
source · [−]pub struct ProvingKey<C: CurveAffine> { /* private fields */ }Expand description
This is a proving key which allows for the creation of proofs for a particular circuit.
Implementations
sourceimpl<C: CurveAffine> ProvingKey<C>
 
impl<C: CurveAffine> ProvingKey<C>
sourcepub fn get_vk(&self) -> &VerifyingKey<C>
 
pub fn get_vk(&self) -> &VerifyingKey<C>
Get the underlying VerifyingKey.
sourceimpl<C: SerdeCurveAffine> ProvingKey<C>where
    C::Scalar: SerdePrimeField,
 
impl<C: SerdeCurveAffine> ProvingKey<C>where
    C::Scalar: SerdePrimeField,
sourcepub fn write<W: Write>(&self, writer: &mut W, format: SerdeFormat) -> Result<()>
 
pub fn write<W: Write>(&self, writer: &mut W, format: SerdeFormat) -> Result<()>
Writes a proving key to a buffer.
Writes a curve element according to format:
Processed: Writes a compressed curve element with coordinates in standard form. Writes a field element in standard form, with endianness specified by thePrimeFieldimplementation.- Otherwise: Writes an uncompressed curve element with coordinates in Montgomery form Writes a field element into raw bytes in its internal Montgomery representation, WITHOUT performing the expensive Montgomery reduction. Does so by first writing the verifying key and then serializing the rest of the data (in the form of field polynomials)
 
sourcepub fn read<R: Read, ConcreteCircuit: Circuit<C::Scalar>>(
    reader: &mut R,
    format: SerdeFormat
) -> Result<Self>
 
pub fn read<R: Read, ConcreteCircuit: Circuit<C::Scalar>>(
    reader: &mut R,
    format: SerdeFormat
) -> Result<Self>
Reads a proving key from a buffer. Does so by reading verification key first, and then deserializing the rest of the file into the remaining proving key data.
Reads a curve element from the buffer and parses it according to the format:
Processed: Reads a compressed curve element and decompresses it. Reads a field element in standard form, with endianness specified by thePrimeFieldimplementation, and checks that the element is less than the modulus.RawBytes: Reads an uncompressed curve element with coordinates in Montgomery form. Checks that field elements are less than modulus, and then checks that the point is on the curve.RawBytesUnchecked: Reads an uncompressed curve element with coordinates in Montgomery form; does not perform any checks
sourcepub fn to_bytes(&self, format: SerdeFormat) -> Vec<u8>
 
pub fn to_bytes(&self, format: SerdeFormat) -> Vec<u8>
Writes a proving key to a vector of bytes using Self::write.
sourcepub fn from_bytes<ConcreteCircuit: Circuit<C::Scalar>>(
    bytes: &[u8],
    format: SerdeFormat
) -> Result<Self>
 
pub fn from_bytes<ConcreteCircuit: Circuit<C::Scalar>>(
    bytes: &[u8],
    format: SerdeFormat
) -> Result<Self>
Reads a proving key from a slice of bytes using Self::read.
Trait Implementations
sourceimpl<C: Clone + CurveAffine> Clone for ProvingKey<C>where
    C::Scalar: Clone,
    C::Scalar: Clone,
    C::Scalar: Clone,
    C::Scalar: Clone,
    C::Scalar: Clone,
    C::Scalar: Clone,
 
impl<C: Clone + CurveAffine> Clone for ProvingKey<C>where
    C::Scalar: Clone,
    C::Scalar: Clone,
    C::Scalar: Clone,
    C::Scalar: Clone,
    C::Scalar: Clone,
    C::Scalar: Clone,
sourcefn clone(&self) -> ProvingKey<C>
 
fn clone(&self) -> ProvingKey<C>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from 
source. Read moreAuto Trait Implementations
impl<C> RefUnwindSafe for ProvingKey<C>where
    C: RefUnwindSafe,
    <C as CurveAffine>::ScalarExt: RefUnwindSafe,
impl<C> Send for ProvingKey<C>
impl<C> Sync for ProvingKey<C>
impl<C> Unpin for ProvingKey<C>where
    C: Unpin,
    <C as CurveAffine>::ScalarExt: Unpin,
impl<C> UnwindSafe for ProvingKey<C>where
    C: UnwindSafe,
    <C as CurveAffine>::ScalarExt: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> FmtForward for T
impl<T> FmtForward for T
fn fmt_binary(self) -> FmtBinary<Self>where
    Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
    Self: Binary,
Causes 
self to use its Binary implementation when Debug-formatted.fn fmt_display(self) -> FmtDisplay<Self>where
    Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
    Self: Display,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
    Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
    Self: LowerExp,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
    Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
    Self: LowerHex,
fn fmt_octal(self) -> FmtOctal<Self>where
    Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
    Self: Octal,
Causes 
self to use its Octal implementation when Debug-formatted.fn fmt_pointer(self) -> FmtPointer<Self>where
    Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
    Self: Pointer,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
    Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
    Self: UpperExp,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
    Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
    Self: UpperHex,
fn fmt_list(self) -> FmtList<Self>where
    &'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
    &'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
sourceimpl<T> Instrument for T
 
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
impl<T> Pipe for Twhere
    T: ?Sized,
impl<T> Pipe for Twhere
    T: ?Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
    Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
    Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
    R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
    R: 'a,
Borrows 
self and passes that borrow into the pipe function. Read morefn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
    R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
    R: 'a,
Mutably borrows 
self and passes that borrow into the pipe function. Read morefn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
    Self: Borrow<B>,
    B: 'a + ?Sized,
    R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
    Self: Borrow<B>,
    B: 'a + ?Sized,
    R: 'a,
fn pipe_borrow_mut<'a, B, R>(
    &'a mut self,
    func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
    Self: BorrowMut<B>,
    B: 'a + ?Sized,
    R: 'a,
fn pipe_borrow_mut<'a, B, R>(
    &'a mut self,
    func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
    Self: BorrowMut<B>,
    B: 'a + ?Sized,
    R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
    Self: AsRef<U>,
    U: 'a + ?Sized,
    R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
    Self: AsRef<U>,
    U: 'a + ?Sized,
    R: 'a,
Borrows 
self, then passes self.as_ref() into the pipe function.fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
    Self: AsMut<U>,
    U: 'a + ?Sized,
    R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
    Self: AsMut<U>,
    U: 'a + ?Sized,
    R: 'a,
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere
    Self: Deref<Target = T>,
    T: 'a + ?Sized,
    R: 'a,
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere
    Self: Deref<Target = T>,
    T: 'a + ?Sized,
    R: 'a,
Borrows 
self, then passes self.deref() into the pipe function.impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Tap for T
impl<T> Tap for T
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
    Self: Borrow<B>,
    B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
    Self: Borrow<B>,
    B: ?Sized,
Immutable access to the 
Borrow<B> of a value. Read morefn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
    Self: BorrowMut<B>,
    B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
    Self: BorrowMut<B>,
    B: ?Sized,
Mutable access to the 
BorrowMut<B> of a value. Read morefn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
    Self: AsRef<R>,
    R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
    Self: AsRef<R>,
    R: ?Sized,
Immutable access to the 
AsRef<R> view of a value. Read morefn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
    Self: AsMut<R>,
    R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
    Self: AsMut<R>,
    R: ?Sized,
Mutable access to the 
AsMut<R> view of a value. Read morefn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
    Self: Deref<Target = T>,
    T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
    Self: Deref<Target = T>,
    T: ?Sized,
Immutable access to the 
Deref::Target of a value. Read morefn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
    Self: DerefMut<Target = T> + Deref,
    T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
    Self: DerefMut<Target = T> + Deref,
    T: ?Sized,
Mutable access to the 
Deref::Target of a value. Read morefn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls 
.tap() only in debug builds, and is erased in release builds.fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls 
.tap_mut() only in debug builds, and is erased in release
builds. Read morefn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
    Self: Borrow<B>,
    B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
    Self: Borrow<B>,
    B: ?Sized,
Calls 
.tap_borrow() only in debug builds, and is erased in release
builds. Read morefn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
    Self: BorrowMut<B>,
    B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
    Self: BorrowMut<B>,
    B: ?Sized,
Calls 
.tap_borrow_mut() only in debug builds, and is erased in release
builds. Read morefn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
    Self: AsRef<R>,
    R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
    Self: AsRef<R>,
    R: ?Sized,
Calls 
.tap_ref() only in debug builds, and is erased in release
builds. Read morefn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
    Self: AsMut<R>,
    R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
    Self: AsMut<R>,
    R: ?Sized,
Calls 
.tap_ref_mut() only in debug builds, and is erased in release
builds. Read more