Skip to content

Commit

Permalink
Merge pull request #278 from str4d/release-0.3.0
Browse files Browse the repository at this point in the history
Release 0.3.0
  • Loading branch information
ebfull authored Aug 24, 2020
2 parents 9bfb935 + 3cd8f64 commit 50140c5
Show file tree
Hide file tree
Showing 18 changed files with 133 additions and 104 deletions.
10 changes: 5 additions & 5 deletions bellman/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,25 @@ homepage = "https://github.com/ebfull/bellman"
license = "MIT/Apache-2.0"
name = "bellman"
repository = "https://github.com/ebfull/bellman"
version = "0.6.0"
version = "0.7.0"
edition = "2018"

[dependencies]
bit-vec = "0.6"
blake2s_simd = "0.5"
ff = { version = "0.6", path = "../ff" }
ff = { version = "0.7", path = "../ff" }
futures = "0.1"
futures-cpupool = { version = "0.1", optional = true }
group = { version = "0.6", path = "../group" }
group = { version = "0.7", path = "../group" }
num_cpus = { version = "1", optional = true }
crossbeam = { version = "0.7", optional = true }
pairing = { version = "0.16", path = "../pairing", optional = true }
pairing = { version = "0.17", path = "../pairing", optional = true }
rand_core = "0.5"
byteorder = "1"
subtle = "2.2.1"

[dev-dependencies]
bls12_381 = { version = "0.1", path = "../bls12_381" }
bls12_381 = { version = "0.2", path = "../bls12_381" }
hex-literal = "0.2"
rand = "0.7"
rand_xorshift = "0.2"
Expand Down
13 changes: 8 additions & 5 deletions bellman/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@
and primitive structures, as well as basic gadget implementations such as
booleans and number abstractions.

`bellman` uses the `ff` and `group` crates to build circuits generically over a
scalar field type, which is used as the "word" of a circuit. Arithmetic
operations modulo the scalar field's prime are efficient, while other operations
(such as boolean logic) are implemented using these words.

## Roadmap

`bellman` is being refactored into a generic proving library. Currently it is
pairing-specific, and different types of proving systems need to be implemented
as sub-modules. After the refactor, `bellman` will be generic using the `ff` and
`group` crates, while specific proving systems will be separate crates that pull
in the dependencies they require.
Currently `bellman` bundles an implementation of the Groth16 proving system.
This will be moved into a separate crate in the future, and `bellman` will
contain any utilities that make implementing proving systems easier.

## License

Expand Down
13 changes: 8 additions & 5 deletions bls12_381/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
[package]
authors = ["Sean Bowe <ewillbefull@gmail.com>"]
authors = [
"Sean Bowe <ewillbefull@gmail.com>",
"Jack Grigg <thestr4d@gmail.com>",
]
description = "Implementation of the BLS12-381 pairing-friendly elliptic curve construction"
documentation = "https://docs.rs/bls12_381/"
homepage = "https://github.com/zkcrypto/bls12_381"
license = "MIT/Apache-2.0"
name = "bls12_381"
repository = "https://github.com/zkcrypto/bls12_381"
version = "0.1.1"
version = "0.2.0"
edition = "2018"

[package.metadata.docs.rs]
Expand All @@ -26,18 +29,18 @@ default-features = false

[dependencies.ff]
path = "../ff"
version = "0.6"
version = "0.7"
default-features = false

[dependencies.group]
path = "../group"
version = "0.6"
version = "0.7"
default-features = false
optional = true

[dependencies.pairing]
path = "../pairing"
version = "0.16"
version = "0.17"
optional = true

[dependencies.rand_core]
Expand Down
32 changes: 32 additions & 0 deletions bls12_381/RELEASES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,35 @@
# 0.2.0

This release adds implementations of the `ff`, `group`, and `pairing` traits (with the
latter two being gated by the `groups` and `pairings` feature flags respectively).
Additional trait implementations (for standard traits) have been added where the `ff`,
`group`, and `pairing` trait bounds require them.

## Added
* `bls12_381::Bls12`, a `pairing::Engine` for BLS12-381 pairing operations. It implements
the following traits:
* `pairing::{Engine, MultiMillerLoop}`
* New trait implementations for `bls12_381::G1Projective`:
* `group::{Curve, Group, GroupEncoding, WnafGroup}`
* `group::prime::{PrimeCurve, PrimeGroup}`
* New trait implementations for `bls12_381::G1Affine`:
* `group::{GroupEncoding, UncompressedEncoding}`
* `group::prime::PrimeCurveAffine`
* `pairing::PairingCurveAffine`
* New trait implementations for `bls12_381::G2Projective`:
* `group::{Curve, Group, GroupEncoding, WnafGroup}`
* `group::prime::{PrimeCurve, PrimeGroup}`
* New trait implementations for `bls12_381::G2Affine`:
* `group::{GroupEncoding, UncompressedEncoding}`
* `group::prime::PrimeCurveAffine`
* `pairing::PairingCurveAffine`
* New trait implementations for `bls12_381::Gt`:
* `group::Group`
* New trait implementations for `bls12_381::MillerLoopResult`:
* `pairing::MillerLoopResult`
* New trait implementations for `bls12_381::Scalar`:
* `ff::{Field, PrimeField}`

# 0.1.1

Added `clear_cofactor` methods to `G1Projective` and `G2Projective`. If the crate feature `endo`
Expand Down
9 changes: 6 additions & 3 deletions ff/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
[package]
name = "ff"
version = "0.6.0"
authors = ["Sean Bowe <ewillbefull@gmail.com>"]
version = "0.7.0"
authors = [
"Sean Bowe <ewillbefull@gmail.com>",
"Jack Grigg <thestr4d@gmail.com>",
]
description = "Library for building and interfacing with finite fields"
readme = "README.md"
documentation = "https://docs.rs/ff/"
Expand All @@ -12,7 +15,7 @@ edition = "2018"

[dependencies]
byteorder = { version = "1", default-features = false }
ff_derive = { version = "0.6", path = "ff_derive", optional = true }
ff_derive = { version = "0.7", path = "ff_derive", optional = true }
rand_core = { version = "0.5", default-features = false }
subtle = { version = "2.2.1", default-features = false, features = ["i128"] }

Expand Down
4 changes: 2 additions & 2 deletions ff/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Add the `ff` crate to your `Cargo.toml`:

```toml
[dependencies]
ff = "0.5"
ff = "0.7"
```

The `ff` crate contains `Field`, `PrimeField`, `PrimeFieldRepr` and `SqrtField` traits.
Expand All @@ -29,7 +29,7 @@ First, enable the `derive` crate feature:

```toml
[dependencies]
ff = { version = "0.4", features = ["derive"] }
ff = { version = "0.7", features = ["derive"] }
```

And then use the macro like so:
Expand Down
2 changes: 1 addition & 1 deletion ff/ff_derive/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "ff_derive"
version = "0.6.0"
version = "0.7.0"
authors = [
"Sean Bowe <ewillbefull@gmail.com>",
"Jack Grigg <thestr4d@gmail.com>",
Expand Down
4 changes: 2 additions & 2 deletions group/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "group"
version = "0.6.0"
version = "0.7.0"
authors = [
"Sean Bowe <ewillbefull@gmail.com>",
"Jack Grigg <jack@z.cash>",
Expand All @@ -16,7 +16,7 @@ edition = "2018"

[dependencies]
byteorder = { version = "1", default-features = false }
ff = { version = "0.6", path = "../ff" }
ff = { version = "0.7", path = "../ff" }
rand = "0.7"
rand_xorshift = "0.2"
subtle = { version = "2.2.1", default-features = false }
Expand Down
12 changes: 4 additions & 8 deletions jubjub/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ homepage = "https://github.com/zkcrypto/jubjub"
license = "MIT/Apache-2.0"
name = "jubjub"
repository = "https://github.com/zkcrypto/jubjub"
version = "0.3.0"
version = "0.4.0"
edition = "2018"

[dependencies.bls12_381]
path = "../bls12_381"
version = "0.1"
version = "0.2"
default-features = false

[dependencies.byteorder]
Expand All @@ -24,12 +24,12 @@ default-features = false

[dependencies.ff]
path = "../ff"
version = "0.6"
version = "0.7"
default-features = false

[dependencies.group]
path = "../group"
version = "0.6"
version = "0.7"
default-features = false

[dependencies.rand_core]
Expand All @@ -43,10 +43,6 @@ default-features = false
[dev-dependencies]
criterion = "0.3"

[dev-dependencies.rand_core]
version = "0.5"
default-features = false

[dev-dependencies.rand_xorshift]
version = "0.2"
default-features = false
Expand Down
29 changes: 29 additions & 0 deletions jubjub/RELEASES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,32 @@
# 0.4.0

This release adds implementations of the `ff` and `group` traits. Additional trait
implementations (for standard traits) have been added where the `ff` and `group` trait
bounds require them.

## Added
* `jubjub::SubgroupPoint`, which represents an element of Jubjub's prime-order subgroup.
It implements the following traits:
* `group::{Group, GroupEncoding}`
* `group::prime::PrimeGroup`
* New trait implementations for `jubjub::ExtendedPoint`:
* `group::{Curve, Group, GroupEncoding, WnafGroup}`
* `group::cofactor::{CofactorCurve, CofactorGroup}`
* New trait implementations for `jubjub::AffinePoint`:
* `group::GroupEncoding`
* `group::cofactor::CofactorCurveAffine`
* New trait implementations for `jubjub::Fr`:
* `ff::{Field, PrimeField}`
* `jubjub::AffinePoint::is_identity`
* `jubjub::AffinePoint::to_extended`
* `jubjub::Scalar`, as an alias for `jubjub::Fr`.

## Changed
* We've migrated to `bls12_381 0.2`.
* `rand_core` is now a regular dependency.
* We depend on the `byteorder` crate again, as it is part of the `ff::PrimeField` trait.
* The benchmarks are now implemented using `criterion`.

# 0.3.0

This release now depends on the `bls12_381` crate, which exposes the `Fq` field type that we re-export.
Expand Down
6 changes: 3 additions & 3 deletions pairing/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "pairing"

# Remember to change version string in README.md.
version = "0.16.0"
version = "0.17.0"
authors = [
"Sean Bowe <ewillbefull@gmail.com>",
"Jack Grigg <jack@z.cash>",
Expand All @@ -18,8 +18,8 @@ edition ="2018"

[dependencies]
byteorder = "1"
ff = { version = "0.6", path = "../ff", features = ["derive"] }
group = { version = "0.6", path = "../group" }
ff = { version = "0.7", path = "../ff", features = ["derive"] }
group = { version = "0.7", path = "../group" }
rand_core = "0.5"
subtle = "2.2.1"

Expand Down
11 changes: 3 additions & 8 deletions pairing/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,10 @@

`pairing` is a crate for using pairing-friendly elliptic curves.

Currently, only the [BLS12-381](https://z.cash/blog/new-snark-curve.html)
construction is implemented.
`pairing` provides basic traits for pairing-friendly elliptic curve constructions.
Specific curves are implemented in separate crates:

## Roadmap

`pairing` is being refactored into a generic library for working with
pairing-friendly curves. After the refactor, `pairing` will provide basic traits
for pairing-friendly elliptic curve constructions, while specific curves will be
in separate crates.
- [`bls12_381`](https://crates.io/crates/bls12_381) - the BLS12-381 curve.

## [Documentation](https://docs.rs/pairing/)

Expand Down
13 changes: 6 additions & 7 deletions zcash_client_backend/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "zcash_client_backend"
description = "APIs for creating shielded Zcash light clients"
version = "0.2.0"
version = "0.3.0"
authors = [
"Jack Grigg <jack@z.cash>",
]
Expand All @@ -13,16 +13,15 @@ edition = "2018"

[dependencies]
bech32 = "0.7"
bls12_381 = { version = "0.1", path = "../bls12_381" }
bls12_381 = { version = "0.2", path = "../bls12_381" }
bs58 = { version = "0.3", features = ["check"] }
ff = { version = "0.6", path = "../ff" }
group = { version = "0.6", path = "../group" }
ff = { version = "0.7", path = "../ff" }
group = { version = "0.7", path = "../group" }
hex = "0.4"
jubjub = { version = "0.3", path = "../jubjub" }
pairing = { version = "0.16", path = "../pairing" }
jubjub = { version = "0.4", path = "../jubjub" }
protobuf = "=2.14.0" # 2.15 has MSRV of 1.44.1
subtle = "2"
zcash_primitives = { version = "0.2", path = "../zcash_primitives" }
zcash_primitives = { version = "0.3", path = "../zcash_primitives" }

[build-dependencies]
protobuf-codegen-pure = "2.14"
Expand Down
15 changes: 7 additions & 8 deletions zcash_client_sqlite/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "zcash_client_sqlite"
description = "An SQLite-based Zcash light client"
version = "0.0.0"
version = "0.1.0"
authors = [
"Jack Grigg <jack@z.cash>",
]
Expand All @@ -14,21 +14,20 @@ edition = "2018"
[dependencies]
bech32 = "0.7"
bs58 = { version = "0.3", features = ["check"] }
ff = { version = "0.6", path = "../ff" }
group = { version = "0.6", path = "../group" }
jubjub = { version = "0.3", path = "../jubjub" }
pairing = { version = "0.16", path = "../pairing" }
ff = { version = "0.7", path = "../ff" }
group = { version = "0.7", path = "../group" }
jubjub = { version = "0.4", path = "../jubjub" }
protobuf = "2"
rand_core = "0.5.1"
rusqlite = { version = "0.23", features = ["bundled"] }
time = "0.1"
zcash_client_backend = { version = "0.2", path = "../zcash_client_backend" }
zcash_primitives = { version = "0.2", path = "../zcash_primitives" }
zcash_client_backend = { version = "0.3", path = "../zcash_client_backend" }
zcash_primitives = { version = "0.3", path = "../zcash_primitives" }

[dev-dependencies]
rand_core = "0.5.1"
tempfile = "3"
zcash_proofs = { version = "0.2", path = "../zcash_proofs" }
zcash_proofs = { version = "0.3", path = "../zcash_proofs" }

[features]
mainnet = []
Loading

0 comments on commit 50140c5

Please sign in to comment.