Skip to Content
DocumentationSystem Diagram

System Diagram

The core flow

The originating VASP generates a ZK proof that compliance was performed, encrypts the PII, and sends both to the counterparty. The counterparty verifies the proof without seeing the raw data. On-chain recording is optional.


Step by step

1. Proof generation (originating VASP)

The Circom circuit composes four subcircuits: credential validity, sanctions non-membership, amount tier, and domain binding + expiration. Output is a 192-byte Groth16 proof with 16 public signals.

2. What goes into the hybrid payload

The hybrid payload bundles the ZK proof with AES-256-GCM encrypted PII. The proof is publicly verifiable. The PII is readable only by the intended counterparty.

3. Transmission options

The payload is transmitted via existing Travel Rule protocols. clearproof replaces the payload content, not the transport.

4. Beneficiary verification

The beneficiary verifies the proof locally in under 1ms using the TypeScript SDK. PII is decrypted for record-keeping as required by FATF.


On-chain contracts

Four contracts deployed on Sepolia. ComplianceRegistry orchestrates verification by calling the Groth16Verifier, checking the VASPRegistry, and validating against the SanctionsOracle.


What the proof reveals vs. hides

All 16 public signals are designed to prove compliance without exposing private data. See the circuits page for the full signal table.


Sanctions oracle update

The sanctions Merkle tree is rebuilt daily from OFAC and EU data. Updates follow a PR-based workflow with human review before the root is relayed on-chain.


VASP discovery

New VASPs join by publishing a well-known JSON file and registering on-chain. Discovery is automatic — no manual configuration.


Regulatory audit path

Regulators access plaintext PII through the VASP’s internal records, not through the blockchain. The ZK proof and on-chain events provide a verifiable audit trail.