Backend Adapter Contract v1¶
Status: frozen for TKT-P3-39
Goal: keep wallet/covenant callers stable while allowing a real prover backend to replace the mock backend.
Scope¶
The adapter contract defines typed prove/verify requests and deterministic serialization surfaces.
Normative implementation:
packages/zk-backend/src/adapter.tspackages/zk-backend/src/fixture_builder_v1.ts
Compatibility implementation:
packages/zk-backend-mock/src/mock_backend_v1.ts
Typed contract¶
Public inputs:
encoding = piv1_bytespiv1Bytesis the canonical PIv1 byte payload
Witness payload (optional):
encoding = opaque_bytes_v1witnessBytesis backend-private and transport-neutral
Prove request:
publicInputs- optional
proofSections(encryptedPayloadBytes,hintsBytes) - optional
witness - optional
determinism
Verify request:
publicInputspbv1Bytes- optional
witness
Benchmark report:
- optional
proveMs,verifyMs,witnessBytes,proofBytes,proofBlobBytes,notes
Deterministic serialization¶
The adapter exports deterministic serializers for:
- prove request
- verify request
- benchmark report
These serializers are used for fixtures and regression checks so backend swaps do not silently drift byte-level request encoding.
Compatibility¶
- Legacy flat args remain accepted via normalizers.
mockBackendV1consumes both legacy and typed requests through the same adapter methods.- Existing wallet/covenant call sites do not require API changes for this ticket.