You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
str4d 7e3fc6a491
Merge pull request #69 from zcash/release-0.5.1
4 weeks ago
.github Bump actions/checkout from 2 to 3 4 weeks ago
benches Add benchmarks for point operations. 2 years ago
book book: Fix broken links 2 years ago
src Fix an overflow bug in the square root implementation on 32-bit platforms. 4 weeks ago
.gitignore Add book/Makefile for local HTML generation. 2 years ago `pasta_curves 0.5.1` 4 weeks ago Ensure that GitHub's "View license" link points to complete license information. 1 year ago
Cargo.toml `pasta_curves 0.5.1` 4 weeks ago
LICENSE-APACHE Relicense `pasta_curves` as MIT OR Apache-2.0 2 years ago
LICENSE-MIT Relicense `pasta_curves` as MIT OR Apache-2.0 2 years ago Migrate to `ff 0.12`, `group 0.12` 11 months ago
katex-header.html Initial commit 3 years ago
rust-toolchain.toml Update CI 4 weeks ago


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.


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.


Licensed under either of

at your option.


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.