All projects

TACIT

Private, compliant, and atomic OTC settlement for institutional cross-chain trading.

Risk & Compliance Privacy

What it is

Tacit is a private OTC settlement protocol where two counterparties settle pre-negotiated trades with automated compliance verification without revealing identities, amounts, or assets on-chain.

Crypto OTC trading moves $39B+ daily and grew 109% in 2025, yet there is no way to settle these trades privately, compliantly, and without intermediaries at the same time. Centralized desks introduce custodial risk. Decentralized dark pools (Renegade) lack compliance. Public DEXs expose everything. Institutions need all four: privacy + compliance + decentralization + atomic settlement.

HOW IT WORKS:

  1. Party A creates a trade on the frontend, deposits assets (ETH or USDC) into the OTCVault escrow, and encrypts trade parameters on-chain. They receive a matching code.
  2. Party B enters the matching code, deposits their side, and confirms encrypted terms.
  3. A CRE Workflow running inside a TEE automatically: decrypts both parties' parameters, verifies they match bilaterally, calls the OFAC sanctions API via Confidential HTTP, calls the KYC verification API via Confidential HTTP, executes atomic Delivery-vs-Payment settlement, and records a compliance attestation on-chain.
  4. The only public output is: Trade ID, Compliance: PASS, Timestamp. No amounts, no identities, no assets visible.

If compliance fails, both parties are automatically refunded. Cross-chain settlement (Sepolia ↔ Arbitrum Sepolia) is supported via CCIP.

Test it!
tacit-protocol.vercel.app

How it Works

SMART CONTRACTS:

  • OTCVault.sol: Non-custodial escrow with encrypted parameters, ETH + ERC-20 support, CRE report receiver (onReport), and CCIP cross-chain sender. Deployed on Sepolia.
  • ComplianceRegistry.sol: Immutable compliance attestations, stores only tradeId, pass/fail, timestamp. Zero PII. Deployed on Sepolia.
  • OTCVaultReceiver.sol: CCIP receiver for destination-chain DvP settlement. Deployed on Arbitrum Sepolia.
  • 175 Foundry tests across 7 test suites (unit, E2E happy path, failure paths, cross-chain).

TX HASH:
https://sepolia.etherscan.io/tx/0x4a8515778a436c21afabed0974f2e8a65cca6287959b62d93eb536e8e12d8fa6
https://sepolia.etherscan.io/tx/0xf28c6bc5feff787fdd0f2a7eb5de13c002dbbf511039e02c922ed1218149fbe9
https://sepolia.etherscan.io/tx/0x960d42ee4cf83c7f0415e0eb655d3f8281b09086d6c4aa74f40ec919bd007b65

CRE WORKFLOW:
A single 690-line workflow orchestrating 6 steps:

  1. EVM Read — fetch trade data from OTCVault
  2. Confidential Compute — decrypt parameters inside TEE, verify bilateral match
  3. Confidential HTTP — call OFAC sanctions screening API (real SDN list)
  4. Confidential HTTP — call KYC/accreditation verification API
  5. EVM Write — execute settlement (atomic DvP) or refund
  6. EVM Write — record compliance attestation on ComplianceRegistry
    API keys stored in Vault DON via secrets.yaml, never exposed on-chain.

COMPLIANCE APIs:

  • Sanctions API: Screens against the real U.S. Treasury OFAC SDN list, stored in Cloudflare KV.
  • KYC API: Verifies accredited investor status (none/basic/accredited/institutional).
    Both called exclusively via Confidential HTTP — credentials and responses never touch the blockchain.

FRONTEND:

  • Create Trade page: deposit + client-side encryption of parameters
  • Match Trade page: counterparty enters matching code + deposits
  • Status page: real-time 6-step workflow progress with auto-settlement
  • Explorer page: public compliance attestation viewer
  • All contract interactions via wagmi hooks. No backend server, no database.

CROSS-CHAIN:

  • OTCVault on Sepolia sends CCIP messages to OTCVaultReceiver on Arbitrum Sepolia
  • Bidirectional trust configured between both chains
  • SettlementEncoder library for cross-chain instruction encoding

Links

Created by

  • David Zapata