#finite-fields #elliptic-curves

no-std ark-bls12-377

The BLS12-377 pairing-friendly elliptic curve

5 unstable releases

0.4.0 Jan 17, 2023
0.4.0-alpha.2 Dec 28, 2022
0.4.0-alpha.1 Nov 29, 2022
0.3.0 Jun 6, 2021
0.2.0 Mar 25, 2021

#842 in Cryptography

Download history 8121/week @ 2023-07-26 5349/week @ 2023-08-02 6215/week @ 2023-08-09 7209/week @ 2023-08-16 18148/week @ 2023-08-23 24908/week @ 2023-08-30 22333/week @ 2023-09-06 20930/week @ 2023-09-13 16503/week @ 2023-09-20 16286/week @ 2023-09-27 15232/week @ 2023-10-04 18339/week @ 2023-10-11 20154/week @ 2023-10-18 27243/week @ 2023-10-25 33178/week @ 2023-11-01 31800/week @ 2023-11-08

117,280 downloads per month
Used in 268 crates (21 directly)

MIT/Apache

96KB
1K SLoC

Curve implementations

This repository contains implementations of some popular elliptic curves. The curve API implemented here matches the curve traits defined here in the arkworks-rs/algebra repository.

BLS12-381 and embedded curves

  • ark-bls12-377: Implements the BLS12-377 pairing-friendly curve

  • ark-ed-on-bls12-377: Implements a Twisted Edwards curve atop the scalar field of BLS12-377

  • ark-bw6-761: Implements the BW6-761 pairing-friendly curve, which is a curve whose scalar field equals the base field of BLS12-377

  • ark-ed-on-bw6-761: Implements a Twisted Edwards curve atop the scalar field of BW6-761

  • ark-cp6-782: Implements the CP6-782 pairing-friendly curve, which is a curve whose scalar field equals the base field of BLS12-377

  • ark-ed-on-cp6-782: Implements a Twisted Edwards curve atop the scalar field of CP6-782. This is the same curve as in ark-ed-on-bw6-761

  • ark-bn254: Implements the BN254 pairing-friendly curve
  • ark-ed-on-bn254: Implements a Twisted Edwards curve atop the scalar field of BN254
  • ark-mnt4-298: Implements the MNT4-298 pairing-friendly curve. This curve forms a pairing-friendly cycle with MNT6-298
  • ark-mnt6-298: Implements the MNT6-298 pairing-friendly curve. This curve forms a pairing-friendly cycle with MNT4-298
  • ark-ed-on-mnt4-298: Implements a Twisted Edwards curve atop the scalar field of MNT4-298
  • ark-mnt4-753: Implements the MNT4-753 pairing-friendly curve. This curve forms a pairing-friendly cycle with MNT6-753
  • ark-mnt6-753: Implements the MNT6-753 pairing-friendly curve. This curve forms a pairing-friendly cycle with MNT4-753
  • ark-ed-on-mnt4-753: Implements a Twisted Edwards curve atop the scalar field of MNT4-753

Pasta cycle of curves

  • ark-pallas: Implements Pallas, a prime-order curve that forms an amicable pair with Vesta
  • ark-vesta: Implements Vesta, a prime-order curve that forms an amicable pair with Pallas

lib.rs:

This library implements the BLS12_377 curve generated in [BCGMMW20, “Zexe”]. The name denotes that it is a Barreto--Lynn--Scott curve of embedding degree 12, defined over a 377-bit (prime) field. The main feature of this curve is that both the scalar field and the base field are highly 2-adic. (This is in contrast to the BLS12_381 curve for which only the scalar field is highly 2-adic.)

Curve information:

  • Base field: q = 258664426012969094010652733694893533536393512754914660539884262666720468348340822774968888139573360124440321458177
  • Scalar field: r = 8444461749428370424248824938781546531375899335154063827935233455917409239041
  • valuation(q - 1, 2) = 46
  • valuation(r - 1, 2) = 47
  • G1 curve equation: y^2 = x^3 + 1
  • G2 curve equation: y^2 = x^3 + B, where
    • B = Fq2(0, 155198655607781456406391640216936120121836107652948796323930557600032281009004493664981332883744016074664192874906)

Dependencies

~5MB
~105K SLoC