Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
Rivaly is social prediction for sport. Create a prediction on a match, others back it or take the other side, you watch it together, and the winners are paid automatically — you play people, never a b
FinanceTypeScript · PLpgSQLGitHub @alexshaw3065-hashOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A social prediction Market
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Social prediction for sport, on Solana. Make a call on a match, someone takes the other side, you watch it together, and the winners split the pool, paid on-chain in seconds. People play people, never the house.
Live app · How it works · Program on Solana Explorer · X / @Rivaly_fun
Predicting sport has always been social. Every weekend, group chats call the match, argue about it, and say "bet you". 38% of US sports bettors already bet with friends (Conjointly, 2025).
But the products built for it make you do it alone:
| 1 · Make a call | Pick a match and a prediction: "Arsenal to win", "Over 2.5 goals". It takes four taps and becomes a room with a pool. |
| 2 · Someone takes the other side | Share the link in the group chat. Anyone can back YES or NO, with $1 minimum stakes in USDC. |
| 3 · Watch it together | The room has live scores, a match timeline, line-ups, stats and a chat for everyone with a stake. All of it is fed by official match data. |
| 4 · Winners split the pool | When the result is certain, the room settles itself. Winners share the pool pro rata, paid on Solana in seconds. A void or one-sided room refunds everyone. |
Rivaly is the referee, never a player. It never takes a side. When fees are on, they're 5% of the winners' profit, never of a stake: 3% to Rivaly and 2% to the room's host, so the people who bring their crowd earn when that crowd plays. Losers never pay a fee.
flowchart LR
U["Phone / web app<br/>email or Google sign-in<br/>Dynamic embedded wallet"] --> N["Next.js on Vercel<br/>TypeScript · server actions<br/>builds & verifies every transaction"]
N <--> S[("Supabase<br/>Postgres + row-level security<br/>Realtime to every room")]
W["Worker on Render<br/>one live stream per provider"] --> S
F["Official match data<br/>TxLINE · Big Balls Data"] --> W
N --> P["rivaly_rooms program<br/>Rust + Anchor on Solana<br/>one USDC vault per room"]
U -. signs stake .-> P
| Layer | Stack |
|---|---|
| App & backend | Next.js 16 (App Router, React 19, TypeScript), Tailwind v4, on Vercel |
| Data & live updates | Supabase: Postgres with row-level security on every table, Realtime, Storage |
| Identity & wallets | Dynamic: email / Google sign-in with an embedded Solana wallet. No seed phrase, no SOL needed |
| Money | USDC on Solana, held by the rivaly_rooms program (Rust, Anchor). Rivaly pays all network fees |
| Live sport | An always-on TypeScript worker on Render streaming TxLINE and Big Balls Data |
sequenceDiagram
participant U as User (embedded wallet)
participant A as Rivaly server
participant P as rivaly_rooms program
U->>A: Back YES, $10
A->>A: Validate room, balance, minimum stake
A->>U: Stake transaction (Rivaly is fee payer)
U->>A: Signed by the user
A->>A: Check it's exactly the transaction we built
A->>P: Co-sign and send
P-->>A: USDC is in the room's vault
A->>A: Only now record the stake, with its signature as the receipt
Before Rivaly co-signs, it refuses anything that isn't exactly what it built (verify-stake-tx.ts, unit-tested). That means:
resolve.ts decides each market from the official result.planSettlement, and the on-chain program uses the same arithmetic. A 400-room parity test proves the two always agree.rivaly_rooms is live on devnet at FwPoC3NgmMVwoHk7QUGGotmx7dbsSNF5E6N7enxx7kLF.
What it guarantees, whatever the server does:
Who holds which key:
| Key | Can | Can't |
|---|---|---|
| Operator (Rivaly server) | Post results from official data, trigger payouts and refunds, pay fees | Send stakes anywhere but that room's stakers; exceed the fee cap |
| Admin / upgrade authority | Change settings, upgrade the program | Nothing is limited here yet. It moves to a Squads multisig before mainnet. |
| Users | Stake into a vault; void an expired room | Move another person's stake |
What it doesn't do yet: decide results. Rivaly's operator posts them from official match data. The program hasn't been audited; that happens before mainnet.
devnet-e2e.mts also runs the app's own transaction code against the deployed program.src/app/ pages and server actions: rooms, arena, wallet, profile, admin
src/components/ UI (src/components/ui/ is the design-system kit)
src/lib/ settlement, markets, fees, escrow + program client, data providers
supabase/ migrations: schema, RLS policies, triggers, SQL functions
worker/ the live-scores worker (TxLINE + Big Balls Data)
onchain/ the rivaly_rooms Anchor program, its tests and deploy scripts
docs/ security reviews and README assets
rivaly_rooms, then the admin key moves to a Squads multisig.Secrets (the database service key, escrow and welcome-wallet keys, API tokens) live only in the hosting providers' environment settings and are never committed. To report a vulnerability, email [email protected] rather than opening a public issue.
onchain/) is MIT (onchain/LICENSE), so anyone can read, verify, reuse and build on the contract that holds the money."Rivaly" and the Rivaly logo are not covered by these licences.