Struct arecibo::spartan::batched::BatchedRelaxedR1CSSNARK
source · pub struct BatchedRelaxedR1CSSNARK<E: Engine, EE: EvaluationEngineTrait<E>> { /* private fields */ }
Expand description
A succinct proof of knowledge of a witness to a batch of relaxed R1CS instances The proof is produced using Spartan’s combination of the sum-check and the commitment to a vector viewed as a polynomial commitment
-Trait Implementations§
source§impl<E: Engine, EE: EvaluationEngineTrait<E>> BatchedRelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
impl<E: Engine, EE: EvaluationEngineTrait<E>> BatchedRelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
type VerifierKey = VerifierKey<E, EE>
Trait Implementations§
source§impl<E: Engine, EE: EvaluationEngineTrait<E>> BatchedRelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
impl<E: Engine, EE: EvaluationEngineTrait<E>> BatchedRelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
type VerifierKey = VerifierKey<E, EE>
source§fn setup(
ck: Arc<<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey>,
S: Vec<&R1CSShape<E>>
-) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
fn setup( ck: Arc<<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey>, S: Vec<&R1CSShape<E>> -) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
source§fn prove(
+) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
fn prove( +) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
source§fn prove(
ck: &<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey,
pk: &Self::ProverKey,
S: Vec<&R1CSShape<E>>,
U: &[RelaxedR1CSInstance<E>],
W: &[RelaxedR1CSWitness<E>]
-) -> Result<Self, NovaError>
fn prove( ck: &<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey, pk: &Self::ProverKey, S: Vec<&R1CSShape<E>>, U: &[RelaxedR1CSInstance<E>], W: &[RelaxedR1CSWitness<E>] -) -> Result<Self, NovaError>
source§fn verify(
&self,
vk: &Self::VerifierKey,
U: &[RelaxedR1CSInstance<E>]
-) -> Result<(), NovaError>
fn verify( &self, vk: &Self::VerifierKey, U: &[RelaxedR1CSInstance<E>] -) -> Result<(), NovaError>
source§fn ck_floor() -> Box<dyn for<'a> Fn(&'a R1CSShape<E>) -> usize>
fn ck_floor() -> Box<dyn for<'a> Fn(&'a R1CSShape<E>) -> usize>
source§impl<E: Debug + Engine, EE: Debug + EvaluationEngineTrait<E>> Debug for BatchedRelaxedR1CSSNARK<E, EE>
impl<E: Debug + Engine, EE: Debug + EvaluationEngineTrait<E>> Debug for BatchedRelaxedR1CSSNARK<E, EE>
source§impl<'de, E: Engine, EE: EvaluationEngineTrait<E>> Deserialize<'de> for BatchedRelaxedR1CSSNARK<E, EE>
impl<'de, E: Engine, EE: EvaluationEngineTrait<E>> Deserialize<'de> for BatchedRelaxedR1CSSNARK<E, EE>
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
- __D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
- __D: Deserializer<'de>,
source§impl<E: Engine, EE: EvaluationEngineTrait<E>> RelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
impl<E: Engine, EE: EvaluationEngineTrait<E>> RelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
type VerifierKey = VerifierKey<E, EE>
source§impl<E: Engine, EE: EvaluationEngineTrait<E>> RelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
impl<E: Engine, EE: EvaluationEngineTrait<E>> RelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
type VerifierKey = VerifierKey<E, EE>
source§fn setup(
ck: Arc<<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey>,
S: &R1CSShape<E>
-) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
fn setup( ck: Arc<<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey>, S: &R1CSShape<E> -) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
source§fn prove(
+) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
fn prove( +) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
source§fn prove(
ck: &<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey,
pk: &Self::ProverKey,
S: &R1CSShape<E>,
U: &RelaxedR1CSInstance<E>,
W: &RelaxedR1CSWitness<E>
-) -> Result<Self, NovaError>
fn prove( ck: &<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey, pk: &Self::ProverKey, S: &R1CSShape<E>, U: &RelaxedR1CSInstance<E>, W: &RelaxedR1CSWitness<E> -) -> Result<Self, NovaError>
source§fn verify(
&self,
vk: &Self::VerifierKey,
U: &RelaxedR1CSInstance<E>
diff --git a/docs/arecibo/spartan/batched_ppsnark/struct.BatchedRelaxedR1CSSNARK.html b/docs/arecibo/spartan/batched_ppsnark/struct.BatchedRelaxedR1CSSNARK.html
index 9feac26a2..8cbf64f78 100644
--- a/docs/arecibo/spartan/batched_ppsnark/struct.BatchedRelaxedR1CSSNARK.html
+++ b/docs/arecibo/spartan/batched_ppsnark/struct.BatchedRelaxedR1CSSNARK.html
@@ -2,38 +2,38 @@
Struct arecibo::spartan::batched_ppsnark::BatchedRelaxedR1CSSNARK
source · pub struct BatchedRelaxedR1CSSNARK<E: Engine, EE: EvaluationEngineTrait<E>> { /* private fields */ }
Expand description
A succinct proof of knowledge of a witness to a relaxed R1CS instance
The proof is produced using Spartan’s combination of the sum-check and
the commitment to a vector viewed as a polynomial commitment
-Trait Implementations§
source§impl<E: Engine, EE: EvaluationEngineTrait<E>> BatchedRelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
A type that represents the verifier’s keysource§fn ck_floor() -> Box<dyn for<'a> Fn(&'a R1CSShape<E>) -> usize>
This associated function (not a method) provides a hint that offers
+Trait Implementations§
source§impl<E: Engine, EE: EvaluationEngineTrait<E>> BatchedRelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
A type that represents the verifier’s keysource§fn setup(
ck: Arc<<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey>,
S: Vec<&R1CSShape<E>>
-) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
Produces the keys for the prover and the verifier Read moresource§fn prove(
+) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
Produces the keys for the prover and the verifier Read moresource§fn prove(
ck: &<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey,
pk: &Self::ProverKey,
S: Vec<&R1CSShape<E>>,
U: &[RelaxedR1CSInstance<E>],
W: &[RelaxedR1CSWitness<E>]
-) -> Result<Self, NovaError>
Produces a new SNARK for a batch of relaxed R1CSsource§fn verify(
&self,
vk: &Self::VerifierKey,
U: &[RelaxedR1CSInstance<E>]
) -> Result<(), NovaError>
Verifies a SNARK for a batch of relaxed R1CSsource§impl<E: Debug + Engine, EE: Debug + EvaluationEngineTrait<E>> Debug for BatchedRelaxedR1CSSNARK<E, EE>
source§impl<'de, E: Engine, EE: EvaluationEngineTrait<E>> Deserialize<'de> for BatchedRelaxedR1CSSNARK<E, EE>
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
- __D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read moresource§impl<E: Engine, EE: EvaluationEngineTrait<E>> RelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
A type that represents the verifier’s keysource§impl<E: Engine, EE: EvaluationEngineTrait<E>> RelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
A type that represents the verifier’s keysource§fn setup(
ck: Arc<<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey>,
S: &R1CSShape<E>
-) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
Produces the keys for the prover and the verifiersource§fn prove(
+) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
Produces the keys for the prover and the verifiersource§fn prove(
ck: &<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey,
pk: &Self::ProverKey,
S: &R1CSShape<E>,
U: &RelaxedR1CSInstance<E>,
W: &RelaxedR1CSWitness<E>
-) -> Result<Self, NovaError>
Produces a new SNARK for a relaxed R1CSsource§fn verify(
&self,
vk: &Self::VerifierKey,
U: &RelaxedR1CSInstance<E>
diff --git a/docs/arecibo/traits/trait.Group.html b/docs/arecibo/traits/trait.Group.html
index af67ef2f8..9e2c3aaf3 100644
--- a/docs/arecibo/traits/trait.Group.html
+++ b/docs/arecibo/traits/trait.Group.html
@@ -10,4 +10,4 @@
Required Associated Types§
sourcetype Base: PrimeFieldBits + Serialize + for<'de> Deserialize<'de>
A type representing an element of the base field of the group
sourcetype Scalar: PrimeFieldBits + PrimeFieldExt + Send + Sync + Serialize + for<'de> Deserialize<'de>
A type representing an element of the scalar field of the group
Required Methods§
Object Safety§
This trait is not object safe.Implementations on Foreign Types§
Implementors§
fn verify(
&self,
vk: &Self::VerifierKey,
U: &RelaxedR1CSInstance<E>
diff --git a/docs/arecibo/spartan/batched_ppsnark/struct.BatchedRelaxedR1CSSNARK.html b/docs/arecibo/spartan/batched_ppsnark/struct.BatchedRelaxedR1CSSNARK.html
index 9feac26a2..8cbf64f78 100644
--- a/docs/arecibo/spartan/batched_ppsnark/struct.BatchedRelaxedR1CSSNARK.html
+++ b/docs/arecibo/spartan/batched_ppsnark/struct.BatchedRelaxedR1CSSNARK.html
@@ -2,38 +2,38 @@
Struct arecibo::spartan::batched_ppsnark::BatchedRelaxedR1CSSNARK
source · pub struct BatchedRelaxedR1CSSNARK<E: Engine, EE: EvaluationEngineTrait<E>> { /* private fields */ }
Expand description
A succinct proof of knowledge of a witness to a relaxed R1CS instance
The proof is produced using Spartan’s combination of the sum-check and
the commitment to a vector viewed as a polynomial commitment
-Trait Implementations§
source§impl<E: Engine, EE: EvaluationEngineTrait<E>> BatchedRelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
A type that represents the verifier’s keysource§fn ck_floor() -> Box<dyn for<'a> Fn(&'a R1CSShape<E>) -> usize>
This associated function (not a method) provides a hint that offers
+Trait Implementations§
source§impl<E: Engine, EE: EvaluationEngineTrait<E>> BatchedRelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
A type that represents the verifier’s keysource§fn setup(
ck: Arc<<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey>,
S: Vec<&R1CSShape<E>>
-) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
Produces the keys for the prover and the verifier Read moresource§fn prove(
+) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
Produces the keys for the prover and the verifier Read moresource§fn prove(
ck: &<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey,
pk: &Self::ProverKey,
S: Vec<&R1CSShape<E>>,
U: &[RelaxedR1CSInstance<E>],
W: &[RelaxedR1CSWitness<E>]
-) -> Result<Self, NovaError>
Produces a new SNARK for a batch of relaxed R1CSsource§fn verify(
&self,
vk: &Self::VerifierKey,
U: &[RelaxedR1CSInstance<E>]
) -> Result<(), NovaError>
Verifies a SNARK for a batch of relaxed R1CSsource§impl<E: Debug + Engine, EE: Debug + EvaluationEngineTrait<E>> Debug for BatchedRelaxedR1CSSNARK<E, EE>
source§impl<'de, E: Engine, EE: EvaluationEngineTrait<E>> Deserialize<'de> for BatchedRelaxedR1CSSNARK<E, EE>
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
- __D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read moresource§impl<E: Engine, EE: EvaluationEngineTrait<E>> RelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
A type that represents the verifier’s keysource§impl<E: Engine, EE: EvaluationEngineTrait<E>> RelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
A type that represents the verifier’s keysource§fn setup(
ck: Arc<<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey>,
S: &R1CSShape<E>
-) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
Produces the keys for the prover and the verifiersource§fn prove(
+) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
Produces the keys for the prover and the verifiersource§fn prove(
ck: &<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey,
pk: &Self::ProverKey,
S: &R1CSShape<E>,
U: &RelaxedR1CSInstance<E>,
W: &RelaxedR1CSWitness<E>
-) -> Result<Self, NovaError>
Produces a new SNARK for a relaxed R1CSsource§fn verify(
&self,
vk: &Self::VerifierKey,
U: &RelaxedR1CSInstance<E>
diff --git a/docs/arecibo/traits/trait.Group.html b/docs/arecibo/traits/trait.Group.html
index af67ef2f8..9e2c3aaf3 100644
--- a/docs/arecibo/traits/trait.Group.html
+++ b/docs/arecibo/traits/trait.Group.html
@@ -10,4 +10,4 @@
Required Associated Types§
sourcetype Base: PrimeFieldBits + Serialize + for<'de> Deserialize<'de>
A type representing an element of the base field of the group
sourcetype Scalar: PrimeFieldBits + PrimeFieldExt + Send + Sync + Serialize + for<'de> Deserialize<'de>
A type representing an element of the scalar field of the group
Required Methods§
Object Safety§
This trait is not object safe.Implementations on Foreign Types§
Implementors§
Struct arecibo::spartan::batched_ppsnark::BatchedRelaxedR1CSSNARK
source · pub struct BatchedRelaxedR1CSSNARK<E: Engine, EE: EvaluationEngineTrait<E>> { /* private fields */ }
Expand description
A succinct proof of knowledge of a witness to a relaxed R1CS instance The proof is produced using Spartan’s combination of the sum-check and the commitment to a vector viewed as a polynomial commitment
-Trait Implementations§
source§impl<E: Engine, EE: EvaluationEngineTrait<E>> BatchedRelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
impl<E: Engine, EE: EvaluationEngineTrait<E>> BatchedRelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
type VerifierKey = VerifierKey<E, EE>
source§fn ck_floor() -> Box<dyn for<'a> Fn(&'a R1CSShape<E>) -> usize>
fn ck_floor() -> Box<dyn for<'a> Fn(&'a R1CSShape<E>) -> usize>
Trait Implementations§
source§impl<E: Engine, EE: EvaluationEngineTrait<E>> BatchedRelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
impl<E: Engine, EE: EvaluationEngineTrait<E>> BatchedRelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
type VerifierKey = VerifierKey<E, EE>
source§fn setup(
ck: Arc<<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey>,
S: Vec<&R1CSShape<E>>
-) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
fn setup( ck: Arc<<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey>, S: Vec<&R1CSShape<E>> -) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
source§fn prove(
+) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
fn prove( +) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
source§fn prove(
ck: &<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey,
pk: &Self::ProverKey,
S: Vec<&R1CSShape<E>>,
U: &[RelaxedR1CSInstance<E>],
W: &[RelaxedR1CSWitness<E>]
-) -> Result<Self, NovaError>
fn prove( ck: &<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey, pk: &Self::ProverKey, S: Vec<&R1CSShape<E>>, U: &[RelaxedR1CSInstance<E>], W: &[RelaxedR1CSWitness<E>] -) -> Result<Self, NovaError>
source§fn verify(
&self,
vk: &Self::VerifierKey,
U: &[RelaxedR1CSInstance<E>]
) -> Result<(), NovaError>
fn verify( &self, vk: &Self::VerifierKey, U: &[RelaxedR1CSInstance<E>] ) -> Result<(), NovaError>
source§impl<E: Debug + Engine, EE: Debug + EvaluationEngineTrait<E>> Debug for BatchedRelaxedR1CSSNARK<E, EE>
impl<E: Debug + Engine, EE: Debug + EvaluationEngineTrait<E>> Debug for BatchedRelaxedR1CSSNARK<E, EE>
source§impl<'de, E: Engine, EE: EvaluationEngineTrait<E>> Deserialize<'de> for BatchedRelaxedR1CSSNARK<E, EE>
impl<'de, E: Engine, EE: EvaluationEngineTrait<E>> Deserialize<'de> for BatchedRelaxedR1CSSNARK<E, EE>
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
- __D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
- __D: Deserializer<'de>,
source§impl<E: Engine, EE: EvaluationEngineTrait<E>> RelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
impl<E: Engine, EE: EvaluationEngineTrait<E>> RelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
type VerifierKey = VerifierKey<E, EE>
source§impl<E: Engine, EE: EvaluationEngineTrait<E>> RelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
impl<E: Engine, EE: EvaluationEngineTrait<E>> RelaxedR1CSSNARKTrait<E> for BatchedRelaxedR1CSSNARK<E, EE>
§type VerifierKey = VerifierKey<E, EE>
type VerifierKey = VerifierKey<E, EE>
source§fn setup(
ck: Arc<<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey>,
S: &R1CSShape<E>
-) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
fn setup( ck: Arc<<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey>, S: &R1CSShape<E> -) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
source§fn prove(
+) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
fn prove( +) -> Result<(Self::ProverKey, Self::VerifierKey), NovaError>
source§fn prove(
ck: &<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey,
pk: &Self::ProverKey,
S: &R1CSShape<E>,
U: &RelaxedR1CSInstance<E>,
W: &RelaxedR1CSWitness<E>
-) -> Result<Self, NovaError>
fn prove( ck: &<<E as Engine>::CE as CommitmentEngineTrait<E>>::CommitmentKey, pk: &Self::ProverKey, S: &R1CSShape<E>, U: &RelaxedR1CSInstance<E>, W: &RelaxedR1CSWitness<E> -) -> Result<Self, NovaError>
source§fn verify(
&self,
vk: &Self::VerifierKey,
U: &RelaxedR1CSInstance<E>
diff --git a/docs/arecibo/traits/trait.Group.html b/docs/arecibo/traits/trait.Group.html
index af67ef2f8..9e2c3aaf3 100644
--- a/docs/arecibo/traits/trait.Group.html
+++ b/docs/arecibo/traits/trait.Group.html
@@ -10,4 +10,4 @@
fn verify( &self, vk: &Self::VerifierKey, U: &RelaxedR1CSInstance<E> diff --git a/docs/arecibo/traits/trait.Group.html b/docs/arecibo/traits/trait.Group.html index af67ef2f8..9e2c3aaf3 100644 --- a/docs/arecibo/traits/trait.Group.html +++ b/docs/arecibo/traits/trait.Group.html @@ -10,4 +10,4 @@
Required Associated Types§
sourcetype Base: PrimeFieldBits + Serialize + for<'de> Deserialize<'de>
type Base: PrimeFieldBits + Serialize + for<'de> Deserialize<'de>
A type representing an element of the base field of the group
sourcetype Scalar: PrimeFieldBits + PrimeFieldExt + Send + Sync + Serialize + for<'de> Deserialize<'de>
type Scalar: PrimeFieldBits + PrimeFieldExt + Send + Sync + Serialize + for<'de> Deserialize<'de>
A type representing an element of the scalar field of the group