π The Blaze Papers / The Casino
π° The Casino (all seven games)
Seven games, seven contracts, one page: the HeadorBlazed coin flip, Roll the Dice, Blaze Drop, Spin the Wheel, BLAZE Crash, Higher & Lower and Ember Field. Every number below is read off the contracts, not off the marketing.
π° On this page: how each of the seven tables actually works β payouts, house edge, and where the randomness comes from.
How it plays
π₯± degen tl;dr
Pick a bet between 1 and 420 BLAZE, hit approve, then flip. Win and you double your bet. Lose and half your bet gets burned forever, the other half stays in the game contract to fund future payouts. There's a 10-second breather between flips, and if you string together 5 wins in a row you get a juicy streak bonus. It's fake money, so send it. πͺ
π€ the nerd stuff
Contract HeadorBlazed at
0x63082d537E4bdf04cD22098fbC6B7f5409a080dA, verified on
SonicScan.
Flow is approve β flip: the player approves the game contract
to spend BLAZE, then calls the flip function with a bet amount.
- Bet range:
MIN_BET = 1 BLAZE,MAX_BET = 420 BLAZE. - Payout:
payoutMultiplier = 2β a win pays 2Γ the bet. - Loss:
burnPercentage = 5000basis points (50%) of the lost bet is burned; the remaining 50% stays in the game contract's balance to fund future payouts. - Cooldown:
COOLDOWN = 10seconds between flips per player. - Streak bonus: hit
streakThreshold = 5consecutive wins and the next qualifying win pays an extra bonus ofbet Γ streakBonusMultiplier(5Γ), gated by astreakBonusCooldown = 24 hoursper player.
The randomness β read this part
π₯± degen tl;dr
The coin flip isn't powered by some fancy verifiable-random oracle β it's computed from block data on-chain. That's fine for a meme-priced practice token, but it means a sufficiently motivated validator could theoretically nudge the outcome. The contract's own comments say so, out loud. This is not a place to bet anything that matters. β οΈ
π€ the nerd stuff
Outcomes are derived from keccak256 over block data (a seed built
from block/transaction context, hashed on-chain). This is
miner/validator-influenceable β it is not a cryptographically
secure source of randomness such as Chainlink VRF.
The contract's own NatSpec states it plainly: "Not secure for high-stakes use cases." That caveat is preserved here on purpose, not softened. Since 2026-08-31 BLAZE does have a market price, so "the stakes are zero" is no longer literally true β but the biggest bet this game takes is 420 BLAZE, which at that price is worth a few thousandths of a cent (π The Price). A validator able to influence this seed would be spending real gas to win a rounding error. The weakness is real and the incentive to exploit it is not, and we would rather write both sentences than only the flattering one. It is a limitation baked into the deployed bytecode: there is no upgrade path, so this randomness can never be swapped for a real VRF without deploying an entirely new game contract.
Control & honesty
π₯± degen tl;dr
Unlike the BLAZE token itself, the game contract is not ownerless. The team can pause it, and there are withdraw functions on it. We're telling you that plainly instead of letting the "renounced" story about the token bleed over onto the game, because it doesn't apply here. π
π€ the nerd stuff
HeadorBlazed is owned by the deployer/treasury wallet
(0xd500c0bd9c853d1a234d3c86420edac0331cf7a8) and is
Pausable. The owner can call withdraw,
emergencyWithdrawNative, and
emergencyWithdrawERC20, and can adjust
payoutMultiplier, burnPercentage,
streakThreshold, streakBonusMultiplier and
streakBonusCooldown via owner-only setters.
None of that is a defect β it's a normal, disclosed operator capability on a non-immutable contract. See Trust & Verify for the full picture across all nine BLAZE contracts.
This contract is audited by AI agents, not by a paid security firm. Treat it accordingly: it is a practice-token game, not financial infrastructure.
Check the numbers yourself: ποΈ The House reads every figure in this paper straight off the chain β each table's free float, what it is holding for bets still in flight, the all-time wagered/paid/burned counters, the live bet limits and cooldowns, and whether the contract is paused right now. It needs no wallet and can send no transaction. Where this paper says "the free float is the ceiling", that page is where you watch the ceiling move.
π² Roll the Dice (BlazeDice)
π₯± degen tl;dr
The second casino game, live 2026-08-03. Call an exact number for 6Γ, or low/high / odd/even for 2Γ. 1β420 BLAZE a roll, 10-second cooldown. Three clicks per game on one morphing button: Approve (exactly your bet, never unlimited), Place bet (escrows your BLAZE on-chain), then ROLL! β the click that actually produces the number, ~3 seconds after the bet locks.
Nobody knows the result in between, not even us. Lose and half your bet burns forever π₯
That two-click flow is VRF mode, and VRF is what is live. Approve, then a combined Place Bet & Roll, and the oracle throws the reveal for a small S fee quoted before you sign. The three-click version above is blockhash mode β the fallback the owner can switch back to, in which you press the reveal yourself. The game page live-reads which one is running, so trust that over any document, including this one.
π€ the nerd stuff
Contract: 0xd33FF6d627293EC863813ECB5962DEecfb12D1Fc,
verified on SonicScan and Sourcify. Commitβreveal: roll() escrows the
stake and records the block; after 2 more blocks anyone may call
resolve(), which derives the die from
blockhash(commitBlock + 2) β a block that did not exist when
the bet was placed, keccak-mixed with the roll id and player.
If a roll sits
unresolved past 250 blocks the blockhash expires and reclaim() refunds
the full stake β a stake can never strand, and pausing only blocks new
rolls, never reveals or refunds.
One honest consequence we're not hiding:
resolve() is deliberately permissionless, because a
player who computes their outcome off-chain could otherwise reveal wins and let
losses quietly expire into refunds. Anyone β including us β can settle an
abandoned roll inside its ~4-minute window and lock the burn in.
For a token worth a rounding error, that's plenty; if dice volume ever gets serious, a tiny keeper bot closes the loophole entirely. Payouts come from a pre-funded house float, and the contract refuses any bet whose worst-case payout exceeds that float.
Same honesty caveat as the coin flip: blockhash randomness is validator-influenceable in theory β fine for a token worth a rounding error, not for real stakes. The contract also carries a PaintSwap VRF mode the owner can switch on or off live β the game page's Randomness line always shows which one is active right now; every roll records which resolver actually produced its number.
πͺ Blaze Drop (BlazePlinko)
π₯± degen tl;dr
The third casino game, live 2026-08-04. Drop a flaming chip down a 12-row peg board and land in one of 13 buckets. Pick your board: Low (5Γ edges, 0.90Γ middle), Medium (30Γ / 0.55Γ) or High (80Γ / 0.20Γ). 1β420 BLAZE a drop, cooldown read live off the contract.
Blaze Drop carries a π₯ ALL IN chip that stakes whatever is left of your approved credits in a single press. It is not a "bet everything you own" button β it can only ever stake what you already approved, and it needs no second signature.
It exists because BLAZE's 0.042% transfer burn is taken before the allowance is spent, so ordinary betting leaves a sliver of every approval stranded forever. ALL IN does that arithmetic and stakes the exact amount that lands your approval on zero.
Where your credits are larger than one bet can take, the chip says
so on its face β π₯ ALL IN Β· 420 β and the rest stays approved for the
next press.
Two things it does that the other games don't. First, you approve a
session credits β 1, 5 or 10 drops' worth, bounded, never unlimited β instead of
signing an approval for every single bet. Second, it mirrors Roll the Dice's own explicit
ritual: Place Bet escrows the stake and perches the chip on the board
(drop()), then DROP is the reveal (resolve()) β the
fall plays for real, using the path the chain just computed.
Land under 1Γ and you still get that fraction back; half the shortfall burns forever π₯
That two-click flow is VRF mode, and VRF is what is live. Approve the credits, then a combined Place Bet & Drop, and the oracle throws the reveal for a small S fee quoted before you sign. The three-click version above is blockhash mode β the fallback the owner can switch back to, in which you press the reveal yourself. The game page live-reads which one is running, so trust that over any document, including this one.
π€ the nerd stuff
Contract: 0x1081435848d8AC2a404d37497ec3D2053dBd3Bf6,
verified on SonicScan. Commitβreveal, same two-phase architecture as BlazeDice:
drop() escrows the stake and records the block; after 2 more blocks anyone may
call resolve(), which derives the path from
blockhash(commitBlock + 2) keccak-mixed with the drop id and player.
The physics are the interesting part. The seed's low 12 bits ARE the
ball's path: bit r is row r+1's bounce, 0 left and 1 right, and
bucket = popcount(pathBits).
Twelve independent fair bits produce the exact
binomial a physical Galton board does β centre 924/4096, each edge exactly 1/4096. The
contract stores and emits pathBits, so the animation on the site
replays the bounces the chain actually computed rather than inventing a pretty fall and
stapling the answer on the end. Anyone can recompute the bucket from the event.
The payout curves are immutable. Three 13-bucket tables declared
constant, with no setter of any kind β the owner cannot re-price a
bucket, for a live drop or a future one.
Gross expected return is
0.9934Γ (Low), 0.9979Γ (Medium), 0.9953Γ (High): a house edge under 1% on every
board, and checkable, because getCurve() is a public pure function and the repo's
test suite recomputes the EV from those very constants on every run.
Piggyback settlement is a safety net baked into drop() itself,
not the advertised flow: it also tries to settle the caller's previous pending drop in the same
transaction β but only if that drop is resolvable right now. Play the site's own ritual straight
(Place Bet, then DROP, every ball) and you never trigger it.
But nothing on-chain stops a second
drop() from landing while an older one is still open β a different tab, a direct
contract call β and if that older drop happens to be resolvable right then, the piggyback
catches it in the very same transaction, in one signature.
Not ready, still owned by the VRF oracle, already settled by someone else, or expired past the blockhash window, and the piggyback skips silently. It can never make a new drop revert, and it can never strand a stake either way.
If a drop sits unresolved past 250 blocks the blockhash expires and reclaim()
refunds the full stake β a stake can never strand, and pausing only blocks new drops,
never reveals or refunds. Payouts come from a pre-funded house float, and the contract refuses
any drop whose worst case (the 80Γ edge on High) exceeds it.
Same honesty caveat as the other two: blockhash randomness is validator-influenceable in theory β fine for a token worth a rounding error, not for real stakes, and we will not call it "provably fair". The contract carries a PaintSwap VRF mode the owner can switch on or off live β the game page's Randomness line always shows which one is active right now; every drop records which resolver actually produced its path.
π‘ Spin the Wheel (BlazeWheel)
π₯± degen tl;dr
The fourth casino game, live 2026-08. One iconic 16-wedge wheel, pure fate β no calls, no risk boards, the wheel decides. Four π BUSTs carry 240 of 420 slots (57%), 1.5Γ/2Γ/3Γ are the bread and butter, two 5Γ for the brave, and a π₯ 42Γ jackpot sliver whose odds we keep to ourselves π€«. 1β420 BLAZE a spin, cooldown read live off the contract, session credits (1/5/10 spins, never unlimited). Bust and half your stake burns forever π₯
Two presses: π Approve β π‘ Place Bet & Spin β and the deceleration you watch lands on the exact wedge the chain emitted. The wedges are drawn to scale: the wheel IS the odds.
That two-press flow is VRF mode, and VRF is what is live. Approve, then a combined Place Bet & Spin, and the oracle spins the reveal for a small S fee quoted before you sign. The three-press version above is blockhash mode β the fallback the owner can switch back to, in which you press the reveal yourself. The game page live-reads which one is running, so trust that over any document, including this one.
π€ the nerd stuff
Contract: 0x3158C29ED5D31767186407853aE3A96bA4233E01,
verified on SonicScan. Commitβreveal, same two-phase architecture as BlazeDice and
BlazePlinko: spin() escrows the stake and records the block; after 2 more
blocks anyone may call resolve(), which derives the seed from
blockhash(commitBlock + 2) keccak-mixed with the spin id and player.
The wedge math is the interesting part. The 16 wedge weights sum to
exactly 420, so seed % 420 maps every slot onto
exactly one wedge β a wedge's probability is precisely its weight over 420. Honestly:
420 is not a power of two, so the modulo carries a residual bias of
420 / 2256 β 2-247 of the smallest slot's share β
cryptographically negligible, and disclosed rather than glossed over.
The contract
stores and emits the landed wedgeIndex, so the site's
deceleration brakes onto the wedge the chain actually computed rather than a pretty spin
with the answer stapled on. Anyone can recompute it from the event.
The wedge table is immutable. All 32 constants
(getWheel() returns the lot), no setter of any kind. Gross
expected return is 0.995238Γ β Ξ£ weightΓmultiplier =
41,800 of a possible 42,000 β a house edge under 1%, checkable on SonicScan and
recomputed from the deployed constants by the repo's test suite on every run.
Bust economics: land a 0Γ wedge and the shortfall (your whole stake)
splits 50/50 β half burns forever, half stays in the float so the next winner gets paid.
Every spin books the 42Γ worst case as exposure, and the contract refuses
any bet the free float can't cover. If a spin sits unresolved past 250 blocks,
reclaim() refunds the full stake β nothing strands, and pausing only blocks
new bets.
Same honesty caveat as the other three: blockhash randomness is validator-influenceable in theory β fine for a token worth a rounding error, and we will not call it "provably fair". The PaintSwap VRF mode is switchable on or off live β the game page's Randomness line always shows which one is active right now; every spin records which resolver actually produced its wedge.
π BLAZE Crash (BlazeCrash)
π₯± degen tl;dr
The fifth casino game, live 2026-08. Pick a stake AND a target multiplier (1.10Γβ420.00Γ, presets 1.5Γ/2Γ/4.2Γ/10Γ/42Γ/420Γ), light the fuse, and the chain decides where the rocket bursts. Burst at or above your target β‘οΈ you eject πͺ with targetΓ your stake.
Below it β‘οΈ bust, and half your stake burns forever π₯. 1β420 BLAZE a launch, session credits (1/5/10 launches, never unlimited), cooldown read live off the contract. Two presses in VRF mode, which is what is live (approve β launch & reveal) β the oracle flies the reveal for a small S fee quoted before you sign. Three in blockhash mode, the fallback (approve β launch β reveal yourself).
Every odd is public. 2Γ wins 49.76% Β· 4.2Γ wins 23.70% Β· 10Γ wins 9.95% Β· 42Γ wins 2.37% Β· 420Γ wins 0.237% (about 1-in-422) β and ~9.52% of flights fireball below 1.10Γ, under every possible target. Whatever you call, the deal is the same: the house keeps 1 in 210. The formula is printed on the game page and in the contract; recompute it whenever you like.
Why can't I cash out mid-flight? Because the chain can't referee a reflex game. The reveal produces the whole flight at once β there is no "during" for you to react in. Any crash site that shows you a live rocket you can eject from is running that rocket on a server, and you're trusting the server.
We'd rather hand you the same math with the reflex theater removed: call your shot before ignition, on-chain, nothing to trust but the block.
π€ the nerd stuff
Contract: 0xDb4396FF0f52e0b245c41736a12A45A62ba0dfbA,
verified on SonicScan. Commitβreveal, same two-phase architecture as BlazeDice,
BlazePlinko and BlazeWheel: launch(stake, targetX100) escrows the stake
and the target together and records the block; after 2 more blocks anyone may call
resolve(), which derives the seed from
blockhash(commitBlock + 2) keccak-mixed with the launch id and
player.
The formula is the interesting part. The seed's low 52
bits are the draw β a power-of-two draw, so unlike a modulo reduction there
is zero draw bias. U = 2β΅Β² β r is uniform
over [1, 2β΅Β²] and
crashX100 = (20900 βͺ 52) / (210 Β· U)
(20900 = 209 Β· 100).
Win at target T iff
crashX100 β₯ T, which happens for exactly
β(20900 βͺ 52)/(210Β·T)β of the 2β΅Β² draws β so
P(win at m) = (209/210)/m to within ~2β»β΅Β² (the floor's
rounding, disclosed in the NatSpec), and EV = 209/210 =
0.995238 for every target β bustabit's distribution, translated to integer
on-chain math.
The minimum crash point is 0.99Γ (an instant bust below every legal
target, ~9.52%); the contract stores and emits crashX100,
so the site's rocket replays the flight the chain actually computed. Anyone can
recompute it from the event.
The formula is immutable. The EV constants, the 52-bit draw and the
target bounds are constant with no setter of any kind β
the owner cannot re-price the game, and the bust burn split is hard-capped at 50% by
a require in its setter. The repo's test suite re-extracts these
constants from the verified source on every run.
Solvency is per-launch: the contract books stake Γ target /
100 as exposure the moment you commit β your own target is your own worst case
(a 420-BLAZE launch at 420Γ reserves 176,400 BLAZE) β and refuses any launch the free
float can't already cover.
If a launch sits unresolved past 250 blocks the blockhash
expires and reclaim() refunds the full stake β nothing strands, and
pausing only blocks new launches, never reveals or refunds. Piggyback
settlement (the same silent safety net as the other games) settles an abandoned
launch inside the next bet when it can, and skips harmlessly when it can't.
Same honesty caveat as the other four: blockhash randomness is validator-influenceable in theory β fine for a token worth a rounding error, and we will not call it "provably fair". The PaintSwap VRF mode is switchable on or off live β the game page's Randomness line always shows which one is active right now; every launch records which resolver actually produced its crash point.
π Higher & Lower (BlazeHiLo)
π₯± degen tl;dr
The sixth casino game, live 2026-08-17, and the first one that isn't over in a single transaction. One card lands face up. Call HIGHER or LOWER on the next one. Guess right and your bank multiplies; guess wrong and the whole ladder β bust β is gone. Cash out after ANY rung you like, you never have to climb the whole thing.
Every rung's payout is the honest inverse of its own odds β call the coinflip card and win 2.00Γ; call the near-certain card (11 of 12 outs) and win only 1.09Γ; call the longest of long shots (1 of 12 outs) and win 12.00Γ. The number on the table tells you your real odds before you guess, and every odd in this game is public β nothing here is a house secret. Draw the SAME rank as the card on the table and it's a PUSH: nothing won, nothing lost, no rung spent, guess again.
Ranks are 2 through Ace (13 ranks, an infinite shoe β not a countable 52-card deck, so nobody can card-count their way to an edge), and the full 21-rung ladder pays about 553Γ β roughly a 1-in-553 shot at riding it all the way up. The house's cut is charged exactly once, on your very first call, never again after that β climbing 21 rungs costs the same toll as climbing one.
Rung 0 is a full, un-edged refund β cash out before your first call and you get back exactly what you staked. But there's a trap hiding in that sentence: the ONE call that can't lose (calling higher on a 2, or lower on an Ace) still costs you the edge if you take it, because winning it moves you from an un-edged stake to an edged one. It cannot bust the ladder, but it is not free β the page detects this exact case and refuses to call it FREE.
Every rung is drawn live, one card at a time, after your call is locked β never pre-drawn, never guessable in advance. If you call a rung and then walk away without pressing resolve, that rung busts. It does not refund. That's not stinginess β see the nerd box for exactly why.
A small rescue fee rides along with your stake and comes back in full the moment your session ends honestly. Ghost a rung or a whole session and a stranger can settle it for you and pocket that fee instead β the same fee either way, win or lose, so there's nothing for a bot to hunt.
Randomness is blockhash, full stop β there is no VRF mode on this game, unlike the other five. That's a deliberate, structural choice (see the nerd box), and it means a sufficiently motivated validator is theoretically able to nudge a card. A per-session payout cap exists specifically to bound how much that theoretical edge could ever be worth on a single ladder.
π€ the nerd stuff
Contract: 0x85b264c8FE20C5691280e75A04a06578Bc0cd81C,
verified on SonicScan, deployed 2026-08-17 block 77654448. BLAZE's first
session game β every other game settles in one bet, this one
keeps live state across an unbounded number of rungs until you cash out, bust,
or a stale session gets force-settled.
The odds are the fair inverse of themselves, exactly. For the
card on the table c, going higher has 14 β c
winning ranks and going lower has c β 2, out of 12
non-tie ranks, and the multiplier is 12 / outs β so
probability Γ multiplier = 1 for every card and
both directions, before the house edge. c = 8 is a
coinflip at 2.00Γ; c = 3 calling lower has exactly 1 out
of 12 and pays the game's steepest single rung, 12.00Γ. The accumulated
multiplier compounds in 1e18 fixed point across every rung won.
The house edge is 209/210 = 0.995238, charged ONCE, on the
0 β 1 transition β not per rung. Charging it every rung
would punish long climbs (five rungs would cost 2.4% instead of 0.476%);
charging it once means every session that plays at least one rung has the
identical EV, however long it runs, and rung 0 (a plain cash-out with no call
made) is strictly better β a full, un-edged refund. That is also why the
site's FREE-rung detector is the exact general test
payoutIfWin < bankedNow(), not "first rung is free":
the one un-losable call at rung 0 fails that test and must never be labelled
free.
THE DECLINE RULE β why an abandoned rung busts instead of refunding.
Every card is drawn from blockhash(commitBlock + 2), a
block that becomes public seconds after your call locks. That means a player
can compute their own outcome off-chain before ever pressing
resolve(). If an abandoned rung refunded, the rational move would
be to resolve every win and abandon every loss β a free option, paid for
entirely by the house. Settling an abandoned rung as a bust
removes that option completely: bust and forfeit are the same outcome for the
player, so there is never a reason to walk away instead of pressing the
button.
This is a general rule, not a HiLo-specific quirk: a settlement a
player can decline must cost them exactly what taking it costs, whenever the
outcome is already knowable β and by commitBlock + 2 it
is.
An honest player is protected four separate ways: resolve()
is permissionless so anyone can settle anyone, the page itself fires it seconds
after your call, reopening the page inside the window settles it
automatically, and the rescue fee (below) gives a total stranger a reason to
press the button for you.
The rescue fee is self-funded and symmetric. deal()
escrows a small, owner-set, hard-capped fee on top of your stake. Finish your
own session β resolve your own rungs and cash out yourself β and it comes back
in full at cash-out, bust or reclaim. Leave a rung stale past its rescue delay,
or leave an open session sitting past its idle window, and whoever clears it
earns the fee instead of you. It pays the SAME amount whether the rung it
settles won or lost, deliberately: a bounty that only paid on a loss would make
"hunt losers, ignore winners" the profitable bot strategy, and a symmetric fee
leaves nothing to hunt. A rescuer can never touch your money or bend a card β
the card is already determined by a blockhash that already exists, and every
payout still credits the session's own player, never the rescuer.
The per-session payout cap is a security control, not a house-edge knob. The "float is the ceiling" doctrine the five one-shot games use is unsafe here specifically because this game compounds: a one-shot game's worst case is bounded by its own multiplier (BlazeCrash's ceiling is a constant 176,400 BLAZE), but a validator who can see two blocks ahead can walk a HiLo ladder's exposure upward rung by rung, waiting between guesses until they're due to propose again.
Measured on paper against a 250M float: a 42,000 stake and four produced blocks alone would reach 86% of the treasury with no cap in place. The cap (default 2% of the float, owner-bounded between 0.1% and 20%) stops that same walk-up at rung 1. Honest play barely notices it β a full 553Γ ladder only brushes the cap on stakes that are already unusually large for this game.
Cash out any time, and the float is still the day-to-day ceiling below
the cap. Every open session reserves the worst case it could still
cost the house right now; a guess the free float can't cover simply reverts,
and the only legal move from there is to cash out. reclaim()
exists too, but only for the one moment nothing is at risk: the opening card
never arriving at all β every other exit is cash-out or bust, on purpose, per
the decline rule above.
Where the money lives. A busted rung burns 50%
of the stake forever (hard-capped there, same as every game here) and the
rest stays in the house float to fund future payouts. Payouts, refunds and the
rescue fee all come out of that same float. withdraw() can never
touch an escrowed stake, a booked worst-case payout, or a rescue fee owed back
to a player β only the genuinely free remainder.
Pausing this game is narrower than the others, on purpose.
Pausing blocks new deal()s only β guess,
resolve, cashOut, reclaim and
forceSettle all keep working, because a session game must never
let a pause trap a player's bank mid-ladder. The rung multipliers and the
209/210 edge are constant, with no setter of any kind β the owner
cannot re-price a ladder somebody is already climbing.
Why there is no VRF lane here, unlike the other five. An oracle
lane was designed, built, and then removed (owner decision, after three
separate attempts each found a different exploit) β because a session game
needs an escape hatch for every rung, and an oracle can go silent through no
fault of the player. On the blockhash lane, that escape is a bust, which no
player ever prefers β so there's nothing to game. An oracle lane's escape has
to be a push instead, since a silent oracle isn't the player's fault β and a
push is exactly what a losing player wants. Two settlements with different
values, one the player gets to pick, is a free option by construction, however
it's disguised. So this game draws every card from
blockhash(commitBlock + 2) only, and the site says so
plainly rather than pretending it's the same caveat as a one-shot game: a
one-shot grinder's take is capped by that game's own multiplier, but a ladder
compounds, which is exactly what the payout cap above exists to bound.
βοΈ Ember Field (BlazeMines)
π₯± degen tl;dr
The seventh casino game, live 2026-08-18, and the second session game β mines, the BLAZE way. A 5Γ5 field of 25 tiles, and YOU pick how many are wet π§ β anywhere from 1 to 24. Tap a tile: dry means your multiplier compounds and you keep digging, wet means FLOODED β the dig is over and half your stake burns forever π₯. CASH OUT after any dry tile; you never have to clear the field.
Every multiplier is the honest inverse of its own odds, and every odd is public.
With t tiles undug and m wet ones in play, the next
pick survives (tβm)/t of the time and multiplies your bank by
t/(tβm) β the two cancel exactly, so before the house edge every
pick is a fair coin weighted exactly as it says. The house's cut is
209/210, charged once, on your first pick only β digging
twenty tiles costs the same toll as digging one.
Clear every dry tile and that's the π PERFECT DIG β the game auto-banks the whole dig. The smallest perfect dig (5 wet tiles) multiplies your stake 53,130Γ; the summit boards climb into the millions, far past what any float can pay, which is where the per-dig payout cap steps in β the page always shows you the real, capped number before you commit a pick, never after.
Which tile you tap is style, not strategy. The board never exists β no mine layout is ever drawn and stored, not even hidden. Each pick is its own live draw against the count of undug and wet tiles, so corner tiles aren't luckier and your favourite square isn't due. Superstition welcome, just not load-bearing π¨.
Walk away from a locked pick and it floods. It does not refund β same decline rule as Higher & Lower, same reason (the nerd box has the full story). A small rescue fee rides with your stake and comes back whole when you finish your own dig; ghost it and a stranger earns the fee for settling it, win or lose the same, so there's nothing for a bot to hunt.
Bets run 1 to 4,200 BLAZE (deliberately below Higher & Lower's ceiling β this game compounds harder), with a short per-dig cooldown, both live-read on the page. Randomness is blockhash only β no VRF mode exists on this contract, the same structural choice as Higher & Lower, bounded by the same per-dig payout cap.
π€ the nerd stuff
Contract: 0x9e3c8ddeBE9aCEB4aAabCFEA5b1D8AD130841d61,
verified on SonicScan, deployed 2026-08-18 block 77701332. Built as a minimal
diff on the BlazeHiLo session engine: same per-rung commit/reveal shape (one
pick = one blockhash(commitBlock + 2) draw), same
once-only 209/210 edge (applied at settlement; a dig cashed out with zero
tiles dug settles un-edged, the full stake back), same self-funded
symmetric rescue fee, same per-session payout cap
(default 2% of the float, owner-bounded 0.1%β20%), same narrower pause.
The board cannot be pre-drawn, and that is a security property.
deal() stores only two numbers β how many tiles are dug and how
many are wet. Each pick() draws fresh: the seed's low bits are
reduced against t (undug tiles), wet if the draw lands below
m. Storing a full layout at deal time would mean one seed decides
25 tiles at once β one blockhash worth 25 answers is a far juicier
validator target than one blockhash worth one answer. The per-pick
hypergeometric draw is provably equivalent to a hidden fixed board (each
sequence of picks has the identical joint distribution) with strictly less
state at risk per block.
It also means the tile id you tap never
enters the draw β the draw is keyed on tilesDug, the pick
index β so the board the page draws at settlement (the Flood
Reveal) is cosmetic by construction: your revealed picks are pinned
where they really landed and the rest of the water is placed
deterministically from the settlement's own entropy, because no honest
"here's where the mines were" exists β the game never had a board.
Multiplier arithmetic is physics, not policy.
nextAccMul(acc, dug, m) = acc Γ t / (t β m)
with t = 25 β dug, in 1e18 fixed point,
TILES = 25 a constant and the wet count
locked at deal β there is no setter that can re-price a dig in flight. A full
clear at m wet tiles works out to exactly
C(25, m): 53,130Γ at m = 5 (or 20, by symmetry),
peaking at 5,200,300Γ at m = 12/13 β which is why the payout cap,
not the multiplier, is the real ceiling on summit boards, and why the page
quotes the capped figure up front.
The full odds table, all 24 water counts β this lived on the game page at launch and moved here the same day (owner call: the page keeps the LIVE surfaces β your wet chance and exact payout before every pick β and the wall of numbers lives in the library). Generated from the same math mirror the page and the contract tests share; π marks the PERFECT DIG band (5β20 wet), where a full clear makes the hall of fame.
| π§ wet | 1st pick wet | 1st pick pays | full clear = picks | full clear pays |
|---|---|---|---|---|
| 1 π§ | 4% | 1.04Γ | 24 | 25.00Γ |
| 2 π§ | 8% | 1.08Γ | 23 | 300Γ |
| 3 π§ | 12% | 1.13Γ | 22 | 2,300Γ |
| 4 π§ | 16% | 1.19Γ | 21 | 12,650Γ |
| 5 π§ | 20% | 1.25Γ | 20 | 53,130Γ π |
| 6 π§ | 24% | 1.31Γ | 19 | 177,100Γ π |
| 7 π§ | 28% | 1.38Γ | 18 | 480,700Γ π |
| 8 π§ | 32% | 1.47Γ | 17 | 1,081,575Γ π |
| 9 π§ | 36% | 1.56Γ | 16 | 2,042,975Γ π |
| 10 π§ | 40% | 1.66Γ | 15 | 3,268,760Γ π |
| 11 π§ | 44% | 1.78Γ | 14 | 4,457,400Γ π |
| 12 π§ | 48% | 1.92Γ | 13 | 5,200,300Γ π |
| 13 π§ | 52% | 2.08Γ | 12 | 5,200,300Γ π |
| 14 π§ | 56% | 2.27Γ | 11 | 4,457,400Γ π |
| 15 π§ | 60% | 2.50Γ | 10 | 3,268,760Γ π |
| 16 π§ | 64% | 2.77Γ | 9 | 2,042,975Γ π |
| 17 π§ | 68% | 3.12Γ | 8 | 1,081,575Γ π |
| 18 π§ | 72% | 3.57Γ | 7 | 480,700Γ π |
| 19 π§ | 76% | 4.16Γ | 6 | 177,100Γ π |
| 20 π§ | 80% | 5.00Γ | 5 | 53,130Γ π |
| 21 π§ | 84% | 6.25Γ | 4 | 12,650Γ |
| 22 π§ | 88% | 8.33Γ | 3 | 2,300Γ |
| 23 π§ | 92% | 12.50Γ | 2 | 300Γ |
| 24 π§ | 96% | 25.00Γ | 1 | 25.00Γ |
The decline rule, second implementation. A pick's outcome is
knowable seconds after it locks, so an abandoned pick floods
(via forceSettle) β refunding it would hand out the
resolve-wins-abandon-losses free option. Unlike HiLo there is no
reclaim() at all: HiLo needed one for the moment before
its opening card existed, but deal() here opens the field
directly β there is never a state where escrow is at risk with nothing
decided, so the one honest use for a reclaim never occurs and the function was
deleted rather than guarded. Exits are exactly: cash out, flood, or
force-settle. FullClear is a dedicated event but pays
no bonus β a flat bonus would be farmable at minimum stake on
an m = 1 board (~0.12 BLAZE of edge per farmed clear); the reward
for clearing the board is the board.
Solvency per pick, not per session. Every locked pick books
its worst-case payout into outstandingExposure first; a pick the
free float cannot cover reverts (quotePick() exposes the same
affordable flag the page reads), and the only legal move from
there is cashing out. withdraw() is capped at
withdrawableBalance() β it can never touch escrowed stakes,
booked exposure, or rescue fees owed back.
Where the money lives. A flood burns 50% of the stake forever (the setter is hard-capped at 50%, same as every other BLAZE game) and the rest stays in the float. Launch float: 20,000,000 BLAZE sent β 19,991,600 arrived (8,400 burned in transit by the token's own 0.042% transfer tax), measured at deploy. The float is a consumable and the page live-reads it β treat any static number here as launch-day history.
πΏ The Burn Altar (BurnAltar) β not a casino game, and we mean it
π₯± degen tl;dr
Live 2026-08-27, and it sits at the end of this paper because it is NOT a casino game: there is no payout, no float, and no EV to line up against the tables above. A sacrifice is a donation to the fire with prize chances attached. You sacrifice anywhere from 1 to 420,000,000 BLAZE and 100% of it burns instantly, irreversibly β the Altar never holds BLAZE, keeps no revenue lane, and refunds nothing, ever. What can come back is NFTs: π’ Blaze Numbers (max 9,999 will ever be won), π₯ Sacred Flames (max 6,666 ever), or a real Bassment Rat π from a vault loaded with 671 of them at launch. Both BLAZE collections are win-only and fully on-chain SVG. And "Nothing" means literally nothing β no consolation prize.
The draw is PaintSwap VRF only β no blockhash fallback, no timeout draw. Settlement happens inside the oracle's fulfilment callback, and prizes are pull-claimed: you collect them, they're never pushed at you. And unlike the wheel's jackpot, every odd here is public β constants in the contract, no setter, full tables below π
π€ the nerd stuff
Contract: 0xBC113d6a0200f2fF1cea6bAFE128636aaAe2E678,
verified on SonicScan, deployed 2026-08-27 block 78251136. Prize collections:
Blaze Numbers
0xC77815AB9c5ADbeD9759e211249bB23eB6592F1E
(block 78250857 β the tokenId IS an 8-digit number, 00000000β99999999,
rendered as an on-chain SVG card) and Sacred Flames
0xaa619b3A4AB9958e4Cc2f74Ed165cf9412815B3E
(block 78251014 β a generative, fully on-chain flame). Both are win-only
ERC-721s whose only minter is the Altar (write-once, locked 2026-08-27), both
carrying a 4.2% EIP-2981 royalty to the treasury β the rate is a constant with
no setter; only the receiver address is settable.
The ticket rule. Every 420 BLAZE in a sacrifice is one ticket, and each ticket is an independent 1% win chance β one roll can win MANY prizes. Expected prizes are exactly linear through the exact lane: up to 420 tickets (176,400 BLAZE), every ticket is drawn individually. Above that, a published deterministic normal approximation takes over, with a disclosed deviation of about +0.3% at the 421-ticket boundary that shrinks as rolls grow. Said plainly: splitting a ticket-lane sacrifice is exactly neutral β ten rolls of 420 and one roll of 4,200 buy identical expected prizes β while splitting a sub-420 sacrifice is strictly worse (see the anchors below).
Below 420 BLAZE: ONE long-shot draw. The whole sacrifice becomes a single draw whose win chance runs piecewise linear between these anchors, approaching one full ticket at 420:
| sacrifice | win chance |
|---|---|
| 1 BLAZE | 0.0000001% |
| 42 BLAZE | 0.000042% |
| β 420 BLAZE | approaches 1% (one full ticket) |
What a win IS depends on how big you burned. Each win rolls its prize class from the band your whole sacrifice sits in:
| sacrifice (BLAZE) | π’ Numbers | π₯ Flames | π Rats |
|---|---|---|---|
| under 420 | 90% | 10% | 0% |
| 420+ | 75% | 25% | 0% |
| 4,200+ | 65% | 30% | 5% |
| 42,000+ | 55% | 35% | 10% |
| 420,000+ | 45% | 40% | 15% |
| 4.2M+ | 35% | 45% | 20% |
| 42M+ | 30% | 45% | 25% |
The clamps and the empty-lane rule. The Rat lane opens at 4,200 BLAZE, and a hard clamp allows at most 5 Rats per roll, however many tickets hit. An empty lane cannot hit: when a prize class has nothing left to give (all Numbers won, all Flames won, vault out of Rats), its share becomes Nothing β and the Altar page shows the live effective odds, so you see the real table before you burn, not the launch-day one.
The Sacred Flames are generative, and the fire remembers. Seven palettes: Classic 50%, Crimson 20%, Golden 15%, Emerald 8%, Azure 5%, Void 1.9%, Prismatic 0.1%. The flame's size band comes from the sacrifice, its embers from the epoch's ash, its scars from the losing streak β because every sacrifice feeds an on-chain Ash Chronicle epoch (ash, pilgrims, attempts, nothing-streak), updated at oracle-fulfilment time, and a Flame win fossilizes the whole epoch it captured into its art and resets it for the next era.
Drain economics, documented. At one expected win per 42,000 BLAZE, winning all 17,336 launch prizes (9,999 Numbers + 6,666 Flames + 671 Rats) works out to β 728M BLAZE burned β about 17.3% of the 4.2B supply. The Altar is the biggest burn sink BLAZE has ever shipped, and that is its entire job.
Control & honesty β same rules as every table above. Owner
powers, exhaustively: pause NEW sacrifices only (VRF fulfilment and prize
claims can never pause), cooldown settable 4β60s, a capped VRF callback gas
limit, vault deposit and withdrawal of unreserved tokens (the vault is
collection-agnostic β any plain ERC-721; that withdrawal is the generosity
lever, and we name it), and rescue of non-vault strays; anyone at all can call
burnStrayBlaze(). NO odds setter, NO burn-split setter,
NO way to withdraw BLAZE β and a reserved or won prize is provably out
of every owner's reach. The honest framing: immutable odds, owner-curated
vault, prizes beyond anyone's reach once won. Designed against the same
decline rule as the session games and triple-reviewed before deploy β two
adversarial audits β never a paid security firm β plus a structured
security review, every finding fixed pre-deploy, Foundry EVM tests, and the odds math shipped as a published twin
(altar-math.js). Still not professionally
audited β it's a meme-priced practice token, same as everything else here. See
Trust & Verify for the full contract table.