## ark-ec

This crate defines Elliptic Curve traits, curve models that follow these traits, and multi-scalar multiplications.
Implementations of particular curves using these curve models can be found in `arkworks-rs/curves`

.

The available elliptic curve traits are

`AffineCurve`

- Interface for elliptic curve points in the 'canonical form' for serialization.`ProjectiveCurve`

- Interface for elliptic curve points in a representation that is more efficient for most computation.`PairingEngine`

- Pairing friendly elliptic curves (Contains the pairing function, and acts as a wrapper type on G1, G2, GT, and the relevant fields).`CycleEngine`

- Wrapper type for a cycle of pairing friendly elliptic curves.

The elliptic curve models implemented are

*Short Weierstrass*curves. The`AffineCurve`

in this case is in typical Short Weierstrass point representation, and the`ProjectiveCurve`

is using points in Jacobian Coordinates.*Twisted Edwards*curves. The`AffineCurve`

in this case is in standard Twisted Edwards curve representation, whereas the`ProjectiveCurve`

uses points in Extended Twisted Edwards Coordinates.