Private zkCLOB Exchange with Client-Side Proofs + Self.xyz zkIdentity KYC
We aimed to build a private zkCLOB with client side proofs and KYC to participate in trading. The original idea was to build a rollup with an in-protocol orderbook. Also use MoPro for fast proofs on mobile for traders.
Many market makers want to place limit orders for their algorithms in ways that dont expose their balances and/or their orders placed and matched. We use circom circuits to hide who is sending the orders that are being matched. We also operate similar to a centralized exchange and also hide client balances by only posting the state roots for the accounts tree.
We use circom and snarkjs on web to generate the proofs for each order. The proof generation takes around 2 to 3 seconds with wasm.
We also wanted to provide verifiable price-time priority and batch orders into blocks and post proofs onto ETH L1 using the OP stack but ran into time constraints.
To make this product, we used a bunch of zero-knowledge products Undermining our product are
Client
TypeScript + WASM bindings for prover libraries. It integrates Self.xyz circuits in Circom and compiled them with SnarkJS
Sequencer
Rollup + zkVM
Identity / Policy Layer

