Settle prediction markets in under 60 seconds. Built for the Superteam World Cup hackathon (Prediction Markets & Settlement track, $18K USDT).
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Safari │────▶│ Relayer │────▶│ Solana │
│ (React) │ │ (Node) │ │ (Anchor) │
│ :5173 │◀────│ :3001 │◀────│ :8899 │
└──────────┘ └──────────┘ └──────────┘
│ │
└──────── SDK (client) ──────────┘
- Program: Anchor on Solana —
initMatch,openRound,placeBet,settleMarket - Relayer: TypeScript — TxODDS oracle integration, 30 unit tests
- Frontend: React + Vite + Solana wallet adapter
- SDK: Browser-compatible client with Web Crypto (no Node.js deps)
- Solana CLI 4.1.1+ (matching platform-tools v1.54)
- Rust + Anchor CLI 0.31+
- Node.js 18+
solana-test-validator \
--ledger /tmp/kicktick-ledger \
--dynamic-port-range 18000-18200 \
--gossip-port 18001# Build with v3 arch for local validator compatibility
cargo build-sbf --arch v3
# Airdrop and deploy
solana airdrop 5
solana program deploy target/deploy/kicktick.soThe deploy keypair generates a unique program ID. Sync it:
anchor keys sync # updates declare_id! in lib.rs
# OR update manually in:
# - programs/kicktick/src/lib.rs → declare_id!("...")
# - Anchor.toml [programs.localnet]
# - frontend/src/lib/constants.ts
# - relayer/src/config.tscd relayer
npm install
npm test # 30 tests
npm run dev # start:3001cd frontend
npm install
npm run dev # :5173Connect Phantom/Solflare wallet, create markets, open rounds, place bets.
solana config set --url devnet
solana airdrop 5
anchor deployRequires a devnet wallet with SOL. Devnet faucet at faucet.solana.com.
kicktick/
├── programs/kicktick/ # Anchor program (Rust)
│ └── src/lib.rs # initMatch, openRound, placeBet, settleMarket
├── relayer/ # TypeScript settlement oracle
│ └── src/
│ ├── services/ # TxODDS integration
│ ├── solana/ # Program interaction
│ └── websocket/ # Frontend relay
├── frontend/ # React + Vite + Tailwind
│ └── src/
│ ├── admin/ # AdminMatchDetail (openRound wired)
│ ├── components/ # CreateMarketModal (initMatch wired)
│ └── lib/ # Wallet context, constants, SDK client
├── sdk/src/ # TypeScript client library
└── docker/ # Docker Compose deployment
| Component | Status |
|---|---|
| Anchor program | Builds, deploys to localnet |
| Relayer | 30/30 tests passing |
| Frontend | Builds, wallet-connected, TODOs resolved |
| SDK client | Browser-compatible, Web Crypto |
| Devnet deployment | Blocked by faucet rate limit |
MIT