A football prediction market with no server.
The swarm is the exchange. The crowd is the oracle. Every fan holds their own keys.
Curva lets any group of football fans run a real-money prediction market among themselves — bets matched by the peers in the room, results called by the crowd actually watching the match, and winnings settled wallet-to-wallet in USDt. No company in the middle. No account. Nothing to shut down.
01 What Curva is
The terrace, rebuilt as a protocol.
The curva is the curved stand behind the goal where the ultras gather — thousands of fans, no assigned seats, moving as one. No single fan is the crowd; the crowd only exists in the aggregate. Curva is a betting market built the same way: every phone holds a piece of the ledger, and the market only exists in the swarm. Everyone “knows” a prediction market needs three centralized things. Curva removes all three.
The swarm matches
Every bet is a signed message on that fan's own append-only log; pool odds are recomputed live on every phone. Payout is a pure function of the final bet-set — merge order doesn't matter, so partitions heal for free. The only ordered event is the betting cutoff.
The crowd calls it
At watch-party scale everyone is literally watching the answer. On-device speech recognition hears the score from the commentary and pre-fills an attestation; the crowd signs a dual ⅔ quorum of stake and writers. No feed, no fee, no referee-for-hire.
You hold the money
One seed phrase derives your identity key and a self-custodial USDt wallet. Settlement is just netting: the payout manifest reduces to a minimal set of transfers, and each loser signs their own. At no point does anyone — or any company — hold the pot.
Polymarket needs AWS, an oracle firm, and a custodian.
Curva needs two phones.
02 How you take part
One match night, start to square.
This is the whole lifecycle of a market — called a terrace — exactly as the code runs it. Anyone can host; everyone else joins with a single invite key. No sign-up, no deposit into anyone's platform.
Get your keysEvery fan
One seed phrase derives everything: the identity key that signs your every message, and your own USDt wallet. There is no account to create — your keys are your membership.
Open a terraceAny fan
Someone opens a market for tonight's match and shares an invite key with the group chat. Mates join over Hyperswarm — from the same pub or three time zones away.
Back your hunchEveryone
Match result, total goals, first scorer, correct score, minute-by-minute micro-rounds — pick a market, stake USDt, and watch the parimutuel odds shift live on every screen as the pool moves.
Lose the host — nothing happensThe swarm
The fan who created the market closes their laptop. The market keeps trading and every peer still converges to the same state, because there is no host — only the swarm.
Kick-off locks the bookThe protocol
At cutoff the market fences: the one moment that needs ordering, and the only one the protocol pays for. Late bets are dropped deterministically on every peer.
The crowd calls full timeThe oracle
Each phone's on-device speech recognition hears the final score from the commentary and pre-fills an attestation — one tap to confirm or correct. When ⅔ of the stake and ⅔ of the writers agree, the outcome stands. Disputes void the market and refund every stake.
Settle wallet-to-walletThe winners
Payouts are netted to the minimal set of transfers — seven debts might collapse into three. Each loser signs their own USDt transfer from their own wallet; receipts land on every log. Everyone's square.
03 Why it's worth it
Everything the bookie takes, you keep.
Curva is for the people football betting was taken from: the watch party, the supporters' club, the expat crew streaming the derby at 3am. Real stakes among your own crowd — without handing a platform your margin, your custody, or your data.
No house edge baked in
Odds aren't quoted by a bookmaker with a 5–10% margin — they're just the pool, split among winners. Conservation is exact to the cent: every stake comes back out as payout, with rounding dust returned to winners, not skimmed to a treasury.
Your money never leaves your wallet
There is no deposit, no platform balance, no withdrawal request pending review. USDt sits in your self-custodial wallet until the moment you settle — and then it moves peer to peer.
No account, no KYC, no surveillance
A seed phrase is the entire onboarding. No email, no ID upload, no behavioural analytics deciding you're winning too often. The protocol has no backend to collect anything.
Unstoppable by construction
There's no company to sanction, no domain to seize, no server to subpoena. The market lives on the fans' own devices, and it survives any of them — including its creator — going dark.
AI at the terrace, not in the cloud
A local LLM — the Gaffer — banters over the match, chat is translated across 32 languages, and speech recognition hears the score, all on-device. A mic in a pub demands local inference; nothing you say leaves the room.
Trust tiers that match real life
Mates Mode for people who share a table. A 2-of-3 steward escrow for pools among strangers. Threshold custody on the roadmap, so the swarm itself becomes the custodian.
04 How it's different
Same thrill. None of the middlemen.
Every existing way to bet on football reintroduces the same three chokepoints — a matching engine, an oracle, a custodian. Curva is the first design where all three dissolve into the crowd itself.
| Traditional bookmaker | On-chain markets (Polymarket-style) |
Curva | |
|---|---|---|---|
| Who matches bets | Their servers quote the odds | An order book on cloud infra | The swarm — pool odds computed on every phone |
| Who calls the result | The house | An oracle company you pay and trust | The crowd watching, under a dual ⅔ quorum |
| Who holds your money | They do — your balance on their books | Contracts, bridges, custodial ramps | You do — self-custodial USDt, settled wallet-to-wallet |
| The house edge | 5–10% margin baked into every price | Trading fees and spread | None baked in — the pool pays the winners, dust included |
| Getting in | Account, KYC, deposit, geo-blocks | Wallet plus geo-blocks and ramps | A seed phrase and an invite key. That's it |
| Infrastructure | Data centres | Cloud servers + a blockchain | Two phones. The demo runs with no network at all |
| Kill switch | Licence pulled → market gone | Domain or API seized → market frozen | There isn't one. Kill any machine; the market keeps trading |
05 Built on three tracks
Each one is load-bearing.
Curva is a Tether Developers Cup entry built on the full stack — Pears, QVAC, and WDK. These aren't checkbox integrations: remove any single one and the product ceases to exist.
The market
Hyperswarm discovery · Autobase multi-writer ledger with a deterministic apply fold · Hyperbee view · the cutoff fence · pear deploy.
The oracle
On-device ASR → score extraction → attestation pre-fill · a local-LLM Gaffer · chat translated locally across 32 languages. Zero cloud AI.
The money
One seed → the HD identity key that signs every message + a self-custodial USDt wallet · minimal-transfer netting · transfers · receipts.
06 Proven, not asserted
A CS thesis with tests.
The core claim — a parimutuel pool is a CRDT, so the market needs no consensus and no server — is checked by 237 property, fuzz, quorum-safety, and end-to-end tests, all green in CI.
- Conservation — Σ payouts + Σ fees ≡ Σ stakes, exactly, for arbitrary bet sets.
- Commutativity — any permutation, partition, or merge of the same bets yields identical pools and payouts.
- Convergence under fuzz — 100 adversarial swarm runs (churn, partitions, late bets, whales) heal to one byte-identical view.
- Quorum safety — the dual ⅔ threshold makes two outcomes reaching quorum mathematically impossible.
- Netting soundness — the transfer set settles every party exactly, in ≤ n−1 edges.
- Serverless by construction — the headless demo exercises the entire pipeline with no network at all.
07 Get started
See the whole thesis in two minutes.
Everything runs from one repo. Start with the headless demo — it plays an entire match night (bets, host-kill, cutoff, crowd oracle, netting, settlement) with no network and no external services — then run the live P2P app with your own crowd.
Run the demo
One command replays the entire match-night pipeline, headless. Watch the host die and the market keep trading in your own terminal.
# needs Node ≥ 20.19 git clone https://github.com/rajkaria/curva cd curva && npm install npm run demo # typecheck + lint + 237 tests npm run check
Uses clearly-labelled in-memory fakes for wallet and speech — the whole claim is verifiable with nothing else installed.
Open a terrace
Run the live app on the Pear runtime, open a market for tonight's match, and share the invite key with your crowd. They join from anywhere.
# install the Pear P2P runtime npm install -g pear # build & launch the app npm run build pear run apps/terrace
Host, join, bet, resolve, settle — every phone in the swarm is a full peer holding its own ledger and its own keys.
The market is the crowd.
No server to rent, no oracle to pay, no custodian to trust. Just fans, phones, and a protocol that can't be switched off.