Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
5a22acd
refactor: set n_proofs to 1 for all wrapper circuits
cedoor Mar 10, 2026
340e74a
feat: add 2 new events for dkg proof aggregation
cedoor Mar 10, 2026
636a3c9
feat: integrate aggregation flow for dkg phase
cedoor Mar 10, 2026
050a1b6
style: format code with cargo fmt
cedoor Mar 10, 2026
b51c862
refactor: improve node proof aggregation
cedoor Mar 10, 2026
72168c0
feat: add cross-node DKG proof aggregation
cedoor Mar 10, 2026
49d468a
style: format code with rustfmt
cedoor Mar 10, 2026
7884092
feat: fold C6 proofs incrementally
cedoor Mar 11, 2026
0d99a67
style: format code with rustfmt
cedoor Mar 11, 2026
6a3ecbb
ci: add recursive aggregation circuits to artifact upload
cedoor Mar 11, 2026
d60d88d
fix: filter dishonest parties from C1 proofs
cedoor Mar 11, 2026
7ef571c
refactor: generate last aggregated proof with -t evm
cedoor Mar 11, 2026
dd00dc9
refactor: remove unused aggregate_proof method
cedoor Mar 11, 2026
177383d
fix: use correct verify_honk_proof function in wrappers
cedoor Mar 11, 2026
4b43c59
refactor: wrapper proofs only verify one proof
cedoor Mar 11, 2026
ad305ae
fix: address coderabbit comments
cedoor Mar 11, 2026
3bdec0e
style: format code
cedoor Mar 11, 2026
04ee564
fix: filter dishonest parties from C1 proofs
cedoor Mar 11, 2026
6fb03c3
chore: copy share_computation esm/sk wrapper aliases
cedoor Mar 11, 2026
a8b6c9a
fix(aggregator): persist fold/coordination state for VerifyingC1 and …
cedoor Mar 11, 2026
1b18ac1
chore: add logging to node proof aggregator
cedoor Mar 11, 2026
f91c773
fix(build-circuits): guard share_computation alias copies with exists…
cedoor Mar 11, 2026
46a9311
fix: set right number of public inputs for pk_generation
cedoor Mar 11, 2026
3cfc73e
fix(aggregator): late FoldProofs handling and stuck fold recovery
cedoor Mar 11, 2026
04a6d87
chore: add DKGRecursiveAggregationComplete to forwardable events
cedoor Mar 11, 2026
3308161
chore: increase E3 duration to 500 seconds
cedoor Mar 11, 2026
fb3dd69
style: format code with rustfmt
cedoor Mar 11, 2026
cf3affb
chore: update E3 duration and timeouts
cedoor Mar 11, 2026
d5e9593
fix: reduce number of public inputs
cedoor Mar 12, 2026
6c29450
chore: increase duration for crisp & template tests
cedoor Mar 12, 2026
8b99395
refactor: remove unused variables
cedoor Mar 12, 2026
795d5f5
chore: update logic of E3 duration in crisp e2e tests
cedoor Mar 12, 2026
6f68460
chore: increase output decryption wait in crisp e2e tests
cedoor Mar 12, 2026
96a9f2b
chore: increase timeout in integration tests
cedoor Mar 12, 2026
c4154bd
chore: further increase E3 duration
cedoor Mar 12, 2026
7c455c6
refactor: set C5/C7 to evm target
cedoor Mar 13, 2026
f30c07a
chore: update generate-verifiers script
cedoor Mar 13, 2026
712873b
chore: created new verifiers for C5/C7 and fold
cedoor Mar 13, 2026
46e9aca
chore: increase E3 duration to 600 seconds
cedoor Mar 13, 2026
9dcd21c
style: format code with rustfmt
cedoor Mar 13, 2026
42de439
style: format code with rustfmt
cedoor Mar 13, 2026
a314c90
chore: use fully-qualified name for verifier deployment
cedoor Mar 13, 2026
4e046eb
chore: update E3 duration & integration test timeout
cedoor Mar 13, 2026
5b1070c
test: update integration test events
cedoor Mar 13, 2026
2810ec6
style: format code with rustfmt
cedoor Mar 13, 2026
0589bc9
test: adjust integration test timeout
cedoor Mar 13, 2026
335c80b
style: format code with rustfmt
cedoor Mar 13, 2026
6b867a3
test: adjust integration test timeout
cedoor Mar 13, 2026
25435ab
chore: update integration test timeout
cedoor Mar 13, 2026
fe0d640
chore: increase integration test timeout
cedoor Mar 13, 2026
d0d6acd
chore: update integration test timeout
cedoor Mar 13, 2026
d4e12b9
chore: update integration test timeout
cedoor Mar 14, 2026
7255c9c
chore: staleness check on provider
ctrlc03 Mar 14, 2026
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
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -722,6 +722,9 @@ jobs:
path: |
circuits/bin/dkg/target/
circuits/bin/threshold/target/
circuits/bin/recursive_aggregation/wrapper/dkg/target/
circuits/bin/recursive_aggregation/wrapper/threshold/target/
circuits/bin/recursive_aggregation/fold/target/
retention-days: 1
if-no-files-found: error

Expand Down
6 changes: 3 additions & 3 deletions circuits/bin/recursive_aggregation/wrapper/dkg/pk/src/main.nr
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
// without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE.

use bb_proof_verification::{UltraHonkProof, UltraHonkVerificationKey, verify_honk_proof_non_zk};
use bb_proof_verification::{UltraHonkVerificationKey, UltraHonkZKProof, verify_honk_proof};
use lib::math::commitments::compute_recursive_aggregation_commitment;

// Number of proofs.
Expand All @@ -14,12 +14,12 @@ pub global N_PUBLIC_INPUTS: u32 = 1;

fn main(
verification_key: UltraHonkVerificationKey,
proofs: [UltraHonkProof; N_PROOFS],
proofs: [UltraHonkZKProof; N_PROOFS],
public_inputs: [[Field; N_PUBLIC_INPUTS]; N_PROOFS],
key_hash: pub Field,
) -> pub Field {
for i in 0..N_PROOFS {
verify_honk_proof_non_zk(verification_key, proofs[i], public_inputs[i], key_hash);
verify_honk_proof(verification_key, proofs[i], public_inputs[i], key_hash);
}

let mut aggregated_public_inputs = Vec::new();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,23 @@
// without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE.

use bb_proof_verification::{UltraHonkProof, UltraHonkVerificationKey, verify_honk_proof_non_zk};
use bb_proof_verification::{UltraHonkVerificationKey, UltraHonkZKProof, verify_honk_proof};
use lib::configs::default::dkg::L_THRESHOLD;
use lib::{configs::default::N_PARTIES, math::commitments::compute_recursive_aggregation_commitment};

// Number of proofs.
pub global N_PROOFS: u32 = 2;
pub global N_PROOFS: u32 = 1;
/// Number of public inputs/outputs per proof.
pub global N_PUBLIC_INPUTS: u32 = (L_THRESHOLD * N_PARTIES) + 1;

fn main(
verification_key: UltraHonkVerificationKey,
proofs: [UltraHonkProof; N_PROOFS],
proofs: [UltraHonkZKProof; N_PROOFS],
public_inputs: [[Field; N_PUBLIC_INPUTS]; N_PROOFS],
key_hash: pub Field,
) -> pub Field {
for i in 0..N_PROOFS {
verify_honk_proof_non_zk(verification_key, proofs[i], public_inputs[i], key_hash);
verify_honk_proof(verification_key, proofs[i], public_inputs[i], key_hash);
}

let mut aggregated_public_inputs = Vec::new();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,24 @@
// without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE.

use bb_proof_verification::{UltraHonkProof, UltraHonkVerificationKey, verify_honk_proof_non_zk};
use bb_proof_verification::{UltraHonkVerificationKey, UltraHonkZKProof, verify_honk_proof};
use lib::configs::default::dkg::L_THRESHOLD;
use lib::configs::default::H;
use lib::math::commitments::compute_recursive_aggregation_commitment;

// Number of proofs.
pub global N_PROOFS: u32 = 2;
pub global N_PROOFS: u32 = 1;
/// Number of public inputs/outputs per proof.
pub global N_PUBLIC_INPUTS: u32 = (H * L_THRESHOLD) + 1;

fn main(
verification_key: UltraHonkVerificationKey,
proofs: [UltraHonkProof; N_PROOFS],
proofs: [UltraHonkZKProof; N_PROOFS],
public_inputs: [[Field; N_PUBLIC_INPUTS]; N_PROOFS],
key_hash: pub Field,
) -> pub Field {
for i in 0..N_PROOFS {
verify_honk_proof_non_zk(verification_key, proofs[i], public_inputs[i], key_hash);
verify_honk_proof(verification_key, proofs[i], public_inputs[i], key_hash);
}

let mut aggregated_public_inputs = Vec::new();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,25 @@
// without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE.

use bb_proof_verification::{UltraHonkProof, UltraHonkVerificationKey, verify_honk_proof_non_zk};
use bb_proof_verification::{UltraHonkVerificationKey, UltraHonkZKProof, verify_honk_proof};
use lib::{
configs::default::dkg::{L, N},
math::commitments::compute_recursive_aggregation_commitment,
};

// Number of proofs.
pub global N_PROOFS: u32 = 2;
pub global N_PROOFS: u32 = 1;
/// Number of public inputs/outputs per proof.
pub global N_PUBLIC_INPUTS: u32 = (2 * L * N) + 2;

fn main(
verification_key: UltraHonkVerificationKey,
proofs: [UltraHonkProof; N_PROOFS],
proofs: [UltraHonkZKProof; N_PROOFS],
public_inputs: [[Field; N_PUBLIC_INPUTS]; N_PROOFS],
key_hash: pub Field,
) -> pub Field {
for i in 0..N_PROOFS {
verify_honk_proof_non_zk(verification_key, proofs[i], public_inputs[i], key_hash);
verify_honk_proof(verification_key, proofs[i], public_inputs[i], key_hash);
}

let mut aggregated_public_inputs = Vec::new();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
// without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE.

use bb_proof_verification::{UltraHonkProof, UltraHonkVerificationKey, verify_honk_proof_non_zk};
use bb_proof_verification::{UltraHonkVerificationKey, UltraHonkZKProof, verify_honk_proof};
use lib::{
configs::default::{MAX_MSG_NON_ZERO_COEFFS, T, threshold::L},
math::commitments::compute_recursive_aggregation_commitment,
Expand All @@ -18,12 +18,12 @@ pub global N_PUBLIC_INPUTS: u32 =

fn main(
verification_key: UltraHonkVerificationKey,
proofs: [UltraHonkProof; N_PROOFS],
proofs: [UltraHonkZKProof; N_PROOFS],
public_inputs: [[Field; N_PUBLIC_INPUTS]; N_PROOFS],
key_hash: pub Field,
) -> pub Field {
for i in 0..N_PROOFS {
verify_honk_proof_non_zk(verification_key, proofs[i], public_inputs[i], key_hash);
verify_honk_proof(verification_key, proofs[i], public_inputs[i], key_hash);
}

let mut aggregated_public_inputs = Vec::new();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
// without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE.

use bb_proof_verification::{UltraHonkProof, UltraHonkVerificationKey, verify_honk_proof_non_zk};
use bb_proof_verification::{UltraHonkVerificationKey, UltraHonkZKProof, verify_honk_proof};
use lib::{configs::default::H, math::commitments::compute_recursive_aggregation_commitment};

// Number of proofs.
Expand All @@ -14,12 +14,12 @@ pub global N_PUBLIC_INPUTS: u32 = H + 1;

fn main(
verification_key: UltraHonkVerificationKey,
proofs: [UltraHonkProof; N_PROOFS],
proofs: [UltraHonkZKProof; N_PROOFS],
public_inputs: [[Field; N_PUBLIC_INPUTS]; N_PROOFS],
key_hash: pub Field,
) -> pub Field {
for i in 0..N_PROOFS {
verify_honk_proof_non_zk(verification_key, proofs[i], public_inputs[i], key_hash);
verify_honk_proof(verification_key, proofs[i], public_inputs[i], key_hash);
}

let mut aggregated_public_inputs = Vec::new();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,22 @@
// without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE.

use bb_proof_verification::{UltraHonkProof, UltraHonkVerificationKey, verify_honk_proof_non_zk};
use lib::configs::default::threshold::{L, N};
use bb_proof_verification::{UltraHonkVerificationKey, UltraHonkZKProof, verify_honk_proof};
use lib::math::commitments::compute_recursive_aggregation_commitment;

// Number of proofs.
pub global N_PROOFS: u32 = 1;
/// Number of public inputs/outputs per proof.
pub global N_PUBLIC_INPUTS: u32 = (L * N) + 3;
/// Number of public inputs/outputs per proof (sk_commitment, pk_commitment, e_sm_commitment).
pub global N_PUBLIC_INPUTS: u32 = 3;

fn main(
verification_key: UltraHonkVerificationKey,
proofs: [UltraHonkProof; N_PROOFS],
proofs: [UltraHonkZKProof; N_PROOFS],
public_inputs: [[Field; N_PUBLIC_INPUTS]; N_PROOFS],
key_hash: pub Field,
) -> pub Field {
for i in 0..N_PROOFS {
verify_honk_proof_non_zk(verification_key, proofs[i], public_inputs[i], key_hash);
verify_honk_proof(verification_key, proofs[i], public_inputs[i], key_hash);
}

let mut aggregated_public_inputs = Vec::new();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,23 @@
// without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE.

use bb_proof_verification::{UltraHonkProof, UltraHonkVerificationKey, verify_honk_proof_non_zk};
use bb_proof_verification::{UltraHonkVerificationKey, UltraHonkZKProof, verify_honk_proof};
use lib::configs::default::threshold::{L, N};
use lib::math::commitments::compute_recursive_aggregation_commitment;

// Number of proofs.
pub global N_PROOFS: u32 = 1;
/// Number of public inputs/outputs per proof.
pub global N_PUBLIC_INPUTS: u32 = 2 + 3 * L * N;
pub global N_PUBLIC_INPUTS: u32 = 2 + 2 * L * N;

fn main(
verification_key: UltraHonkVerificationKey,
proofs: [UltraHonkProof; N_PROOFS],
proofs: [UltraHonkZKProof; N_PROOFS],
public_inputs: [[Field; N_PUBLIC_INPUTS]; N_PROOFS],
key_hash: pub Field,
) -> pub Field {
for i in 0..N_PROOFS {
verify_honk_proof_non_zk(verification_key, proofs[i], public_inputs[i], key_hash);
verify_honk_proof(verification_key, proofs[i], public_inputs[i], key_hash);
}

let mut aggregated_public_inputs = Vec::new();
Expand Down
1 change: 1 addition & 0 deletions crates/aggregator/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
mod committee_finalizer;
pub mod ext;
mod keyshare_created_filter_buffer;
mod proof_fold;
mod publickey_aggregator;
mod repo;
mod threshold_plaintext_aggregator;
Expand Down
Loading
Loading