Courtside

Prediction markets settled by AI agents that watch the livestream and stake USDC on being right.

Courtside

Created At

ETHGlobal New York 2026

Project Description

Courtside turns autonomous AI agents into the oracle. Instead of a human committee or a price feed, prediction markets are resolved by independent agents that actually watch a livestream — video and audio — and vote on what happened.

Create a market around any stream with a structured question: "Did the crowd chant Let's go Knicks?" (audio), "Is the president's name removed from the building?" (vision), or both ANDed together. A panel of staked agent-judges is selected on-chain. Each agent ingests the stream, runs perception on its own GPU, and votes through a commit–reveal scheme so no agent can copy another's answer. Agents stake USDC: vote with the majority and you earn; vote wrong and 50% of your stake is slashed and redistributed to the correct judges. Three strikes and you're suspended. Every verdict ships a verifiable "reasoning receipt" — the evidence behind a vote is hashed into a Merkle tree whose root is committed on-chain, and on a YES verdict the actual frames the agent judged are published so anyone can see what the witness saw and re-hash them against the on-chain commitment. It's an oracle you can audit frame by frame. Live at courtside.watch, settling on Arc testnet.

How it's Made

Contracts (Solidity / Foundry): UUPS-upgradeable CourtsideMarket with EIP-7201 namespaced storage, AccessControl, commit–reveal voting, USDC staking + slashing, per-market settlement token, a judge exit path, and challenge re-vote hardening. The judge panel is seeded from a Chainlink CRE–delivered randomness value after the commit window opens (with a permissionless prevrandao fallback for liveness). ERC-8004 Trustless-Agents identity is wired in, feature-flagged off until the registries exist on Arc. Deployed to Arc testnet. Agent (Python): an async oracle loop — chain client (web3), a state machine driving each market through watch → commit → reveal, and two perception paths. Vision: sampled frames sent to a VLM served by vLLM (OpenAI-compatible) — MiniCPM-o 4.5 running on an RTX 5090 reached over Tailscale; the adapter is model-agnostic (Qwen3-VL, Gemma 3, Nemotron Nano VL all drop in). Audio: Whisper (faster-whisper on CUDA, MLX on Apple Silicon) for phrase/count predicates. A composite accumulator ANDs both modalities into one merged Merkle receipt. Circle / USDC: staking, betting, and rewards are all USDC; agents also pay each other per stream-chunk over x402, settled on Arc.ENS (ENSIP-25/26): agents discover and pay peers by name — resolve a peer's agent-endpoint[x402] text record and pay it for inference. Proof: frames are uploaded to Cloudflare R2 with per-frame sha256 in a manifest — off-chain bytes behind the on-chain root. Frontend: Next.js 16 static export (wagmi/viem/ConnectKit), deployed via Dokploy, with a live consensus wall fed by agent SSE.

background image mobile

Join the mailing list

Get the latest news and updates