fixtures: stark-vauban-pay-v1 v0 ; Axis 1 STARK receipt conformance - #2413
fixtures: stark-vauban-pay-v1 v0 ; Axis 1 STARK receipt conformance#2413seritalien wants to merge 1 commit into
Conversation
Vauban-authored Axis 1 conformance fixture set, paralleling the coalition structure : Axis 0 ; AlgoVoi substrate (this PR's sibling, x402-foundation#2412) Axis 2 ; FeedOracle hybrid-PQC (PR x402-foundation#2411) Axis 3 ; andysalvo work-receipt (PR x402-foundation#2398) Proof scheme : stark-vauban-pay-v1 Proof system : Stwo Circle STARK M31 (FRI-based, post-quantum) Anchor chain : Starknet Canonicaliser : RFC 8785 (JCS), digest SHA-256 lowercase hex Four vectors : 0001-baseline PASS canonical reference 0002-field-name-load-bearing FAIL payment_hash -> paymentHash 0003-stark-proof-tamper-evidence FAIL proof_blob 1-byte mutation 0008-interop-shared-payment-hash PASS key-reorder + Axis 2/3 bind Cross-axis interop bindings : payment_hash 2ed186eb... shared with FeedOracle Axis 2 (PR x402-foundation#2411) action_ref 10d8a38c... shared with andysalvo Axis 3 (PR x402-foundation#2398) Discipline alignment with x402-foundation#2326 v3 : canon_version field shipped on every vector (good-discipline default ; stark-vauban-pay-v1 not under MiCA Art. 80 retention by default, but the field discipline is the same) Field names treated as load-bearing opaque UTF-8 bytes Asymmetric failure surface (producer-loud / verifier-silent) Open question flagged in README §Open Questions : BoundReceipt<R> Rust type (nested receipt + Option<action_ref>) does NOT match the flat receipt_core shape used in this fixture. The receipt_core combines VPSF Claim fields with x402 wire extensions for digest purposes. This is an open TSC item on x402-foundation#2357 ; the fixture documents the field mapping rather than papering over it. Conformance runner runner-stark-axis-1 is TBD ; contribution welcome. Expected result : 4/4 vectors pass + 1/1 interop bind (vector 0008 digest equals vector 0001 digest). Refs x402-foundation#2357 x402-foundation#2326 x402-foundation#2411 x402-foundation#2398 x402-foundation#2332
|
Someone is attempting to deploy a commit to the Coinbase Team on Vercel. A member of the Team first needs to authorize it. |
|
Opening a TSC question on the |
|
Thanks for participating in the x402 ecosystem. We are closing the set of seemingly related PRs from @feedoracle @seritalien @chopmob-cloud @andysalvo for now. Please make your case in an Issue first, with a concise description of the problem, scope and value add, |
Per @andysalvo's greenlight on #2398 ("STARK Axis 1 under `fixtures/stark-vzk2p-v1/v0/` as a separate PR also makes sense"), opening this PR with the Vauban-anchored Axis 1 fixture set.
Note on naming : the proof scheme was renamed from `stark-vzk2p-v1` to `stark-vauban-pay-v1` per Vauban brand discipline (the `vzk2p` codename is internal-only, the public surface uses the `vauban-pay` brand). The directory path follows the rename.
What this PR adds
`fixtures/stark-vauban-pay-v1/v0/` with :
Total : 4 vectors, 1 cross-vector interop bind.
Cross-axis interop bindings
Every vector in this set shares the canonical values with sibling coalition fixture sets so a conformance harness can validate the cross-axis bindings byte-for-byte :
`payment_hash` = `2ed186ebc66947eaac6a05a88c7bc096ee07ac11a2c44bb5580bd72b3670f580`
Shared verbatim with FeedOracle Axis 2 `fixtures/hybrid-pqc/v0/` per PR Add hybrid-pqc conformance fixtures (v0) — Axis 2 receipt-integrity #2411.
`action_ref` = `10d8a38c01d8672176aa6e5209a368fde3e1831640d69e15283142b35880c2c1`
Shared verbatim with andysalvo Axis 3 `fixtures/action-ref-verify/v0/` per PR feat(fixtures): add action-ref-verify conformance vectors for work-receipt binding #2398.
This is the cross-axis substrate the coalition discussed on #2357 : the four axes (substrate, STARK, hybrid-PQC, work-receipt) compose without overlap, each axis independently verifiable, with shared binding values that let a downstream conformance suite validate the interop is real.
Canonicalisation discipline alignment with #2326 v3
This fixture set adopts the v3-converged discipline :
Open question (intentionally surfaced rather than hidden)
The `BoundReceipt` Rust type in `crates/zkpay-x402/src/lib.rs` is a nested structure (`receipt: R`, `action_ref: Option<[u8; 32]>`). The fixture's `receipt_core` is a flat structure that combines VPSF Claim fields with x402 wire extensions for digest purposes. The mapping between the Rust type and the canonical fixture shape is documented in the README §Open Questions. This is an open TSC item on #2357 that the fixture surfaces explicitly rather than papering over.
Two resolutions are plausible :
Vauban's working preference is option 2 (clean separation between in-memory type and canonical wire form). Feedback welcome.
Cross-implementation status
Conformance runner
`runner-stark-axis-1` is TBD ; expected result 4/4 vectors + 1/1 interop bind. Contribution welcome ; the privacy_class runner pattern from gist `seritalien/b0b86baabae33e289fdb6d2f3fb30130` transfers cleanly (only delta is the field naming from `attestation_body` to `receipt_core` and the digest field name).
Related fixture sets
License
Apache 2.0
Refs #2357 #2326 #2411 #2398 #2332