Identity Proofs (Cardano)

Here we explain how Fairway encodes KYC/AML eligibility on Cardano using a single UTXO with a Merkle root, Fairway signature, a verification timestamp, and a reference to a Midnight proof UTXO.

Background

Instead of minting identity tokens per user (e.g., CIP-113 or NFTs), Fairway maintains a canonical Compliance UTXO that contains:

  • merkle_root β†’ commitment to all compliant addresses + claims.

  • sanctions_epoch β†’ global counter for sanctions/risk updates.

  • fairway_sig β†’ Fairway’s signature binding root + epoch + Midnight ref.

  • midnight_ref β†’ pointer to the ZK-proof UTXO on Midnight (audit trail).

Each Merkle leaf represents a user and includes:

  • address β†’ wallet identifier.

  • claims β†’ e.g., KYC2, EU_RESIDENT.

  • kyc_verified_at β†’ timestamp of last KYC check.

Eligibility is checked by proving Merkle membership and verifying both:

  • Fairway signature over the Compliance UTXO state.

  • Freshness conditions (timestamp vs. sanctions epoch).


Data Model

UTXO Datum

Merkle Leaf


Flow


Validator Pseudocode (Aiken)

  • max_age is defined by the protocol/institution (e.g., 180 days).

  • The validator never opens raw PII.

  • midnight_ref links to a verifiable ZK proof on Midnight for audits.


Benefits

  • Compact β†’ one UTXO anchors all compliant users.

  • Flexible β†’ institutions define their own max_age for KYC proofs.

  • Auditable β†’ midnight_ref links back to ZK proof.

  • Compliant β†’ sanctions freshness via epoch, KYC recency via timestamp.

  • Composable β†’ eligibility checks slot directly into LP/staking validators.


Next Steps

Last updated

Was this helpful?