pub struct RescueTranscript<F>where
F: RescueParameter,{ /* private fields */ }
Expand description
Transcript with rescue hash function.
It is currently implemented simply as
- an append only vector of field elements
- a state that is initialized with 0
We keep appending new elements to the transcript vector, and when a challenge is to be generated, we reset the state with the fresh challenge.
- state: [F: STATE_SIZE] = hash(state|transcript)
- challenge = state[0]
- transcript = vec![]
Trait Implementations§
Source§impl<F> PlonkTranscript<F> for RescueTranscript<F>where
F: RescueParameter + SWToTEConParam,
impl<F> PlonkTranscript<F> for RescueTranscript<F>where
F: RescueParameter + SWToTEConParam,
Source§fn new(_label: &'static [u8]) -> Self
fn new(_label: &'static [u8]) -> Self
Create a new plonk transcript. _label
is omitted for efficiency.
Source§fn append_message(
&mut self,
_label: &'static [u8],
msg: &[u8],
) -> Result<(), PlonkError>
fn append_message( &mut self, _label: &'static [u8], msg: &[u8], ) -> Result<(), PlonkError>
Append the message to the transcript. _label
is omitted for
efficiency.
Source§fn append_commitment<E, P>(
&mut self,
_label: &'static [u8],
comm: &Commitment<E>,
) -> Result<(), PlonkError>where
E: Pairing<BaseField = F, G1Affine = Affine<P>>,
P: SWParam<BaseField = F>,
fn append_commitment<E, P>(
&mut self,
_label: &'static [u8],
comm: &Commitment<E>,
) -> Result<(), PlonkError>where
E: Pairing<BaseField = F, G1Affine = Affine<P>>,
P: SWParam<BaseField = F>,
Append a single commitment to the transcript. _label
is omitted for
efficiency.
Source§fn get_challenge<E>(
&mut self,
_label: &'static [u8],
) -> Result<E::ScalarField, PlonkError>where
E: Pairing<BaseField = F>,
fn get_challenge<E>(
&mut self,
_label: &'static [u8],
) -> Result<E::ScalarField, PlonkError>where
E: Pairing<BaseField = F>,
Generate the challenge for the current transcript,
_label
is omitted for efficiency.
Source§fn append_vk_and_pub_input<E, P>(
&mut self,
vk: &VerifyingKey<E>,
pub_input: &[E::ScalarField],
) -> Result<(), PlonkError>where
E: Pairing<BaseField = F, G1Affine = Affine<P>>,
P: SWParam<BaseField = F>,
fn append_vk_and_pub_input<E, P>(
&mut self,
vk: &VerifyingKey<E>,
pub_input: &[E::ScalarField],
) -> Result<(), PlonkError>where
E: Pairing<BaseField = F, G1Affine = Affine<P>>,
P: SWParam<BaseField = F>,
Append the verification key and the public input to the transcript.
Source§fn append_field_elem<E>(
&mut self,
_label: &'static [u8],
challenge: &E::ScalarField,
) -> Result<(), PlonkError>where
E: Pairing<BaseField = F>,
fn append_field_elem<E>(
&mut self,
_label: &'static [u8],
challenge: &E::ScalarField,
) -> Result<(), PlonkError>where
E: Pairing<BaseField = F>,
Append a field element to the transcript.
Source§fn append_proof_evaluations<E: Pairing>(
&mut self,
evals: &ProofEvaluations<E::ScalarField>,
) -> Result<(), PlonkError>
fn append_proof_evaluations<E: Pairing>( &mut self, evals: &ProofEvaluations<E::ScalarField>, ) -> Result<(), PlonkError>
Append a proof evaluation to the transcript.
Source§fn append_plookup_evaluations<E: Pairing>(
&mut self,
evals: &PlookupEvaluations<E::ScalarField>,
) -> Result<(), PlonkError>
fn append_plookup_evaluations<E: Pairing>( &mut self, evals: &PlookupEvaluations<E::ScalarField>, ) -> Result<(), PlonkError>
Append the plookup evaluation to the transcript.
Source§fn append_commitments<E, P>(
&mut self,
label: &'static [u8],
comms: &[Commitment<E>],
) -> Result<(), PlonkError>where
E: Pairing<BaseField = F, G1Affine = Affine<P>>,
P: SWParam<BaseField = F>,
fn append_commitments<E, P>(
&mut self,
label: &'static [u8],
comms: &[Commitment<E>],
) -> Result<(), PlonkError>where
E: Pairing<BaseField = F, G1Affine = Affine<P>>,
P: SWParam<BaseField = F>,
Append a slice of commitments to the transcript.
Source§fn append_field_elems<E>(
&mut self,
label: &'static [u8],
fields: &[E::ScalarField],
) -> Result<(), PlonkError>where
E: Pairing<BaseField = F>,
fn append_field_elems<E>(
&mut self,
label: &'static [u8],
fields: &[E::ScalarField],
) -> Result<(), PlonkError>where
E: Pairing<BaseField = F>,
Append a list of field elements to the transcript
Source§fn get_n_challenges<E>(
&mut self,
labels: &[&'static [u8]],
) -> Result<Vec<E::ScalarField>, PlonkError>where
E: Pairing<BaseField = F>,
fn get_n_challenges<E>(
&mut self,
labels: &[&'static [u8]],
) -> Result<Vec<E::ScalarField>, PlonkError>where
E: Pairing<BaseField = F>,
Generate multiple challenges for the current round
Implementers should be careful about domain separation for each
challenge The default implementation assume
self.get_challenge()
already implements proper domain separation for each challenge
generation, thus simply call it multiple times.Auto Trait Implementations§
impl<F> Freeze for RescueTranscript<F>where
F: Freeze,
impl<F> RefUnwindSafe for RescueTranscript<F>where
F: RefUnwindSafe,
impl<F> Send for RescueTranscript<F>
impl<F> Sync for RescueTranscript<F>
impl<F> Unpin for RescueTranscript<F>where
F: Unpin,
impl<F> UnwindSafe for RescueTranscript<F>where
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more