Repository navigation
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
CSP benchmarks
Prover time, peak RSS, peak heap, and verifier time are arithmetic means across the iterations. Peak heap comes from the largest Each metric cell shows the current value followed by the percentage delta against the latest successful Results
|
1dc088c to
27ba3c6
Compare
…ey layout MavrosProver now serializes the column map and WitnessLayout gained the guard and return fields, so keys written before this branch no longer parse. Bump the minor so a stale .pkp or .nps is rejected with a version error instead of a deserialization failure, as #457 did for the previous MavrosSchemeData change. Verifier files are unchanged. diff --git a/provekit/common/src/file/binary_format.rs b/provekit/common/src/file/binary_format.rs index 3e36b19..68589d9 100644 --- a/provekit/common/src/file/binary_format.rs +++ b/provekit/common/src/file/binary_format.rs @@ -18,13 +18,13 @@ pub const XZ_MAGIC: [u8; 6] = [0xfd, 0x37, 0x7a, 0x58, 0x5a, 0x00]; // --------------------------------------------------------------------------- pub const PROVER_FORMAT: [u8; 8] = *b"PrvKitPr"; -pub const PROVER_VERSION: (u16, u16) = (2, 0); +pub const PROVER_VERSION: (u16, u16) = (2, 1); pub const VERIFIER_FORMAT: [u8; 8] = *b"PrvKitVr"; pub const VERIFIER_VERSION: (u16, u16) = (2, 1); pub const NOIR_PROOF_SCHEME_FORMAT: [u8; 8] = *b"NrProScm"; -pub const NOIR_PROOF_SCHEME_VERSION: (u16, u16) = (2, 0); +pub const NOIR_PROOF_SCHEME_VERSION: (u16, u16) = (2, 1); pub const NOIR_PROOF_FORMAT: [u8; 8] = *b"NPSProof"; pub const NOIR_PROOF_VERSION: (u16, u16) = (2, 0);
1fc2b56 to
137cf91
Compare
|
|
||
| pub const VERIFIER_FORMAT: [u8; 8] = *b"PrvKitVr"; | ||
| pub const VERIFIER_VERSION: (u16, u16) = (3, 0); | ||
| pub const VERIFIER_VERSION: (u16, u16) = (3, 1); |
There was a problem hiding this comment.
Should these be major version bumps?
A 3.0 reader accepts 3.1 files, and postcard silently ignores the appended fields. For the verifier, that means dropping mavros_digest and using a zero session instead of rejecting the incompatible key.
We should bump the major versions and document that existing keys need regeneration.
| .verify(&proof.whir_r1cs_proof, &proof.public_inputs, &self.r1cs)?; | ||
| .verify_with_session( | ||
| &proof.whir_r1cs_proof, | ||
| &proof.public_inputs, |
There was a problem hiding this comment.
This predates the PR, but could we check
proof.public_inputs.len() == self.r1cs.num_public_inputs before verification?
A modified prover can omit the public return, and the unchanged trusted verifier still accepts the proof. Binding the manifest digest does not enforce its expected public-input count.
a4f2a3d), which includes Add a versioned r1cs.bin artifact carrying a witness manifest reilabs/mavros#414. Itsr1cs.bincarries a versioned header, a witness manifest and a digest over the R1CS and manifest. A legacy bincoder1cs.binis rejected with a hint to recompile at the pinned revision.witness[1..=n], and the prover applies the same permutation to the witness and to the AD derivatives (skipped when the map is the identity).returnentry inProver.tomlis optional and, when present, checked against the computed value, asnargodoes. The return guard Mavros used to emit is gone.WhirR1CSVerifiergainsverify_with_session;verifydelegates to it with no session. Prover, scheme and verifier formats move to 3.1.--r1csis no longer needed for SPARK with the Mavros compiler.scripts/mavros_parity.shruns circuits through both frontends and compares public inputs, prove time and proof size. A scheduled workflow (Monday and Thursday, plus dispatch) runs it over every binary example with inputs, building the Mavros CLI on stable at the pinned revision.Mavros is still not the primary compiler. A follow-up PR will make Mavros primary and the Noir R1CS path secondary, and once Mavros has a stable release the other backend will be removed.