Struct ark_ec::hashing::curve_maps::wb::IsogenyMap
source · pub struct IsogenyMap<'a, Domain: SWCurveConfig, Codomain: SWCurveConfig<BaseField = <Domain as CurveConfig>::BaseField>> {
pub x_map_numerator: &'a [<Domain as CurveConfig>::BaseField],
pub x_map_denominator: &'a [<Codomain as CurveConfig>::BaseField],
pub y_map_numerator: &'a [<Domain as CurveConfig>::BaseField],
pub y_map_denominator: &'a [<Codomain as CurveConfig>::BaseField],
}
Expand description
IsogenyMap
defines an isogeny between curves of
form Phi(x, y) := (a(x), b(x)*y). The
xcoordinate of the codomain point only depends on the
x-coordinate of the domain point, and the
y-coordinate of the codomain point is a multiple of the
y-coordinate of the domain point. The multiplier depends on the
x`-coordinate of the domain point.
All isogeny maps of curves of short Weierstrass form can be written in this way. See
[[Ga18]]. Theorem 9.7.5 for details.
We assume that Domain
and Codomain
have the same BaseField
but we use both
BaseField<Domain>
and BaseField<Codomain>
in our fields’ definitions to avoid
using PhantomData
- [[Ga18]] Galbraith, S. D. (2018). Mathematics of public key cryptography.
Fields§
§x_map_numerator: &'a [<Domain as CurveConfig>::BaseField]
§x_map_denominator: &'a [<Codomain as CurveConfig>::BaseField]
§y_map_numerator: &'a [<Domain as CurveConfig>::BaseField]
§y_map_denominator: &'a [<Codomain as CurveConfig>::BaseField]