#elliptic-curve #pasta #recursion #construction #field #proof #systems

no-std fil_pasta_curves

Implementation of the Pallas and Vesta (Pasta) curve cycle

4 releases

0.5.2 Jan 18, 2023
0.5.1 Nov 17, 2022
0.5.0 Nov 17, 2022
0.3.1 Mar 29, 2022

#4 in #pasta

Download history 32/week @ 2024-07-19 26/week @ 2024-07-26 24/week @ 2024-08-02 28/week @ 2024-08-09 21/week @ 2024-08-16 27/week @ 2024-08-23 43/week @ 2024-08-30 21/week @ 2024-09-06 20/week @ 2024-09-13 26/week @ 2024-09-20 21/week @ 2024-09-27 5/week @ 2024-10-04 14/week @ 2024-10-11 11/week @ 2024-10-18 10/week @ 2024-10-25 23/week @ 2024-11-01

58 downloads per month
Used in 3 crates

MIT/Apache

155KB
3.5K SLoC

pasta_curves

This crate provides an implementation of the Pasta elliptic curve constructions, Pallas and Vesta. More details about the Pasta curves can be found in this blog post.

Documentation

Minimum Supported Rust Version

Requires Rust 1.56 or higher.

Minimum supported Rust version can be changed in the future, but it will be done with a minor version bump.

Curve Descriptions

  • Pallas: y2 = x3 + 5 over GF(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000001).

  • Vesta: y2 = x3 + 5 over GF(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000001).

The Pasta curves form a cycle with one another: the order of each curve is exactly the base field of the other. This property is critical to the efficiency of recursive proof systems. They are designed to be highly 2-adic, meaning that a large power-of-two multiplicative subgroup exists in each field. This is important for the performance of polynomial arithmetic over their scalar fields and is essential for protocols similar to PLONK.

These curves can be reproducibly obtained using a curve search utility we’ve published.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~0.4–0.8MB
~15K SLoC