One contract. Five states. No admin key over your money.
Open
Anyone allowed picks a side and locks the stake. The creator can close early once two people are in, or cancel and refund everyone.
Judging
Joining is closed and there are at least two sides. Referees vote for an outcome, or for void. Enough votes settle it.
Settled
An outcome won. Each winner claims their stake plus an equal share of the losers' stakes, minus the fee.
Refunded
Voided by the creator or the referees. Everyone who joined claims their stake back.
Expired
A deadline passed without a call, or the bet never had two sides. Anyone can unlock the refunds.
The payout maths
Losers’ stakes make the profit. The fee comes out of that only, the rest is split equally between winners.
- Stake
- 0.1 ETH, 4 players
- Backed Yes
- 1 player
- Losers put in
- 3 × 0.1 = 0.3 ETH
- Fee, 2% of that
- 0.006 ETH
- Winner takes
- 0.1 + 0.294 = 0.394 ETH
If nobody backed the winning side, or everybody did, the bet refunds instead.
Limits
- Outcomes
- 2 to 8
- Referees
- 1 to 7
- Guest list
- Up to 32 wallets
- Players
- 2 to 64
- Joining window
- At least 5 minutes
- Longest bet
- 2 years
- Fee on profit
- Capped at 5% by the contract
- Paid in
- ETH or USDG
No. The contract has no function that moves stakes for us. The owner can pause new bets and set the fee for future ones, nothing else.