Skip to content

feat(scarb-prove): expose --proof-format flag for cairo_serde output#3125

Merged
maciektr merged 2 commits into
software-mansion:mainfrom
seritalien:feat/scarb-prove-proof-format
May 28, 2026
Merged

feat(scarb-prove): expose --proof-format flag for cairo_serde output#3125
maciektr merged 2 commits into
software-mansion:mainfrom
seritalien:feat/scarb-prove-proof-format

Conversation

@seritalien
Copy link
Copy Markdown
Contributor

Summary

Expose ProofFormat::CairoSerde on scarb prove via a new --proof-format flag, mirroring the upstream stwo-cairo-prover prove binary. Enables proof-composition pipelines (e.g. recursive aggregation in vauban-zkpay) where one Cairo program takes an Array<CairoProof> as input — currently impossible because scarb prove only writes CairoProofForRustVerifier-shaped JSON which loses the ExtendedStarkProof auxiliary data the in-Cairo verifier needs.

Motivation

stwo-cairo-prover already supports ProofFormat::CairoSerde through create_and_serialize_proof. scarb prove hardcodes ProofFormat::Json at extensions/scarb-prove/src/main.rs:108. This adds one CLI flag with default_value_t = ProofFormat::Json so behavior is preserved for existing callers.

Use case

Vauban Pay (vauban-org/vauban-zkpay) recursive aggregation: a vauban_zkpay_aggregation Cairo executable accepts K inner CairoProof instances via --arguments-file, calls stwo_cairo_air::verify_cairo K times, then is itself proven by Stwo to produce a single outer STARK that VaubanSettlement verifies on Starknet. Without cairo_serde output from scarb prove, the K inner proofs cannot be marshaled into the aggregation's args-file without reimplementing the prover offline.

Behavior

  • Default unchanged (--proof-format json).
  • --proof-format cairo-serde writes ["0x...", "0x...", ...].
  • scarb verify already accepts both formats via cairo_air::utils::ProofFormat round-trip.

Compat

Backwards-compatible. No breaking changes.

@seritalien seritalien requested a review from a team as a code owner May 16, 2026 16:29
@seritalien seritalien requested review from Arcticae and wawel37 and removed request for a team May 16, 2026 16:29
@maciektr
Copy link
Copy Markdown
Contributor

Thank you @seritalien !

Vauban Research and others added 2 commits May 27, 2026 18:21
Adds a --proof-format CLI flag to `scarb prove` so users can select
the serialization format used by stwo-cairo-prover's
`create_and_serialize_proof`. Default remains `json` to preserve
existing behavior; the new `cairo-serde` value emits the
felt-array layout expected by Cairo-side verifiers, enabling
proof-composition (recursive aggregation) pipelines.

- utils/scarb-extensions-cli/src/prove.rs: add `proof_format: ProofFormat`
  field with `default_value_t = ProofFormat::Json`.
- utils/scarb-extensions-cli/Cargo.toml: pull cairo-air (optional) under
  the `prove` feature so the enum is available where the Args are defined.
- extensions/scarb-prove/src/main.rs: thread `args.proof_format` into
  `create_and_serialize_proof` instead of the hardcoded `ProofFormat::Json`.
@maciektr maciektr force-pushed the feat/scarb-prove-proof-format branch from 9b41c97 to e1c257c Compare May 27, 2026 16:21
@maciektr maciektr merged commit 203da4d into software-mansion:main May 28, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants