Play
All-in pricing, fees, and payouts
The exact integer accounting behind every funded V3 game.
Immutable V3 ruleThe game fee is inside all-in
A = user-selected all-in limit
S = principal (shown as B in contract-facing state diagrams)
S = floor(A × 10,000 / 10,350)
Fee = ceil(S × 350 / 10,000)
settlement = S + Fee ≤ A
Manual prize = 2 × S
Mystery prize = floor(S × 25,000 / 10,000)A is what the user agrees to spend in USDG terms. S—also labeled B in the contract-facing state diagrams—is principal, and Fee is the refundable 3.5% fee calculated from principal. The interface must not add another 3.5% after the user selects A.
Exact examples
| All-in A | Principal S | Fee | Manual 2x | Mystery 2.5x |
|---|---|---|---|---|
| 1.000000 | 0.966183 | 0.033817 | 1.932366 | 2.415457 |
| 10.000000 | 9.661835 | 0.338165 | 19.323670 | 24.154587 |
| 50.000000 | 48.309178 | 1.690822 | 96.618356 | 120.772945 |
| 100.000000 | 96.618357 | 3.381643 | 193.236714 | 241.545892 |
| 200.000000 | 193.236714 | 6.763285 | 386.473428 | 483.091785 |
Integer rounding may leave one smallest USDG unit below A; it can never push settlement above the signed limit. For example, the 200 USDG row settles at 199.999999 USDG, not 200.000000.
When the fee becomes revenue
| Game state | Fee state | Refund / VOID | Required next action |
|---|---|---|---|
| Coin · AwaitingRandomness | F remains pending refundable Fee Escrow | Only while still AwaitingRandomness and either frozen time or block timeout is reached: refundExpired returns B + F | Wait for VRF, or call the qualifying timeout path |
| Parity · AwaitingReport | F remains pending refundable Fee Escrow | Only after the inclusive report deadline, while still AwaitingReport: voidExpired returns B + F | Submit the report through the deadline, or VOID one second later |
| Parity Mystery · AwaitingRandomness / AwaitingReport | F remains pending refundable Fee Escrow | Only after the report deadline, while still in either awaiting state: voidExpired returns B + F | Complete selection/report, or call the qualifying VOID path |
| Coin · RandomReady / Parity · ReportReady | F is still held by the Game but the refund/VOID branch is closed | No refund or VOID: the outcome/report is frozen and these functions reject the state | Anyone must call settle; a ready result cannot be converted back into a timeout |
| Settled | F moves to settled Fee Escrow | No refund or VOID | Only now may anyone call flushFee exactly once |
| Refunded / Voided | F was returned with B | B + F has already left the Game | flushFee is permanently unavailable for this Bet/Ticket |
- The current rulesVersion gives Game Fee Treasury no withdraw, spend, allocate, sweep, or Reserve refill path.
- Protocol Hook fees, V4 LP fees, price impact, slippage, and gas are separate market costs and must be shown separately when applicable.
Timeout refund and Bond compensation are separate
refundRaw = B + F
additionalReserveRaw = prizeNotionalRaw - B
user timeout/VOID receipts = refundRaw from Game + additionalReserveRaw from responsible BondA qualifying Coin timeout or Parity VOID returns the refundable principal and fee from Game escrow. In the same terminal transaction, the responsible VRF Provider or Reporter Bond is slashed for exactly the Ticket’s frozen additionalReserveRaw. Compensation is not taken from B, is not a fee refund, and must be shown as a separate receipt/event field.
- Manual
- Prize is
2B, soadditionalReserveRaw = B. - Mystery
- Prize is
floor(2.5B), soadditionalReserveRaw = prizeNotionalRaw - B. - No double terminal
- A refunded/voided Ticket cannot later settle; late randomness or reports cannot recreate the exposure.
