Zero-Knowledge Compliance

User-controlled compliance for privacy-preserving systems

ZKC enables users to generate cryptographic proofs satisfying regulatory requirements without revealing underlying private data. Compliance becomes a capability controlled by the user, not an enforcement mechanism controlled by the protocol. Zero-knowledge proofs, authenticated proof requests, holder-custodied disclosure receipts, privacy-preserving revocation, and verifier-controlled trust policies.

Design Principles

User Sovereignty

Users control when, what, and to whom they disclose. Compliance is an optional capability, not a mandatory constraint enforced by the protocol.

Protocol Neutrality

No compliance logic in the base protocol. ZKC is a separate layer that integrates with privacy-preserving payment systems without compromising their design.

Verifier Flexibility

Verifiers decide what proofs they accept and which issuers they trust. No central authority dictates compliance requirements.

Portability

Works across multiple chains and payment systems. Designed to integrate with ZKA, Namada, Penumbra, Ethereum L2s, and any privacy-preserving settlement layer.

Privacy Preservation

Proofs reveal the minimum necessary information. Anonymous presentation is the default; scoped continuity and globally linkable presentation require progressively more explicit consent.

Verifier Accountability

Every disclosure request is signed by the verifier. The holder keeps a self-contained receipt recording what was requested, for which purpose, and whether it was answered.

Open Predicates

No credential, predicate, or issuer is privileged. Predicate circuits are inspectable and versioned, and conforming SDKs refuse opaque predicates by default.

Protocol Composition

ZKC establishes eligibility, ZKM authorization establishes permission to act, and ZKA settlement establishes whether the value transition settles. Each remains independently verified.

Compliance as Capability

ZKC inverts the traditional compliance model:

Traditional Model ZKC Model
Protocol enforces compliance User generates compliance proofs
Counterparty demands access User chooses what to disclose
Compliance is mandatory Compliance is optional capability
Protocol knows identity Protocol is identity-blind
Regulators access protocol Regulators verify user proofs

Compliance Proof Example

Illustrative pseudocode: users generate ZK proofs to satisfy verifier requirements without revealing private data. The normative interfaces are defined in the specification.

// User wants to deposit to a compliant exchange
// Exchange requires: KYC + sanctions clearance

// 1. User already holds credentials from trusted issuers
const credentials = client.listCredentials({
  types: ["zkc:cred:kyc:v1", "zkc:cred:sanctions:v2"],
  notExpired: true
});

// 2. Exchange signs an Authenticated Proof Request (APR)
const request = {
  requirements: {
    proofTypes: ["zkc:proof:kyc:v2", "zkc:proof:sanctions:v8"],
    parameters: {
      "zkc:proof:kyc:v2": { minLevel: "enhanced" },
      "zkc:proof:sanctions:v8": {
        canonicalSet: [100, 200],
        setRoot: "0x2dd2eee7fc84e095b925d9a97a60a1ad3647661c51935f61d4c3dacbff4ec3ec"
      }
    },
    maxProofAge: Duration.hours(24),
    context: {
      profile: "zkc:context:purpose-bound:v1",
      value: purposeBoundContext,
      purpose: "exchange deposit eligibility"
    }
  },
  trustPolicy: exchange.trustPolicy
};
const apr = {
  request,
  verifierId: exchange.id,
  nonce,
  issuedAt,
  expiresAt,
  signature: exchangeSignature
};

// 3. The holder SDK validates the APR signature, expiry, nonce, and
// purpose-bound context, then records separate consent for each atomic
// predicate before calling the canonical generation interface.
const proof = await client.generateProof(apr.request, credentials);
// Proves: valid KYC + clear sanctions screening
// Hides: name, address, DOB, specific issuer, credential ID
// Default presentation: zkc:presentation:anonymous:v1

// 4. The verifier validates the same signed APR and proof (~15ms)
const result = await verifyComplianceProof(exchange, proof, apr.request, apr);
// result.valid === true

// 5. The holder retains a Disclosure Receipt for the signed request

The exchange learns only that the user meets requirements. No personal data crosses the wire.

Credential Types

ZKC publishes non-exclusive, well-known reference credential types for interoperability. Verifiers may accept other open credential and predicate definitions.

KYC

Prove identity verification level without revealing personal data. Tiered: basic, enhanced, institutional.

ZKC-Core

Jurisdiction

Prove residency in an allowed jurisdiction (or absence from blocked list) via set membership proofs.

ZKC-Standard

Accreditation

Prove accredited investor or professional status without revealing income or net worth.

ZKC-Standard

$ Source of Funds

Prove funds originated from verified sources without revealing exact amounts or account details.

ZKC-Standard

Tax Compliance

Prove tax obligations have been met for a jurisdiction without revealing filed amounts.

ZKC-Standard

Sanctions Clearance

Prove absence from OFAC, UN, EU, UK sanctions lists with recent screening verification.

ZKC-Standard

Attribute Set

Selectively disclose fixed-position attributes while proving every revealed value came from issuer-authoritative state.

Reference Profile

Protocol Stack

LAYER 01 Proof Types KYC Jurisdiction Accreditation Tax Source of Funds LAYER 02 Attestation Layer Credential Format Issuance Revocation Registry LAYER 03 Client SDK Proof Generation Key Management Credential Store LAYER 04 Verifier Spec Proof Formats Verification Trust Policies

Getting Started

Read the Spec

Understand credential types, proof circuits, attestation layer, and verifier integration.

View Specification

Agent Integration

LLM-optimized documentation for autonomous agent consumption and automated compliance.

View llms.txt

ZKA Protocol

Learn how ZKC integrates with ZKA privacy-preserving payments for compliant shielded transactions.

Visit ZKA.dev

Use Cases

  • Compliant DeFi Access: Prove KYC and accreditation status to access regulated DeFi protocols without revealing personal data
  • Cross-Border Compliance: Prove jurisdiction residency for regulatory requirements using set membership proofs
  • Institutional On-Ramps: Satisfy exchange deposit requirements with aggregated proofs covering KYC, source of funds, and sanctions clearance
  • Tax Reporting: Prove tax compliance to counterparties without revealing filed amounts or specific obligations
  • Agent Compliance: AI agents automatically generate and present compliance proofs based on configurable policies
  • Privacy-Preserving AML: Demonstrate sanctions screening clearance without revealing identity to the verifier