Skip to content

feat: support IVC SNARK prover in e2e tests#3347

Draft
jpraynaud wants to merge 17 commits into
mainfrom
jpraynaud/3142-ivc-snark-e2e-tests
Draft

feat: support IVC SNARK prover in e2e tests#3347
jpraynaud wants to merge 17 commits into
mainfrom
jpraynaud/3142-ivc-snark-e2e-tests

Conversation

@jpraynaud

Copy link
Copy Markdown
Member

Conten

This PR includes the adaptation of the end to end tests to support the IVC SNARK proof system.

Pre-submit checklist

  • Branch
    • Crates versions are updated (if relevant)
    • CHANGELOG file is updated (if relevant)
    • Commit sequence broadly makes sense
    • Key commits have useful messages
  • PR
    • All check jobs of the CI have succeeded
    • Self-reviewed the diff
    • Useful pull request description
    • Reviewer requested

Issue(s)

Relates to #3142

@jpraynaud jpraynaud self-assigned this Jun 19, 2026
@jpraynaud jpraynaud added the prototype 🛠️ Prototype/PoC of a feature label Jun 19, 2026
Comment thread mithril-stm/src/proof_system/ivc_halo2_snark/verifier_setup.rs Fixed
Comment thread mithril-stm/src/protocol/aggregate_signature/signature.rs Fixed
Comment thread mithril-stm/src/proof_system/ivc_halo2_snark/verifier_setup.rs Fixed
Comment thread mithril-stm/src/protocol/aggregate_signature/clerk.rs Fixed
Comment thread mithril-stm/src/protocol/aggregate_signature/clerk.rs Fixed
Comment thread mithril-stm/src/protocol/aggregate_signature/signature.rs Fixed
@jpraynaud jpraynaud force-pushed the jpraynaud/3142-ivc-snark-e2e-tests branch 5 times, most recently from 5d864e3 to 20c4d28 Compare June 19, 2026 16:51
@github-actions

github-actions Bot commented Jun 19, 2026

Copy link
Copy Markdown

Test Results

     5 files  ± 0     206 suites  ±0   33m 12s ⏱️ - 2h 1m 43s
 3 248 tests  - 31   3 248 ✅  - 31  0 💤 ±0  0 ❌ ±0 
10 931 runs   - 11  10 931 ✅  - 11  0 💤 ±0  0 ❌ ±0 

Results for commit e509b98. ± Comparison against base commit 5d25797.

This pull request removes 42 and adds 11 tests. Note that renamed tests count towards both.
mithril-aggregator ‑ tools::genesis::operations::tests::bootstrap::lagrange_auto_augments_a_legacy_signer_with_a_fresh_schnorr_signer
mithril-end-to-end ‑ toolkit::context::tests::delay_calculation
mithril-stm ‑ circuits::halo2_ivc::tests::encoding::negative::slow::circuit_rejects_wrong_current_epoch_byte_range
mithril-stm ‑ circuits::halo2_ivc::tests::encoding::negative::slow::circuit_rejects_wrong_next_merkle_tree_commitment_byte_range
mithril-stm ‑ circuits::halo2_ivc::tests::encoding::negative::slow::circuit_rejects_wrong_next_protocol_parameters_byte_range
mithril-stm ‑ circuits::halo2_ivc::tests::golden::golden_verification_key_test::slow::golden_recursive_modification_test
mithril-stm ‑ circuits::halo2_ivc::tests::golden::positive::slow::genesis_base_case_circuit_is_accepted
mithril-stm ‑ circuits::halo2_ivc::tests::golden::positive::slow::replay_integrity_matches_stored_next_step_output
mithril-stm ‑ circuits::halo2_ivc::tests::in_circuit::accumulator::slow::circuit_rejects_with_wrong_next_accumulator_in_same_epoch_step
mithril-stm ‑ circuits::halo2_ivc::tests::in_circuit::genesis_gating::slow::genesis_step_accepts_garbage_certificate_proof_bytes
…
mithril-aggregator ‑ dependency_injection::builder::support::upkeep::tests::epoch_pruning_tasks_are_ordered_to_respect_foreign_keys
mithril-aggregator ‑ tools::genesis::operations::tests::bootstrap::lagrange_rejects_a_legacy_signer
mithril-common ‑ entities::epoch::tests::offset_to_signer_retrieval_epoch_saturating_clamps_at_genesis
mithril-end-to-end ‑ toolkit::context::tests::appearance_timeout_covers_configured_epochs
mithril-end-to-end ‑ toolkit::context::tests::timeout_for_epochs_scales_with_epoch_duration
mithril-end-to-end ‑ utils::spec_utils::tests::backoff_grows_until_ceiling
mithril-end-to-end ‑ utils::spec_utils::tests::poll_until_retries_until_predicate_satisfied
mithril-end-to-end ‑ utils::spec_utils::tests::poll_until_returns_after_error
mithril-end-to-end ‑ utils::spec_utils::tests::poll_until_returns_ok_value
mithril-end-to-end ‑ utils::spec_utils::tests::poll_until_times_out_when_no_value_received
…

♻️ This comment has been updated with latest results.

@jpraynaud jpraynaud force-pushed the jpraynaud/3142-ivc-snark-e2e-tests branch from 20c4d28 to e2c6d99 Compare June 22, 2026 11:23
@jpraynaud jpraynaud temporarily deployed to testing-preview June 22, 2026 14:30 — with GitHub Actions Inactive
@jpraynaud jpraynaud force-pushed the jpraynaud/3142-ivc-snark-e2e-tests branch 4 times, most recently from ccb06f4 to 50bddbb Compare June 23, 2026 08:57
@jpraynaud jpraynaud temporarily deployed to testing-preview June 23, 2026 09:12 — with GitHub Actions Inactive
@jpraynaud jpraynaud force-pushed the jpraynaud/3142-ivc-snark-e2e-tests branch from 50bddbb to 069b058 Compare June 23, 2026 11:30
@jpraynaud jpraynaud temporarily deployed to testing-preview June 23, 2026 16:06 — with GitHub Actions Inactive
jpraynaud added 11 commits June 25, 2026 17:07
Expose the trusted setup and key cache modules on wasm and gate the
blocking SRS download behind non-wasm so the verifier-only client builds.
Error instead of fabricating an ephemeral Schnorr signer when bootstrapping a Lagrange genesis with a legacy single-Ed25519 key, which produced an unverifiable Schnorr signature.
Pruning epoch settings before the signer registrations that reference
them broke the foreign key constraint after a large epoch gap.
Clamp the signer retrieval epoch to the genesis epoch when computing the
network configuration, so the aggregator can start at epoch 0.
The Mithril and Cardano stake distribution checks now poll until an
artifact reaches the expected epoch instead of asserting once on the latest one.
Replace fixed attempt counts and epoch-fraction delays with a deadline-based
poll_until! macro and bounded backoff, keeping detection responsive on long epochs.
@jpraynaud jpraynaud force-pushed the jpraynaud/3142-ivc-snark-e2e-tests branch from a73964e to e509b98 Compare June 25, 2026 15:07
@jpraynaud jpraynaud temporarily deployed to testing-preview June 25, 2026 19:44 — with GitHub Actions Inactive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

prototype 🛠️ Prototype/PoC of a feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants