- Verify the aggregated BLS signature directly on-chain — Ethereum’s precompiles and Soroban’s host functions can run the pairing check natively.
- Verify it inside a zero-knowledge proof — a circuit checks the signature and the chain only verifies the (fixed-size) proof.
What was built
The auth circuit lives atproof_circuits/auth:
a Noir circuit that verifies an aggregated maker + bridger BLS12-381
signature over the order digest.
- Proves in under 30 seconds on the reference machine — the bar the deliverable set
- Four-case test pack: valid aggregate · single-signer aggregate · invalid signature rejected · wrong public key rejected
- Verifier generation works for both chains
Why the live flow verifies natively
Measured head-to-head, the native pairing check settles at a fraction of the gas of verifying a proof of the same statement — and it runs on Soroban in under two seconds inside a single transaction. Verifying in-circuit would also add ~30 seconds of proving to every settlement for no security gain: the statement being proven is exactly the check the chain can already run. So theCounterpartyVerifier contract on each chain performs the pairing
check natively at unlock, and the circuit stands as the proven fallback
path — if a future chain lacks BLS support, or a later design folds
signature checking into the deposit proof, the circuit is built, tested,
and benchmarked.
This is a deliberate engineering trade-off, not a de-scope: the circuit
met its acceptance bar, and the cheaper path won on evidence.