Skip to content

Commit

Permalink
Merge branch 'main' into update-blst
Browse files Browse the repository at this point in the history
  • Loading branch information
nomaxg authored Feb 6, 2024
2 parents 8ddbed7 + d9c1b63 commit e701033
Show file tree
Hide file tree
Showing 29 changed files with 782 additions and 313 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ and follow [semantic versioning](https://semver.org/) for our releases.
- Switch from `crypto_box` to `chacha20poly1305` (with `crypto_kx` to establish shared secret) for AEAD.
- Supports `--cfg curve25519_dalek_backend="u32_backend"` RUSTFLAGS to select Curve25519 backend.
- Remove `Canonical(De)Serialize` on AEAD-related structs, and directly expose `serde::(De)Serialize` instead.
- [#475](https://github.com/EspressoSystems/jellyfish/pull/475) (`jf-primitives`) Ergonomics changes for Merkle tree
- Constructors are removed from trait definitions.
- Remove the unnecessary trait bounds, for example `I: From<u64>`.
- Restricting the index type for `AppendableMerkleTreeScheme` to be `u64`.
- Add new `update_with()` and `remove()` interface for the universal Merkle tree.
- Add new `iter()` interface for Merkle tree scheme, allows user to iterate through all elements that are in memory.

### Fixed

Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ documentation = "https://jellyfish.docs.espressosys.com"
repository = "https://github.com/EspressoSystems/jellyfish"

[workspace.dependencies]
itertools = { version = "0.10.1", default-features = false }
itertools = { version = "0.12.1", default-features = false }
tagged-base64 = { git = "https://github.com/EspressoSystems/tagged-base64.git", tag = "0.3.4" }
50 changes: 25 additions & 25 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion plonk/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ displaydoc = { version = "0.2.3", default-features = false }
downcast-rs = { version = "1.2.0", default-features = false }
dyn-clone = "^1.0"
espresso-systems-common = { git = "https://github.com/espressosystems/espresso-systems-common", tag = "0.4.0" }
hashbrown = "0.13.2"
hashbrown = "0.14.3"
itertools = { workspace = true }
jf-primitives = { path = "../primitives", default-features = false }
jf-relation = { path = "../relation", default-features = false }
Expand Down
4 changes: 2 additions & 2 deletions plonk/src/proof_system/snark.rs
Original file line number Diff line number Diff line change
Expand Up @@ -701,7 +701,7 @@ pub mod test {
for i in a0..(a0 + 4 * m) {
a.push(cs.create_variable(F::from(i as u64))?);
}
let b = vec![
let b = [
cs.create_public_variable(F::from(m as u64 * 2))?,
cs.create_public_variable(F::from(a0 as u64 * 2 + m as u64 * 4 - 1))?,
];
Expand Down Expand Up @@ -1734,7 +1734,7 @@ pub mod test {
for i in a0..(a0 + 4 * m) {
a.push(cs.create_variable(F::from(i as u64))?);
}
let b = vec![
let b = [
cs.create_public_variable(F::from(m as u64 * 2))?,
cs.create_public_variable(F::from(a0 as u64 * 2 + m as u64 * 4 - 1))?,
];
Expand Down
4 changes: 2 additions & 2 deletions primitives/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ espresso-systems-common = { git = "https://github.com/espressosystems/espresso-s
generic-array = { version = "0", features = [
"serde",
] } # not a direct dependency, but we need serde
hashbrown = "0.13.1"
hashbrown = "0.14.3"
itertools = { workspace = true, features = ["use_alloc"] }
jf-relation = { path = "../relation", default-features = false }
jf-utils = { path = "../utilities" }
Expand Down Expand Up @@ -66,7 +66,7 @@ ark-ed-on-bls12-381-bandersnatch = "0.4.0"
ark-ed-on-bn254 = "0.4.0"
bincode = "1.3"
criterion = "0.5.1"
hashbrown = "0.13.1"
hashbrown = "0.14.3"
sha2 = { version = "0.10.1" }

[[bench]]
Expand Down
18 changes: 8 additions & 10 deletions primitives/benches/bls_signature.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,16 +53,15 @@ fn bench_bls12381(c: &mut Criterion) {
benchmark_group.sample_size(500);
benchmark_group.throughput(Throughput::Elements(1u64));
let rng = &mut test_rng();
let pp = BLSSignatureScheme::param_gen(Some(rng)).unwrap();
let (sk, vk) = BLSSignatureScheme::key_gen(&pp, rng).unwrap();
let (sk, vk) = BLSSignatureScheme::key_gen(&(), rng).unwrap();
let msg = String::from_utf8(vec![b'X'; 1024]).unwrap();
let sig = BLSSignatureScheme::sign(&pp, &sk, &msg, rng).unwrap();
let sig = BLSSignatureScheme::sign(&(), &sk, &msg, rng).unwrap();

benchmark_group.bench_function("Sign", |b| {
b.iter(|| BLSSignatureScheme::sign(&pp, &sk, &msg, rng).unwrap())
b.iter(|| BLSSignatureScheme::sign(&(), &sk, &msg, rng).unwrap())
});
benchmark_group.bench_function("Verification", |b| {
b.iter(|| BLSSignatureScheme::verify(&pp, &vk, &msg, &sig).unwrap())
b.iter(|| BLSSignatureScheme::verify(&(), &vk, &msg, &sig).unwrap())
});

// TODO: aggregate signature benchmark not implemented
Expand All @@ -75,17 +74,16 @@ fn bench_bn254(c: &mut Criterion) {
benchmark_group.sample_size(100);
benchmark_group.throughput(Throughput::Elements(1u64));
let rng = &mut test_rng();
let pp = BLSOverBN254CurveSignatureScheme::param_gen(Some(rng)).unwrap();
let (sk, vk) = BLSOverBN254CurveSignatureScheme::key_gen(&pp, rng).unwrap();
let (sk, vk) = BLSOverBN254CurveSignatureScheme::key_gen(&(), rng).unwrap();
let msg = vec![12u8; 1000];
let msgs = vec![msg.as_slice(); 1000];
let sig = BLSOverBN254CurveSignatureScheme::sign(&pp, &sk, &msgs[0], rng).unwrap();
let sig = BLSOverBN254CurveSignatureScheme::sign(&(), &sk, msgs[0], rng).unwrap();

benchmark_group.bench_function("Sign", |b| {
b.iter(|| BLSOverBN254CurveSignatureScheme::sign(&pp, &sk, &msgs[0], rng).unwrap())
b.iter(|| BLSOverBN254CurveSignatureScheme::sign(&(), &sk, msgs[0], rng).unwrap())
});
benchmark_group.bench_function("Verification", |b| {
b.iter(|| BLSOverBN254CurveSignatureScheme::verify(&pp, &vk, &msgs[0], &sig).unwrap())
b.iter(|| BLSOverBN254CurveSignatureScheme::verify(&(), &vk, msgs[0], &sig).unwrap())
});

bench_aggregate::<BLSOverBN254CurveSignatureScheme, _>(
Expand Down
2 changes: 1 addition & 1 deletion primitives/benches/merkle_path.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ fn twenty_hashes(c: &mut Criterion) {

let leaf: Fq381 = rng.gen();

let mt = RescueMerkleTree::<Fq381>::from_elems(20, [leaf, leaf]).unwrap();
let mt = RescueMerkleTree::<Fq381>::from_elems(Some(20), [leaf, leaf]).unwrap();
let root = mt.commitment().digest();
let (_, proof) = mt.lookup(0).expect_ok().unwrap();

Expand Down
6 changes: 3 additions & 3 deletions primitives/src/circuit/merkle_tree/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ use super::rescue::RescueNativeGadget;
/// use ark_bls12_377::Fq;
/// use jf_primitives::circuit::merkle_tree::MerkleTreeGadget;
/// use jf_relation::{Circuit, PlonkCircuit};
/// use jf_primitives::merkle_tree::{prelude::RescueMerkleTree, MerkleTreeScheme, MerkleCommitment};
/// use jf_primitives::merkle_tree::{prelude::RescueMerkleTree, AppendableMerkleTreeScheme, MerkleTreeScheme, MerkleCommitment};
///
/// let mut circuit = PlonkCircuit::<Fq>::new_turbo_plonk();
/// // Create a 3-ary MT, instantiated with a Rescue-based hash, of height 1.
/// let elements = vec![Fq::from(1_u64), Fq::from(2_u64), Fq::from(100_u64)];
/// let mt = RescueMerkleTree::<Fq>::from_elems(1, elements).unwrap();
/// let mt = RescueMerkleTree::<Fq>::from_elems(Some(1), elements).unwrap();
/// let expected_root = mt.commitment().digest();
/// // Get a proof for the element in position 2
/// let (_, proof) = mt.lookup(2).expect_ok().unwrap();
Expand Down Expand Up @@ -565,7 +565,7 @@ mod test {
let mut circuit = PlonkCircuit::<F>::new_turbo_plonk();
let mut elements = (1u64..=9u64).map(|x| F::from(x)).collect::<Vec<_>>();
elements[uid as usize] = elem;
let mt = RescueMerkleTree::<F>::from_elems(2, elements).unwrap();
let mt = RescueMerkleTree::<F>::from_elems(Some(2), elements).unwrap();
let expected_root = mt.commitment().digest();
let (retrieved_elem, proof) = mt.lookup(uid).expect_ok().unwrap();
assert_eq!(retrieved_elem, &elem);
Expand Down
2 changes: 1 addition & 1 deletion primitives/src/circuit/rescue/native.rs
Original file line number Diff line number Diff line change
Expand Up @@ -937,7 +937,7 @@ mod tests {

// bad path: incorrect number of inputs
let mut circuit = PlonkCircuit::new_turbo_plonk();
let input_vec = vec![
let input_vec = [
F::from(11_u32),
F::from(144_u32),
F::from(87_u32),
Expand Down
Loading

0 comments on commit e701033

Please sign in to comment.