pub struct AssignedNativePoint<C: CircuitCurve> { /* private fields */ }Expand description
A twisted Edwards curve point represented in affine (x, y) coordinates, the
identity represented as (0, 1).
The represented point may or may not lie in the prime order subgroup. If
in_subgroup is true, then the point has been constrained to be in the
prime order subgroup.
Since in most use cases we want to ensure the point is in the subgroup,
the implementation of InnerValue and AssignmentInstructions require
subgroup membership. To use arbitrary points of the curve there are
equivalent functions that explicitly state the absence of this subgroup
membership check.
Trait Implementations§
Source§impl<C: EdwardsCurve> AssertionInstructions<<C as CircuitCurve>::Base, AssignedNativePoint<C>> for EccChip<C>
impl<C: EdwardsCurve> AssertionInstructions<<C as CircuitCurve>::Base, AssignedNativePoint<C>> for EccChip<C>
Source§fn assert_equal(
&self,
layouter: &mut impl Layouter<C::Base>,
p: &AssignedNativePoint<C>,
q: &AssignedNativePoint<C>,
) -> Result<(), Error>
fn assert_equal( &self, layouter: &mut impl Layouter<C::Base>, p: &AssignedNativePoint<C>, q: &AssignedNativePoint<C>, ) -> Result<(), Error>
Ensures that the given assigned elements are the same. Read more
Source§fn assert_not_equal(
&self,
layouter: &mut impl Layouter<C::Base>,
p: &AssignedNativePoint<C>,
q: &AssignedNativePoint<C>,
) -> Result<(), Error>
fn assert_not_equal( &self, layouter: &mut impl Layouter<C::Base>, p: &AssignedNativePoint<C>, q: &AssignedNativePoint<C>, ) -> Result<(), Error>
Ensures that the given assigned elements are different. Read more
Source§fn assert_equal_to_fixed(
&self,
layouter: &mut impl Layouter<C::Base>,
p: &AssignedNativePoint<C>,
constant: C::CryptographicGroup,
) -> Result<(), Error>
fn assert_equal_to_fixed( &self, layouter: &mut impl Layouter<C::Base>, p: &AssignedNativePoint<C>, constant: C::CryptographicGroup, ) -> Result<(), Error>
Ensures that the given assigned element is equal to the given constant. Read more
Source§fn assert_not_equal_to_fixed(
&self,
layouter: &mut impl Layouter<C::Base>,
p: &AssignedNativePoint<C>,
constant: C::CryptographicGroup,
) -> Result<(), Error>
fn assert_not_equal_to_fixed( &self, layouter: &mut impl Layouter<C::Base>, p: &AssignedNativePoint<C>, constant: C::CryptographicGroup, ) -> Result<(), Error>
Ensures that the given assigned element is different from the given
constant. Read more
Source§impl<C: EdwardsCurve> AssignmentInstructions<<C as CircuitCurve>::Base, AssignedNativePoint<C>> for EccChip<C>
impl<C: EdwardsCurve> AssignmentInstructions<<C as CircuitCurve>::Base, AssignedNativePoint<C>> for EccChip<C>
Source§fn assign(
&self,
layouter: &mut impl Layouter<C::Base>,
value: Value<C::CryptographicGroup>,
) -> Result<AssignedNativePoint<C>, Error>
fn assign( &self, layouter: &mut impl Layouter<C::Base>, value: Value<C::CryptographicGroup>, ) -> Result<AssignedNativePoint<C>, Error>
Assigns an element as a private input to the circuit. Read more
Source§fn assign_fixed(
&self,
layouter: &mut impl Layouter<C::Base>,
constant: C::CryptographicGroup,
) -> Result<AssignedNativePoint<C>, Error>
fn assign_fixed( &self, layouter: &mut impl Layouter<C::Base>, constant: C::CryptographicGroup, ) -> Result<AssignedNativePoint<C>, Error>
Assigns a fixed (constant) element. Read more
Source§impl<C: Clone + CircuitCurve> Clone for AssignedNativePoint<C>
impl<C: Clone + CircuitCurve> Clone for AssignedNativePoint<C>
Source§fn clone(&self) -> AssignedNativePoint<C>
fn clone(&self) -> AssignedNativePoint<C>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<C: EdwardsCurve> ControlFlowInstructions<<C as CircuitCurve>::Base, AssignedNativePoint<C>> for EccChip<C>
impl<C: EdwardsCurve> ControlFlowInstructions<<C as CircuitCurve>::Base, AssignedNativePoint<C>> for EccChip<C>
Source§fn select(
&self,
layouter: &mut impl Layouter<C::Base>,
cond: &AssignedBit<C::Base>,
a: &AssignedNativePoint<C>,
b: &AssignedNativePoint<C>,
) -> Result<AssignedNativePoint<C>, Error>
fn select( &self, layouter: &mut impl Layouter<C::Base>, cond: &AssignedBit<C::Base>, a: &AssignedNativePoint<C>, b: &AssignedNativePoint<C>, ) -> Result<AssignedNativePoint<C>, Error>
Source§fn cond_assert_equal(
&self,
layouter: &mut impl Layouter<F>,
cond: &AssignedBit<F>,
x: &Assigned,
y: &Assigned,
) -> Result<(), Error>
fn cond_assert_equal( &self, layouter: &mut impl Layouter<F>, cond: &AssignedBit<F>, x: &Assigned, y: &Assigned, ) -> Result<(), Error>
Equality assertion only if
cond is set to 1.Source§fn cond_swap(
&self,
layouter: &mut impl Layouter<F>,
cond: &AssignedBit<F>,
x: &Assigned,
y: &Assigned,
) -> Result<(Assigned, Assigned), Error>
fn cond_swap( &self, layouter: &mut impl Layouter<F>, cond: &AssignedBit<F>, x: &Assigned, y: &Assigned, ) -> Result<(Assigned, Assigned), Error>
Swaps two elements
x and y only if cond is set to 1.Source§impl<C: Debug + CircuitCurve> Debug for AssignedNativePoint<C>
impl<C: Debug + CircuitCurve> Debug for AssignedNativePoint<C>
Source§impl<C: EdwardsCurve> EqualityInstructions<<C as CircuitCurve>::Base, AssignedNativePoint<C>> for EccChip<C>
impl<C: EdwardsCurve> EqualityInstructions<<C as CircuitCurve>::Base, AssignedNativePoint<C>> for EccChip<C>
Source§fn is_equal(
&self,
layouter: &mut impl Layouter<C::Base>,
p: &AssignedNativePoint<C>,
q: &AssignedNativePoint<C>,
) -> Result<AssignedBit<C::Base>, Error>
fn is_equal( &self, layouter: &mut impl Layouter<C::Base>, p: &AssignedNativePoint<C>, q: &AssignedNativePoint<C>, ) -> Result<AssignedBit<C::Base>, Error>
Source§fn is_not_equal(
&self,
layouter: &mut impl Layouter<C::Base>,
p: &AssignedNativePoint<C>,
q: &AssignedNativePoint<C>,
) -> Result<AssignedBit<C::Base>, Error>
fn is_not_equal( &self, layouter: &mut impl Layouter<C::Base>, p: &AssignedNativePoint<C>, q: &AssignedNativePoint<C>, ) -> Result<AssignedBit<C::Base>, Error>
Returns
0 if the elements are equal, returns 1 otherwise.Source§fn is_equal_to_fixed(
&self,
layouter: &mut impl Layouter<C::Base>,
p: &AssignedNativePoint<C>,
constant: C::CryptographicGroup,
) -> Result<AssignedBit<C::Base>, Error>
fn is_equal_to_fixed( &self, layouter: &mut impl Layouter<C::Base>, p: &AssignedNativePoint<C>, constant: C::CryptographicGroup, ) -> Result<AssignedBit<C::Base>, Error>
Returns
1 iff the given element equals the given constant. Read moreSource§fn is_not_equal_to_fixed(
&self,
layouter: &mut impl Layouter<C::Base>,
p: &AssignedNativePoint<C>,
constant: C::CryptographicGroup,
) -> Result<AssignedBit<C::Base>, Error>
fn is_not_equal_to_fixed( &self, layouter: &mut impl Layouter<C::Base>, p: &AssignedNativePoint<C>, constant: C::CryptographicGroup, ) -> Result<AssignedBit<C::Base>, Error>
Returns
1 iff the given element is not equal to the given constant.Source§impl<C: EdwardsCurve> InnerConstants for AssignedNativePoint<C>
impl<C: EdwardsCurve> InnerConstants for AssignedNativePoint<C>
Source§fn inner_zero() -> C::CryptographicGroup
fn inner_zero() -> C::CryptographicGroup
The zero of Self::Element (additive identity).
Source§impl<C: CircuitCurve> InnerValue for AssignedNativePoint<C>
impl<C: CircuitCurve> InnerValue for AssignedNativePoint<C>
Source§type Element = <C as CircuitCurve>::CryptographicGroup
type Element = <C as CircuitCurve>::CryptographicGroup
Represents the unassigned type corresponding to the InnerValue
Source§impl<C: CircuitCurve> Instantiable<<C as CircuitCurve>::Base> for AssignedNativePoint<C>
impl<C: CircuitCurve> Instantiable<<C as CircuitCurve>::Base> for AssignedNativePoint<C>
Source§fn as_public_input(p: &C::CryptographicGroup) -> Vec<C::Base>
fn as_public_input(p: &C::CryptographicGroup) -> Vec<C::Base>
This function is the off-circuit analog of
crate::instructions::PublicInputInstructions::as_public_input.
Source§fn from_public_input(fields: &[C::Base]) -> Option<C::CryptographicGroup>
fn from_public_input(fields: &[C::Base]) -> Option<C::CryptographicGroup>
Inverse of Self::as_public_input: reconstructs the element from
its public input representation. Returns
None if fields does not
encode a valid element.Source§impl<C: EdwardsCurve> PublicInputInstructions<<C as CircuitCurve>::Base, AssignedNativePoint<C>> for EccChip<C>
impl<C: EdwardsCurve> PublicInputInstructions<<C as CircuitCurve>::Base, AssignedNativePoint<C>> for EccChip<C>
Source§fn as_public_input(
&self,
_layouter: &mut impl Layouter<C::Base>,
p: &AssignedNativePoint<C>,
) -> Result<Vec<AssignedNative<C::Base>>, Error>
fn as_public_input( &self, _layouter: &mut impl Layouter<C::Base>, p: &AssignedNativePoint<C>, ) -> Result<Vec<AssignedNative<C::Base>>, Error>
Returns the cells associated with the given assigned value with the same
format as a public input. This function is the in-circuit analog of
Instantiable::as_public_input.
Source§fn constrain_as_public_input(
&self,
layouter: &mut impl Layouter<C::Base>,
p: &AssignedNativePoint<C>,
) -> Result<(), Error>
fn constrain_as_public_input( &self, layouter: &mut impl Layouter<C::Base>, p: &AssignedNativePoint<C>, ) -> Result<(), Error>
Constrains the given assigned value as a public input to the circuit. Read more
Source§fn assign_as_public_input(
&self,
layouter: &mut impl Layouter<C::Base>,
p: Value<C::CryptographicGroup>,
) -> Result<AssignedNativePoint<C>, Error>
fn assign_as_public_input( &self, layouter: &mut impl Layouter<C::Base>, p: Value<C::CryptographicGroup>, ) -> Result<AssignedNativePoint<C>, Error>
Source§impl<C: EdwardsCurve> ZeroInstructions<<C as CircuitCurve>::Base, AssignedNativePoint<C>> for EccChip<C>
impl<C: EdwardsCurve> ZeroInstructions<<C as CircuitCurve>::Base, AssignedNativePoint<C>> for EccChip<C>
Source§fn assert_zero(
&self,
layouter: &mut impl Layouter<F>,
x: &Assigned,
) -> Result<(), Error>
fn assert_zero( &self, layouter: &mut impl Layouter<F>, x: &Assigned, ) -> Result<(), Error>
Enforces that the given assigned element is zero. Read more
Auto Trait Implementations§
impl<C> Freeze for AssignedNativePoint<C>
impl<C> RefUnwindSafe for AssignedNativePoint<C>
impl<C> Send for AssignedNativePoint<C>
impl<C> Sync for AssignedNativePoint<C>
impl<C> Unpin for AssignedNativePoint<C>
impl<C> UnsafeUnpin for AssignedNativePoint<C>
impl<C> UnwindSafe for AssignedNativePoint<C>
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§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.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.Source§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.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§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
Source§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 moreSource§fn 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 moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<T> SyncDeps for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read moreSource§fn 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.Source§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.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.