The Fastest CASH Swap Ever. True Zero-Slippage Atomic On-Chain Orderbook.
A full-stack Central Limit Order Book (CLOB) on Aptos blockchain. Move smart contracts handle order matching and settlement on-chain, while a TypeScript backend and Next.js frontend deliver a real-time trading experience with a Uniswap-style token detail interface and Cash App design language.
CASH/USD1 is the primary trading pair, using World Liberty Financial's USD1 stablecoin (8 decimals) as the default quote asset. Multi-stablecoin swap support lets users trade CASH against USDC, USDT, USDe, and GHO via Panora aggregator routing, while CASH/USD1 settles directly through the on-chain orderbook.
contracts/ Move smart contracts — orderbook core, matching engine, settlement
sdk/ TypeScript SDK (@cash/orderbook-sdk) for contract interaction
api/ REST API (Hono, port 3100) + WebSocket server (port 3101)
web/ Next.js 16 trading dashboard (port 3102)
shared/ Shared types, constants, ABIs across packages
scripts/ Deployment, integration tests, and utility scripts
| Layer | Stack |
|---|---|
| Smart Contracts | Move on Aptos (FungibleAsset standard) |
| SDK | TypeScript, @aptos-labs/ts-sdk |
| API | Hono, WebSocket (ws), Zod |
| Frontend | Next.js 16, React 19, Tamagui v1.136.1 (Spore design system), Framer Motion |
| Charting | lightweight-charts v5 (CandlestickSeries, Line toggle) |
| Swap Routing | Panora API (non-USD1 pairs), direct orderbook (USD1) |
| Price Data | GeckoTerminal API via LiquidSwap (181 daily candles) |
| Monorepo | Turborepo + pnpm workspaces |
| Token | Type | Decimals | Role |
|---|---|---|---|
| CASH | Legacy Coin | 6 | Base asset |
| USD1 | FungibleAsset | 8 | Default quote |
| USDC | FungibleAsset | 6 | Quote (via Panora) |
| USDT | FungibleAsset | 6 | Quote (via Panora) |
| USDe | FungibleAsset | 6 | Quote (via Panora) |
| GHO | FungibleAsset | 6 | Quote (via Panora) |
The contract's Market.quote_decimals field supports both 6-decimal and 8-decimal quote assets, allowing flexible pair configuration.
Contracts are published to Aptos testnet:
- Contract address:
0xe66fef668...d1 - Market: CASH/USD1 (pair ID 0), seeded with liquidity
- USD1 testnet:
prediction_market::usd1module with open minting for testing
Key mainnet addresses:
- USD1:
0x14b0ef0ec... - CASH:
0x61ed8b3c2...::CASH::CASH
# Install dependencies
pnpm install
# Move contracts
cd contracts && aptos move compile && aptos move test
# Backend — REST API + WebSocket
cd api && PORT=3100 pnpm dev # API on :3100, WS on :3101
# Frontend
cd web && pnpm dev # http://localhost:3102
# Full dev (all services)
pnpm devNEXT_PUBLIC_API_URL=http://localhost:3100 # REST API base URL
NEXT_PUBLIC_WS_URL=ws://localhost:3101 # WebSocket server URL
NEXT_PUBLIC_APTOS_NETWORK=testnet # mainnet | testnet
NEXT_PUBLIC_CONTRACT_ADDRESS=0xe66fef668...d1 # Deployed contract addressAPTOS_NETWORK=testnet # mainnet | testnet | devnet | local
CONTRACT_ADDRESS=0xe66fef668... # Auto-resolved on testnet if not setAPTOS_PRIVATE_KEY=... # Hex-encoded ed25519 private key
CONTRACT_ADDRESS=... # Deployed contract address
APTOS_NETWORK=testnet # Target networkpnpm -r test # Run all tests (211 Move + 199 TypeScript)
pnpm -r typecheck # Type check all packages
pnpm -r lint # Lint all packages211 Move tests and 199 TypeScript tests, with 27/27 validation assertions passing.
Scripts in scripts/src/ for testnet validation:
# Simulate a $1000 USD1 market buy of CASH on testnet
npx tsx scripts/src/buy-simulation.ts
# Run market maker seeding and order lifecycle test
npx tsx scripts/src/market-maker-test.ts
# Generate CLOB vs AMM performance comparison report
npx tsx scripts/src/performance-report.tsPerformance benchmark: the CLOB achieves 0.5% slippage on a $1000 fill vs 4-37% slippage on comparable AMM pools.
- Layout: Uniswap-style token detail page — candlestick chart, swap panel, transaction history
- Chart: Professional candlestick with Candle/Line toggle, 181 days of historical data from LiquidSwap via GeckoTerminal API, "New Venue" transition marker
- Swap: Multi-stablecoin swap panel with 6 tokens, Panora routing for non-USD1 pairs
- Theme: Cash App green (
#00D54B) on black, dark-mode first - Typography: Geist Sans for UI, Geist Mono for prices and amounts
- Motion: Framer Motion transitions, CSS keyframe animations for live data
- Components: shadcn/ui base, Radix primitives, Lucide icons
The frontend uses Tamagui v1.136.1 with Uniswap's Spore dark theme, replacing Tailwind CSS as the primary styling system. The layout matches the Uniswap Token Detail Page (TDP):
- Two-column layout: 1200px max-width, 80px gap, 360px right panel for the swap widget
- Sticky navbar: 72px height, responsive collapse at 1024px breakpoint
- Sticky condensed header: appears on scroll with token info and key stats
- Content sections: chart with controls below, stats grid, About section with truncation, Transactions table
- Swap widget: Uniswap-style token selectors with segmented Buy/Sell tabs
- Responsive: single-column stacking below 1024px
Key design tokens: surface1=#131313, accent1=#00D54B (CASH green), Geist Sans/Mono fonts. Remaining Tailwind utilities are used alongside Tamagui where needed.
MIT