From 7663200468316537cb323eac9c1a2e3721f9967c Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Tue, 1 Jun 2021 23:19:14 +0100 Subject: [PATCH] Fill in readme details --- README.md | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index cbace05..ddbb954 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,35 @@ # `pasta_curves` -**IMPORTANT**: This library is being actively developed and should not be used in production software. +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](https://electriccoin.co/blog/the-pasta-curves-for-halo-2-and-beyond/). ## [Documentation](https://docs.rs/pasta_curves) -This crate currently has a Minimum Supported Rust Version of 1.49.0. When const generics -are stabilized [in Rust 1.51.0](https://github.com/rust-lang/rust/pull/79135), we plan -to require that version. +## Minimum Supported Rust Version + +Requires Rust **1.49** 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](https://github.com/zcash/pasta). ## License