Skip to content
This repository has been archived by the owner on Jul 5, 2024. It is now read-only.

[WIP] Halo2 24-08-2022 tag update #724

Merged
merged 20 commits into from
Sep 1, 2022
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
cbe8eeb
change: Update halo2 tag version in all Cargo.toml
CPerezz Aug 29, 2022
7c79eba
change: Use `Value` instead of `AssignedCell`.
CPerezz Aug 29, 2022
1c8b47f
remove: Strip keccak circuits from the repo
CPerezz Aug 29, 2022
af1f43e
tmp
CPerezz Aug 30, 2022
30abd92
fix: RegionCtx new API adoption without &mut holding
CPerezz Aug 31, 2022
e05c0c2
change: Use KZG, SHPLONK and Bn256 instead of generics
CPerezz Aug 31, 2022
eef1d1f
remove: Delete prover crate as was migrated to zkevm-chain
CPerezz Aug 31, 2022
b0f36d4
remove: Remove legacy keccak bench file
CPerezz Aug 31, 2022
15e8831
remove: Remove `group` dep from all crates Cargo.toml
CPerezz Aug 31, 2022
2bee754
update: Port circuit-benchmarks to latest halo2 version
CPerezz Aug 31, 2022
9625019
update: Port integration-tests to newest halo2 release
CPerezz Aug 31, 2022
76c5f65
Fix errors in zkevm-circuits tests
CPerezz Aug 31, 2022
9d504f9
Merge branch 'main' into halo2_24_08_2022_update
CPerezz Aug 31, 2022
b88480e
fix: Errors introduced in `main` branch merge
CPerezz Aug 31, 2022
d2ed5bb
fix: Load range_chip tables in SignVerigy and Tx Configs
CPerezz Aug 31, 2022
7d753bb
Fix Synthesis and lookup table errors
CPerezz Sep 1, 2022
d30b3e6
fix: Apply suggestions from @han0110 review
CPerezz Sep 1, 2022
36d4884
Fix Signature errors introduced on Compressed treatment
CPerezz Sep 1, 2022
e4a724d
fix: Fix tests and address review comments
CPerezz Sep 1, 2022
f039131
Merge branch 'main' into halo2_24_08_2022_update
CPerezz Sep 1, 2022
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
1,020 changes: 529 additions & 491 deletions Cargo.lock

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
members = [
"zkevm-circuits",
"bus-mapping",
"keccak256",
"geth-utils",
"keccak256",
"gadgets",
"integration-tests",
"circuit-benchmarks",
Expand All @@ -18,7 +18,7 @@ members = [
# and leads to a compilation error. This can be removed once the upstream PR
# is resolved: https://github.com/bitvecto-rs/bitvec/pull/141
bitvec = { git = "https://github.com/ed255/bitvec.git", rev = "5cfc5fa8496c66872d21905e677120fc3e79693c" }
halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2.git", tag = "v2022_06_03" }
halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2.git", tag = "v2022_08_19" }

# Definition of benchmarks profile to use.
[profile.bench]
Expand Down
2 changes: 1 addition & 1 deletion bus-mapping/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ mock = { path = "../mock", optional = true }

ethers-core = "0.6"
ethers-providers = "0.6"
halo2_proofs = { version = "0.1.0-beta.1" }
halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2.git", tag = "v2022_08_19" }
itertools = "0.10"
lazy_static = "1.4"
log = "0.4.14"
Expand Down
4 changes: 1 addition & 3 deletions circuit-benchmarks/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0"

[dependencies]
ff = "0.11"
halo2_proofs = { version = "0.1.0-beta.1" }
halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2.git", tag = "v2022_08_19" }
ark-std = { version = "0.3", features = ["print-trace"] }
zkevm-circuits = { path = "../zkevm-circuits" }
keccak256 = { path = "../keccak256" }
Expand All @@ -17,8 +17,6 @@ rand_xorshift = "0.3"
rand = "0.8"
itertools = "0.10"
eth-types = { path = "../eth-types" }
secp256k1 = { git = "https://github.com/privacy-scaling-explorations/halo2wrong", tag = "v2022_06_03", features = ["kzg"] }
group = "0.11"
env_logger = "0.9"
ethers-signers = "0.6"
mock = { path="../mock" }
Expand Down
44 changes: 31 additions & 13 deletions circuit-benchmarks/src/bit_keccak.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,17 @@
#[cfg(test)]
mod tests {
use ark_std::{end_timer, start_timer};
use halo2_proofs::plonk::{create_proof, keygen_pk, keygen_vk, verify_proof, SingleVerifier};
use halo2_proofs::halo2curves::bn256::Fr;
use halo2_proofs::plonk::{create_proof, keygen_pk, keygen_vk, verify_proof};
use halo2_proofs::poly::commitment::ParamsProver;
use halo2_proofs::poly::kzg::commitment::{KZGCommitmentScheme, ParamsKZG, ParamsVerifierKZG};
use halo2_proofs::poly::kzg::multiopen::{ProverSHPLONK, VerifierSHPLONK};
use halo2_proofs::poly::kzg::strategy::SingleStrategy;
use halo2_proofs::{
pairing::bn256::{Bn256, G1Affine},
poly::commitment::{Params, ParamsVerifier},
transcript::{Blake2bRead, Blake2bWrite, Challenge255},
halo2curves::bn256::{Bn256, G1Affine},
transcript::{
Blake2bRead, Blake2bWrite, Challenge255, TranscriptReadBuffer, TranscriptWriterBuffer,
},
};
use rand::SeedableRng;
use rand_xorshift::XorShiftRng;
Expand All @@ -30,29 +36,35 @@ mod tests {
circuit.generate_witness(&inputs);

// Initialize the polynomial commitment parameters
let rng = XorShiftRng::from_seed([
let mut rng = XorShiftRng::from_seed([
0x59, 0x62, 0xbe, 0x5d, 0x76, 0x3d, 0x31, 0x8d, 0x17, 0xdb, 0x37, 0x32, 0x54, 0x06,
0xbc, 0xe5,
]);

// Bench setup generation
let setup_message = format!("Setup generation with degree = {}", degree);
let start1 = start_timer!(|| setup_message);
let general_params: Params<G1Affine> = Params::<G1Affine>::unsafe_setup::<Bn256>(degree);
let verifier_params: ParamsVerifier<Bn256> =
general_params.verifier(degree as usize * 2).unwrap();
let general_params = ParamsKZG::<Bn256>::setup(degree, &mut rng);
let verifier_params: ParamsVerifierKZG<Bn256> = general_params.verifier_params().clone();
end_timer!(start1);

// Initialize the proving key
let vk = keygen_vk(&general_params, &circuit).expect("keygen_vk should not fail");
let pk = keygen_pk(&general_params, vk, &circuit).expect("keygen_pk should not fail");
// Create a proof
let mut transcript = Blake2bWrite::<_, _, Challenge255<_>>::init(vec![]);
let mut transcript = Blake2bWrite::<_, G1Affine, Challenge255<_>>::init(vec![]);

// Bench proof generation time
let proof_message = format!("Bit Keccak Proof generation with {} rows", degree);
let start2 = start_timer!(|| proof_message);
create_proof(
create_proof::<
KZGCommitmentScheme<Bn256>,
ProverSHPLONK<'_, Bn256>,
Challenge255<G1Affine>,
XorShiftRng,
Blake2bWrite<Vec<u8>, G1Affine, Challenge255<G1Affine>>,
KeccakBitCircuit<Fr>,
>(
&general_params,
&pk,
&[circuit],
Expand All @@ -66,10 +78,16 @@ mod tests {

// Bench verification time
let start3 = start_timer!(|| "Keccak Proof verification");
let mut verifier_transcript = Blake2bRead::<_, _, Challenge255<_>>::init(&proof[..]);
let strategy = SingleVerifier::new(&verifier_params);
let mut verifier_transcript = Blake2bRead::<_, G1Affine, Challenge255<_>>::init(&proof[..]);
let strategy = SingleStrategy::new(&general_params);

verify_proof(
verify_proof::<
KZGCommitmentScheme<Bn256>,
VerifierSHPLONK<'_, Bn256>,
Challenge255<G1Affine>,
Blake2bRead<&[u8], G1Affine, Challenge255<G1Affine>>,
SingleStrategy<'_, Bn256>,
>(
&verifier_params,
pk.get_vk(),
strategy,
Expand Down
62 changes: 39 additions & 23 deletions circuit-benchmarks/src/evm_circuit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,17 @@ impl<F: Field> Circuit<F> for TestCircuit<F> {
#[cfg(test)]
mod evm_circ_benches {
use super::*;
use crate::bench_params::DEGREE;
use ark_std::{end_timer, start_timer};
use halo2_proofs::plonk::{create_proof, keygen_pk, keygen_vk, verify_proof, SingleVerifier};
use halo2_proofs::plonk::{create_proof, keygen_pk, keygen_vk, verify_proof};
use halo2_proofs::poly::kzg::commitment::{KZGCommitmentScheme, ParamsKZG, ParamsVerifierKZG};
use halo2_proofs::poly::kzg::multiopen::{ProverSHPLONK, VerifierSHPLONK};
use halo2_proofs::poly::kzg::strategy::SingleStrategy;
use halo2_proofs::{
pairing::bn256::{Bn256, Fr, G1Affine},
poly::commitment::{Params, ParamsVerifier},
transcript::{Blake2bRead, Blake2bWrite, Challenge255},
halo2curves::bn256::{Bn256, Fr, G1Affine},
poly::commitment::ParamsProver,
transcript::{
Blake2bRead, Blake2bWrite, Challenge255, TranscriptReadBuffer, TranscriptWriterBuffer,
},
};
use rand::SeedableRng;
use rand_xorshift::XorShiftRng;
Expand All @@ -78,53 +82,65 @@ mod evm_circ_benches {
.expect("Cannot parse DEGREE env var as u32");

let circuit = TestCircuit::<Fr>::default();
let rng = XorShiftRng::from_seed([
let mut rng = XorShiftRng::from_seed([
0x59, 0x62, 0xbe, 0x5d, 0x76, 0x3d, 0x31, 0x8d, 0x17, 0xdb, 0x37, 0x32, 0x54, 0x06,
0xbc, 0xe5,
]);

// Bench setup generation
let setup_message = format!("Setup generation with degree = {}", degree);
let start1 = start_timer!(|| setup_message);
let general_params: Params<G1Affine> = Params::<G1Affine>::unsafe_setup::<Bn256>(degree);
let general_params = ParamsKZG::<Bn256>::setup(degree, &mut rng);
let verifier_params: ParamsVerifierKZG<Bn256> = general_params.verifier_params().clone();
end_timer!(start1);

let vk = keygen_vk(&general_params, &circuit).unwrap();
let pk = keygen_pk(&general_params, vk, &circuit).unwrap();

// Prove
let mut transcript = Blake2bWrite::<_, _, Challenge255<_>>::init(vec![]);
// Initialize the proving key
let vk = keygen_vk(&general_params, &circuit).expect("keygen_vk should not fail");
let pk = keygen_pk(&general_params, vk, &circuit).expect("keygen_pk should not fail");
// Create a proof
let mut transcript = Blake2bWrite::<_, G1Affine, Challenge255<_>>::init(vec![]);

// Bench proof generation time
let proof_message = format!("EVM Proof generation with {} degree", degree);
let proof_message = format!("EVM circuit Proof generation with {} rows", degree);
let start2 = start_timer!(|| proof_message);
create_proof(
create_proof::<
KZGCommitmentScheme<Bn256>,
ProverSHPLONK<'_, Bn256>,
Challenge255<G1Affine>,
XorShiftRng,
Blake2bWrite<Vec<u8>, G1Affine, Challenge255<G1Affine>>,
TestCircuit<Fr>,
>(
&general_params,
&pk,
&[circuit],
&[&[]],
rng,
&mut transcript,
)
.unwrap();
.expect("proof generation should not fail");
let proof = transcript.finalize();
end_timer!(start2);

// Verify
let verifier_params: ParamsVerifier<Bn256> = general_params.verifier(DEGREE * 2).unwrap();
let mut verifier_transcript = Blake2bRead::<_, _, Challenge255<_>>::init(&proof[..]);
let strategy = SingleVerifier::new(&verifier_params);

// Bench verification time
let start3 = start_timer!(|| "EVM Proof verification");
verify_proof(
let start3 = start_timer!(|| "EVM circuit Proof verification");
let mut verifier_transcript = Blake2bRead::<_, G1Affine, Challenge255<_>>::init(&proof[..]);
let strategy = SingleStrategy::new(&general_params);

verify_proof::<
KZGCommitmentScheme<Bn256>,
VerifierSHPLONK<'_, Bn256>,
Challenge255<G1Affine>,
Blake2bRead<&[u8], G1Affine, Challenge255<G1Affine>>,
SingleStrategy<'_, Bn256>,
>(
&verifier_params,
pk.get_vk(),
strategy,
&[&[]],
&mut verifier_transcript,
)
.unwrap();
.expect("failed to verify bench circuit");
end_timer!(start3);
}
}
152 changes: 0 additions & 152 deletions circuit-benchmarks/src/keccak_permutation.rs

This file was deleted.

Loading