PayneJoe / crypto_research

crypto research stuffs from numerics to ZK applied protocols all written with dirty hands

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

crypto_research

crypto research stuffs from numeric arithmetics to ZK-applied protocols all written with dirty hands.


Code Structure

  • docs

    • bls12_381 note and python versioned bls12-381 implementation [$\color{green}\checkmark$]

    • on_proving_pairings note and python versioned bn254 implementation [$\color{green}\checkmark$]

  • ecc

    • integer_arithmetic

      • basic arithmetics on big integers

        • add/substruction/multiplication/division [$\color{green}\checkmark$]

        • euclid extended gcd/lehmer extended gcd [$\color{green}\checkmark$]

    • finite_field_arithmetic

      • basic arithmetics on base field $F_q$ and its instantiation

        • add/substruction/multiplication/division/inversion/modulo/exponentiation/sqrt/square [$\color{green}\checkmark$]
        • field implementation for pallas/vasta curves [$\color{green}\checkmark$]
      • basic arithmetics on extension field $F_{q^k}$ of $F_q$

        • quadratic extension $F_{q^2}/F_{q}$ [$\color{green}\checkmark$]

        • cubic extension $F_{q^3}/F_{q}$ [$\color{green}\checkmark$]

        • cyclotomic [$\color{green}\checkmark$]

        • twist/untwist $\Phi: F_{q^k} \mapsto F_{q^{k / d}}$ [$\color{green}\checkmark$]

        • frobenius map [$\color{green}\checkmark$]

        • field implementation for BLS12/MNT/BN pairing-family curves [$\color{green}\checkmark$]

    • elliptic_curve_arithmetic

      • neccessary arithmetics on elliptic curves over base field $F_q$

        • add/doubling/scalar_mul/... [$\color{green} \checkmark$]
      • neccessary arithmetics on pairing-friendly elliptic curves over extension field $F_{q^k}$ and its instantiation

        • add/doubling/scalar_mul/... [$\color{green} \checkmark$]

        • BLS12/MNT/BN pairing-friendly curves [$\color{green} \checkmark$]

    • hyperelliptic_curve_arithmetic [TODO]

    • special_curve_arithmetic [TODO]

    • pairings

      • Weil Pairing [$\color{green}\checkmark$]

      • Tate Pairing [$\color{green}\checkmark$]

      • Ate Pairing [Ongoing]

      • Optimal Ate Pairings [Ongoing]

    • ...

  • hash

    • shake128(variable output length) [$\color{green}\checkmark$]
    • poseidon [TODO]
  • pcs

    • sparse_polynomial [$\color{green}\checkmark$]
    • IPA [$\color{green} \checkmark$]
    • KZG [Ongoing]
  • recursive snark ...


Notes

Small Fields

Pairings

Proving System


Credits

[1] Handbook of Elliptic and Hyperelliptic Curve Cryptography

[2] Guide to Elliptic Curve Cryptography

[3] Pairings For Beginners

[4] Algorithms for Modern Hardware

[5] IPA PCS

[6] Guide to Pairing-based Cryptography

[7] A note on twists for pairing friendly curves

[8] Pairing-Friendly Elliptic Curves of Prime Order

[9] Optimal Pairings

[10] On the Computation of the Optimal Ate Pairing at the 192-bit Security Level

[11] Efficient Final Exponentiation via Cyclotomic Structure for Pairings over Families of Elliptic Curves

[12] Faster Squaring in the Cyclotomic Subgroup of Sixth Degree Extensions

[13] A Guide to Plane Algebraic Curves

[14] Circle Stark

[15] Binius

About

crypto research stuffs from numerics to ZK applied protocols all written with dirty hands


Languages

Language:Rust 91.0%Language:Sage 9.0%