mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-05-22 17:59:28 +00:00
fixes
This commit is contained in:
parent
e4b894cb12
commit
c7fda246ca
@ -93,10 +93,6 @@ pub trait Field:
|
|||||||
self.square() * *self
|
self.square() * *self
|
||||||
}
|
}
|
||||||
|
|
||||||
fn double(&self) -> Self {
|
|
||||||
*self * Self::TWO
|
|
||||||
}
|
|
||||||
|
|
||||||
fn triple(&self) -> Self {
|
fn triple(&self) -> Self {
|
||||||
*self * (Self::ONE + Self::TWO)
|
*self * (Self::ONE + Self::TWO)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,18 +1,18 @@
|
|||||||
use crate::curve::curve_types::{AffinePoint, Curve};
|
use crate::curve::curve_types::{AffinePoint, Curve};
|
||||||
use crate::field::extension_field::Extendable;
|
use crate::field::extension_field::Extendable;
|
||||||
use crate::field::field_types::{Field, RichField};
|
use crate::field::field_types::{Field, RichField};
|
||||||
use crate::gadgets::nonnative::ForeignFieldTarget;
|
use crate::gadgets::nonnative::NonNativeTarget;
|
||||||
use crate::plonk::circuit_builder::CircuitBuilder;
|
use crate::plonk::circuit_builder::CircuitBuilder;
|
||||||
|
|
||||||
/// A Target representing an affine point on the curve `C`.
|
/// A Target representing an affine point on the curve `C`.
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct AffinePointTarget<C: Curve> {
|
pub struct AffinePointTarget<C: Curve> {
|
||||||
pub x: ForeignFieldTarget<C::BaseField>,
|
pub x: NonNativeTarget<C::BaseField>,
|
||||||
pub y: ForeignFieldTarget<C::BaseField>,
|
pub y: NonNativeTarget<C::BaseField>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<C: Curve> AffinePointTarget<C> {
|
impl<C: Curve> AffinePointTarget<C> {
|
||||||
pub fn to_vec(&self) -> Vec<ForeignFieldTarget<C::BaseField>> {
|
pub fn to_vec(&self) -> Vec<NonNativeTarget<C::BaseField>> {
|
||||||
vec![self.x.clone(), self.y.clone()]
|
vec![self.x.clone(), self.y.clone()]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -130,8 +130,8 @@ mod tests {
|
|||||||
|
|
||||||
use crate::curve::curve_types::{AffinePoint, Curve};
|
use crate::curve::curve_types::{AffinePoint, Curve};
|
||||||
use crate::curve::secp256k1::Secp256K1;
|
use crate::curve::secp256k1::Secp256K1;
|
||||||
use crate::field::crandall_field::CrandallField;
|
|
||||||
use crate::field::field_types::Field;
|
use crate::field::field_types::Field;
|
||||||
|
use crate::field::goldilocks_field::GoldilocksField;
|
||||||
use crate::field::secp256k1_base::Secp256K1Base;
|
use crate::field::secp256k1_base::Secp256K1Base;
|
||||||
use crate::iop::witness::PartialWitness;
|
use crate::iop::witness::PartialWitness;
|
||||||
use crate::plonk::circuit_builder::CircuitBuilder;
|
use crate::plonk::circuit_builder::CircuitBuilder;
|
||||||
@ -140,7 +140,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_curve_point_is_valid() -> Result<()> {
|
fn test_curve_point_is_valid() -> Result<()> {
|
||||||
type F = CrandallField;
|
type F = GoldilocksField;
|
||||||
const D: usize = 4;
|
const D: usize = 4;
|
||||||
|
|
||||||
let config = CircuitConfig::large_config();
|
let config = CircuitConfig::large_config();
|
||||||
@ -164,7 +164,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
#[should_panic]
|
#[should_panic]
|
||||||
fn test_curve_point_is_not_valid() {
|
fn test_curve_point_is_not_valid() {
|
||||||
type F = CrandallField;
|
type F = GoldilocksField;
|
||||||
const D: usize = 4;
|
const D: usize = 4;
|
||||||
|
|
||||||
let config = CircuitConfig::large_config();
|
let config = CircuitConfig::large_config();
|
||||||
@ -190,7 +190,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_curve_double() -> Result<()> {
|
fn test_curve_double() -> Result<()> {
|
||||||
type F = CrandallField;
|
type F = GoldilocksField;
|
||||||
const D: usize = 4;
|
const D: usize = 4;
|
||||||
|
|
||||||
let config = CircuitConfig::large_config();
|
let config = CircuitConfig::large_config();
|
||||||
|
|||||||
@ -10,8 +10,9 @@ use crate::iop::target::Target;
|
|||||||
use crate::iop::witness::{PartitionWitness, Witness};
|
use crate::iop::witness::{PartitionWitness, Witness};
|
||||||
use crate::plonk::circuit_builder::CircuitBuilder;
|
use crate::plonk::circuit_builder::CircuitBuilder;
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
pub struct NonNativeTarget<FF: Field> {
|
pub struct NonNativeTarget<FF: Field> {
|
||||||
value: BigUintTarget,
|
pub(crate) value: BigUintTarget,
|
||||||
_phantom: PhantomData<FF>,
|
_phantom: PhantomData<FF>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,8 +108,8 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
|
|||||||
inv
|
inv
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns `x % |FF|` as a `ForeignFieldTarget`.
|
/// Returns `x % |FF|` as a `NonNativeTarget`.
|
||||||
fn reduce<FF: Field>(&mut self, x: &BigUintTarget) -> ForeignFieldTarget<FF> {
|
fn reduce<FF: Field>(&mut self, x: &BigUintTarget) -> NonNativeTarget<FF> {
|
||||||
let modulus = FF::order();
|
let modulus = FF::order();
|
||||||
let order_target = self.constant_biguint(&modulus);
|
let order_target = self.constant_biguint(&modulus);
|
||||||
let value = self.rem_biguint(x, &order_target);
|
let value = self.rem_biguint(x, &order_target);
|
||||||
@ -131,8 +132,8 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
|
|||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct NonNativeInverseGenerator<F: RichField + Extendable<D>, const D: usize, FF: Field> {
|
struct NonNativeInverseGenerator<F: RichField + Extendable<D>, const D: usize, FF: Field> {
|
||||||
x: ForeignFieldTarget<FF>,
|
x: NonNativeTarget<FF>,
|
||||||
inv: ForeignFieldTarget<FF>,
|
inv: NonNativeTarget<FF>,
|
||||||
_phantom: PhantomData<F>,
|
_phantom: PhantomData<F>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ use crate::field::extension_field::{Extendable, FieldExtension};
|
|||||||
use crate::field::field_types::{Field, RichField};
|
use crate::field::field_types::{Field, RichField};
|
||||||
use crate::gadgets::arithmetic_u32::U32Target;
|
use crate::gadgets::arithmetic_u32::U32Target;
|
||||||
use crate::gadgets::biguint::BigUintTarget;
|
use crate::gadgets::biguint::BigUintTarget;
|
||||||
use crate::gadgets::nonnative::ForeignFieldTarget;
|
use crate::gadgets::nonnative::NonNativeTarget;
|
||||||
use crate::hash::hash_types::{HashOut, HashOutTarget};
|
use crate::hash::hash_types::{HashOut, HashOutTarget};
|
||||||
use crate::iop::target::Target;
|
use crate::iop::target::Target;
|
||||||
use crate::iop::wire::Wire;
|
use crate::iop::wire::Wire;
|
||||||
@ -169,7 +169,7 @@ impl<F: Field> GeneratedValues<F> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_nonnative_target<FF: Field>(&mut self, target: ForeignFieldTarget<FF>, value: FF) {
|
pub fn set_nonnative_target<FF: Field>(&mut self, target: NonNativeTarget<FF>, value: FF) {
|
||||||
self.set_biguint_target(target.value, value.to_biguint())
|
self.set_biguint_target(target.value, value.to_biguint())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ use crate::field::extension_field::target::ExtensionTarget;
|
|||||||
use crate::field::extension_field::{Extendable, FieldExtension};
|
use crate::field::extension_field::{Extendable, FieldExtension};
|
||||||
use crate::field::field_types::Field;
|
use crate::field::field_types::Field;
|
||||||
use crate::gadgets::biguint::BigUintTarget;
|
use crate::gadgets::biguint::BigUintTarget;
|
||||||
use crate::gadgets::nonnative::ForeignFieldTarget;
|
use crate::gadgets::nonnative::NonNativeTarget;
|
||||||
use crate::hash::hash_types::HashOutTarget;
|
use crate::hash::hash_types::HashOutTarget;
|
||||||
use crate::hash::hash_types::{HashOut, MerkleCapTarget};
|
use crate::hash::hash_types::{HashOut, MerkleCapTarget};
|
||||||
use crate::hash::merkle_tree::MerkleCap;
|
use crate::hash::merkle_tree::MerkleCap;
|
||||||
@ -69,7 +69,7 @@ pub trait Witness<F: Field> {
|
|||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_nonnative_target<FF: Field>(&self, target: ForeignFieldTarget<FF>) -> FF {
|
fn get_nonnative_target<FF: Field>(&self, target: NonNativeTarget<FF>) -> FF {
|
||||||
let val = self.get_biguint_target(target.value);
|
let val = self.get_biguint_target(target.value);
|
||||||
FF::from_biguint(val)
|
FF::from_biguint(val)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user