How nikitabenny/friend-bet-v2 works
friend-bet-v2 is an Anchor/Solana peer-to-peer betting program: a creator opens and funds a bet, another participant matches a side, a designated resolver records the outcome, and winners claim proportional vault payouts. The Rust program also defines the bet, participant, creator-profile, and vault account state. An independent offline C++ validator checks JSON snapshots against escrow and state invariants. The React app is only a placeholder, not a working bet client. Workflow links follow the README; source excerpts add implementation detail, but not every handler or validator check was sampled.
Main entry points: lib.rs Program accounts · validate.cpp Load snapshot · main.tsx React entry · App.tsx Scaffold screen
Components 17
On-chain betting
- Create bet
programs/friend-bet-v2/src/lib.rs - Accept bet
programs/friend-bet-v2/src/lib.rs - Resolve outcome
programs/friend-bet-v2/src/lib.rs - Claim payout
programs/friend-bet-v2/src/lib.rs
Bet state
- Program accounts
programs/friend-bet-v2/src/lib.rs
Offline validation
- Load snapshot
validator/validate.cpp - Check invariants
validator/validate.cpp - Validation result
validator/validate.cpp
Placeholder client
- React entry
app/src/main.tsx - Scaffold screen
app/src/App.tsx
Other components
- Creator
- Counterparty
- Resolver
- Winning participant
- Solana system program
- JSON snapshot
- Browser user
Connections 15
- Creator → Create bet: opens bet
README.md - Create bet → Program accounts: creates accounts
README.md - Create bet → Solana system program: transfers stake
programs/friend-bet-v2/src/lib.rs - Counterparty → Accept bet: matches side
README.md - Accept bet → Program accounts: updates stake
README.md - Accept bet → Solana system program: transfers stake
programs/friend-bet-v2/src/lib.rs - Resolver → Resolve outcome: names winner
README.md - Resolve outcome → Program accounts: records outcome
README.md - Winning participant → Claim payout: claims share
README.md - Claim payout → Program accounts: pays from vault
README.md - JSON snapshot → Load snapshot: reads JSON
validator/validate.cpp - Load snapshot → Check invariants: checks loaded state
validator/validate.cpp - Check invariants → Validation result: reports checks
validator/validate.cpp - Browser user → React entry: opens app
- React entry → Scaffold screen: renders
app/src/main.tsx