Inspiration

Every friend group has that one guy who says, “I bet you that’s not even the right answer,” or “I bet you $10 that SOL hits $250 tonight,” and somehow forgets about it when he loses.

We’ve all had bets get buried in group chats, disagreements over what the original terms were, or someone conveniently “forget” what they promised.

We wanted to turn those casual bets into actual agreements; without making the experience feel like a sportsbook.

Blockchain gives us a simple way to solve the biggest problem: trust. Solana can hold the money in escrow and enforce the agreed-upon rules, while users can focus on what actually matters: talking trash and making bets with their friends.

That’s why we built SolMog.

What It Does

SolMog turns friendly trash talk into a real, enforceable agreement between friends.

There are two types of bets:

  • Price Bets: “I bet SOL hits $250 tonight.” These are settled automatically using a price oracle, so neither side has to check the price or argue about the result.
  • Social Bets: “I bet you that's the answer,” “I bet you can't finish that burrito,” or “I bet the Leafs lose tonight.” These are resolved by the participants themselves.

How It Works

1. Create a Bet

Type your bet in plain English. SolMog converts it into clear, editable terms including the outcome, deadline, stakes, odds, and participants.

For example:

$$ \text{Stake}_A = \$10 \qquad \text{Stake}_B = \$10 $$

with the total pot being:

$$ \text{Pot} = \text{Stake}_A + \text{Stake}_B = \$20 $$

2. Challenge a Friend

Send the bet to a friend. They can accept, decline, or counteroffer with different stakes, odds, or sides.

Every counteroffer creates a new on-chain version of the bet. When someone accepts, they are accepting the exact version they reviewed; preventing a last second bait and switch.

3. Lock the Funds

Once both sides agree, each participant deposits their stake into a Solana program-controlled escrow.

The funds remain locked until the bet reaches a valid resolution state.

4. Resolve the Bet

Price bets are settled automatically using a price oracle.

For example, if the bet is:

$$ \text{SOL Price at Deadline} \geq \$250 $$

the oracle determines whether the condition was satisfied.

For social bets, one participant claims the win and the other confirms the result. If there’s a disagreement, the funds remain locked until the participants resolve it.

5. Get Paid

Once the bet is resolved, the Solana program distributes the pot directly to the winner:

$$ \text{Winner Payout} = \text{Stake}_A + \text{Stake}_B $$

Every transaction can be viewed on Solana Explorer, making the entire process transparent and verifiable.

What Happens If Something Goes Wrong?

We also built safeguards around the bet lifecycle:

  • If both sides don't fund the bet in time, it expires and anyone who already deposited gets refunded.
  • If both participants agree to cancel, the escrow is returned to both sides.
  • If a bet remains unresolved for 48 hours after its deadline, both participants can recover their funds.

The goal is to make SolMog feel like a social app first and a blockchain app second. You see your friends, bets, stakes, and outcomes up front; while Solana handles the escrow, enforcement, and settlement underneath.

Current Status

SolMog currently runs on Solana Devnet using a test USDC token that we mint ourselves, so no real money is involved.

How we used Solana

  • Custom Anchor program. put_your_money holds the money and enforces the deal, so friends don't have to trust each other or us.
  • Bets are on-chain accounts. Each bet stores its terms on-chain, plus a sha256 hash of the plain-English version.
  • Versioned negotiation. Every counteroffer is a new on-chain version, and accept(expected_version) fails if the terms changed, so no bait-and-switch.
  • Vault PDA escrow. Stakes go into a vault owned by the program with no private key, so no one (including us) can move the funds.
  • Program-enforced payouts. Money leaves the vault only to the winner, or back to both players if the bet expires, isn't funded in time, or goes unresolved 48 hours past the deadline.
  • Checked oracle settlement. Crypto bets settle using Pyth prices, and the program rejects any result that contradicts the reported price or settles a deadline bet early.
  • Users own their keys. Everyone signs with their own wallet and logs in with Sign-In With Solana; our server rebuilds its database from on-chain accounts only.
  • Why Solana. Near-zero fees and fast confirmation let us put every counteroffer on-chain and run a full bet, proposal to payout, in under three minutes. On most other chains, gas would cost more than a $5 bet.

GitHub Repo: https://github.com/JustinEl-Chibani/HTH2026/

Built With

Share this project:

Updates

Submission history