4.3.1 Shared Cryptographic Pattern

All PXP modules share a common structure:

  • Merkle commitments: compress eligibility/identity/reputation state into a Merkle root.

  • Groth16 zk-SNARK verification: validate a proof with minimal on-chain cost.

  • Nullifier anti-replay: prevent the same proof from being reused (one-time ticket semantics).

  • On-chain events: emit canonical signals (AccessGranted, IdentityPassUsed, …) for integrators.

Shared semantic concept

A PXP proof is essentially:

“I am eligible under the current root, and I can prove it without revealing who I am.”

and the nullifier means:

“I can’t reuse this proof to claim the same access twice (anti-replay).”

Generic PXP dataflow schema

sequenceDiagram
  participant U as User
  participant W as Wallet/Signer
  participant P as Proof Generator (client/backend)
  participant C as PXP Contract (L1)
  participant I as Integrator (dApp/backend)

  U->>P: Provide inputs (private witness, Merkle path, context)
  P->>P: Generate Groth16 proof + pubSignals
  U->>W: Sign & send tx
  W->>C: Submit proof(pubSignals, proof)
  C->>C: Verify proof + check root + check nullifier unused
  C-->>C: Mark nullifier used
  C-->>I: Emit Event (AccessGranted / IdentityPassUsed)
  I->>I: Grant access without learning identity/balance

Last updated