DARX - ZK Dark Pool
Private Trading, Powered by Zero-Knowledge Proofs. Trade any token in size with zero price impact with crypto's first decentralized crossing network. Live today on Arbitrum Ecosystem.
视频




技术栈
描述
DARX — ZK Dark Pool
Private trading powered by zero-knowledge proofs.
Trade at midpoint prices with encrypted order data. Orders are matched off-chain and settled on-chain via a Groth16 ZK proof; only you and the relayer see your order details (relayer privacy).
Pitch Deck: https://www.figma.com/deck/qRseTVpXI21ktYUdjy1p0E/Darx---ZK-Dark-Pool?node-id=1-42&viewport=-5281%2C-71%2C0.61&t=Zn8gNwExGIKEyP8x-1&scaling=min-zoom&content-scaling=fixed&page-id=0%3A1
Website: https://darxcrypto.vercel.app/
Features
- Private order book — Side, size, price, value, and filled amount are AES-256-GCM encrypted in the database.
- ZK-settled trades — Matched trades are proven in-circuit (midpoint tolerance) and settled on Arbitrum Sepolia with a single settleTrade call.
- Midpoint pricing — BBO feeds from Binance (with CoinGecko fallback); trades clear at the midpoint.
- Modern stack — Next.js 16, React 19, Wagmi, RainbowKit, Supabase, Circom, snarkjs, Foundry.
---
How it works
┌─────────────┐ submit order ┌─────────────┐ match / encrypt ┌──────────────┐
│ Frontend │ ───────────────────► │ Backend │ ──────────────────────► │ Supabase │
│ (Next.js) │ │ (Express) │ │ (orders) │
└──────┬──────┘ └──────┬───────┘ └──────────────┘
│ │
│ if matched: │ fullProve (snarkjs in-process)
│ approve + settleTrade() │ → proof + publicInputs
▼ ▼
┌─────────────┐ ┌─────────────┐
│ DarkPool │ ◄── verify proof ──── │ Groth16 │
│ (Arbitrum │ + transfer │ Verifier │
│ Sepolia) │ │ (Solidity) │
└─────────────┘ └─────────────┘
1. User connects wallet, enters amount (token or USDC), submits BUY/SELL.
2. Backend stores the order (encrypted), tries to match with an open opposite order.
3. Matched: Backend generates a ZK proof with snarkjs.groth16.fullProve; frontend approves tokens and calls DarkPool.settleTrade(proof, buyer, seller, ...); backend marks both orders filled.
4. Unmatched: Order stays open; when a counterparty matches later, they run settlement and the first user’s UI can poll until filled.
---
Tech stack
Layer | Technologies
Frontend | Next.js 16, React 19, Wagmi, RainbowKit, Tailwind, Shadcn UI, TanStack Query & Table
Backend | Node.js, Express, Supabase, snarkjs (in-process proof)
Contracts| Solidity 0.8, Foundry, OpenZeppelin
ZK | Circom, Groth16 (snarkjs), Verifier.sol
Chain | Arbitrum Sepolia
本次黑客松进展
During the hackathon, we built DARX from a working concept into a live end-to-end prototype for private crypto trade execution. We implemented a full flow where users connect wallets, submit orders, get matched off-chain, generate a Groth16 proof, and settle on-chain via a DarkPool smart contract on Arbitrum Sepolia. We also integrated real-time pricing with fallback mechanisms, built a complete trade interface, and shipped an advanced orders page with filtering, sorting, and pagination.
On the backend side, we added encrypted order storage (relayer privacy model), improved order lifecycle handling, and stabilized matching/settlement behavior across edge cases. On the frontend, we improved UX significantly with balance-aware controls, dynamic button states, wallet-connect flow, better alerts, and flexible amount input modes (token or USDC). By the end of the hackathon, DARX had a functional architecture spanning frontend, backend, ZK proving pipeline, and smart contracts—demonstrating a practical path from private off-chain intent to verifiable on-chain settlement.
融资状态
solo developer project.