Skip to main content

Smart Contracts

Deeproof uses smart contracts on the Mantle Sepolia testnet to verify proofs and store verification states.

Contract Addresses

Contract NameAddressDescription
Groth16 Verifier0x21a3Cfdeb67f06C9353E43306c5E34f2C2E905e3The main contract that verifies ZK proofs and stores the registry of verified users.

Contract Functions

verifyProof()

This is the core function called by the frontend.

Inputs:

  • _pA, _pB, _pC: Cryptographic proof points generated by the ZK circuit.
  • _pubSignals: Public inputs, containing the minKycLevel and your identityCommitment.

What it does:

  1. Verifies Math: Checks if the proof points A, B, and C mathematically correspond to the pubSignals according to the Verification Key.
  2. Prevents Replay: Checks if this specific proof has been used before (Nullifier check).
  3. Updates Registry: If valid, it records your address as "Verified" in the contract's storage.

Developer Integration

(To be completed when SDK is finalized)

Third-party protocols can check a user's status by calling:

function isVerified(address user) external view returns (bool);