Skip to content

Bump zk-circuits crates to 4.3.0 (new wormhole verifier) - #684

Merged
n13 merged 3 commits into
mainfrom
n13/bump-wormhole-4.3.0
Sep 1, 2026
Merged

Bump zk-circuits crates to 4.3.0 (new wormhole verifier)#684
n13 merged 3 commits into
mainfrom
n13/bump-wormhole-4.3.0

Conversation

@n13

@n13 n13 commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

Bumps the seven zk-circuits pins (qp-wormhole-{aggregator,circuit,circuit-builder,inputs,prover,verifier} and qp-zk-circuits-common) from =4.2.0 to =4.3.0. Cargo.toml + lockfile only; no other crates move.

zk-circuits 4.3.0 carries the merged private work: aggregate private-batch fee enforcement (per-segment inequality instead of per-leaf, leaf public inputs 21 -> 22) and the private nullifier permutation (7-leaf private batch back to degree 15). The chain-side companions are already on mainpallets/wormhole sorts nullifiers per private segment for the pool tag and its build script comments assume degree_bits=15 for 7 leaves — so this pin bump is the missing piece that swaps in the new verifier.

Verified locally: cargo check -p qp-wormhole -p pallet-wormhole passes against 4.3.0 and the build script regenerates all circuit binaries; the batch_configs_match_circuit_crate parity test guards the canonical config in CI.

Note: #683 (rusty-crystals 4.1.1) touches the same Cargo.toml/Cargo.lock; whichever merges second gets a trivial lockfile refresh.

Cooldown-bypass-reason: first-party qp-wormhole 4.3.0 crates published today by our own CI; the chain-side code on main already expects the 4.3.0 circuit layout, so holding the pin at 4.2.0 for 30 days blocks the verifier upgrade.

Note for the cooldown gate: apply the dependency-cooldown-bypass label — the check re-runs on labeling and reads the reason line above.

Swaps in the 4.3.0 wormhole verifier: aggregate private-batch fee
enforcement (leaf public inputs 21 -> 22) and the private nullifier
permutation (7-leaf batch at degree 15). The chain-side companions are
already on main; this updates the pins and lockfile.
n13 added 2 commits September 1, 2026 00:27
Matches the 4.3.0 leaf layout (input_amount is now the 22nd public
input); the lib compiled but the test initializers still used the old
private-side field.
Ran the ignored regenerate_ tests; the 4.2.0-era fixtures no longer
deserialize against the 4.3.0 verifier. Full pallet-wormhole suite
passes locally (85 passed, 0 failed).
@n13 n13 added the bot-review label Aug 31, 2026

@n13 n13 left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer model: GPT Sol

Verdict (advisory): Approve

No blocking findings.

The seven 4.3.0 pins resolve as one coherent circuit stack, and the downloaded crates match upstream release commit b224e6dcbb89c03f90fbd26f68674c3b557ef36f. The chain companion is consistent with the new 22-felt leaf layout: input_amount is authenticated by the leaf proof, consumed by the private-batch aggregate fee constraint, and not forwarded by either aggregate proof. The privately permuted nullifier multiset remains compatible with the pallet's per-segment canonical pool tag and replay checks. Both regenerated fixtures deserialize, verify against the newly generated artifacts, and exercise settlement successfully.

Validation:

  • cargo +nightly fmt --all -- --check
  • SKIP_WASM_BUILD=1 cargo check --locked -p qp-wormhole -p pallet-wormhole
  • SKIP_WASM_BUILD=1 cargo test --locked -p pallet-wormhole --lib — 85 passed, 3 ignored
  • cargo test --locked -p qp-zk-circuits-common --lib permutation_switches and ... permute_digests4 — 4 passed
  • Exact upstream 4.3.0 source: cargo test --locked --release -p qp-wormhole-aggregator --lib aggregate_fee_regressions — passed
  • git diff --check — passed

GitHub format, dependency-cooldown, clippy/doc, and large-Linux matrix checks are green at this head.

@n13 n13 removed the bot-review label Aug 31, 2026
@n13
n13 merged commit f69fade into main Sep 1, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant