Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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