On-chain raffle · BNB Chain

Same odds for everyone holding a ticket.

LOTTERY is a BNB Chain token wired to a round-based drawing vault. Stake the minimum and you get exactly one ticket — staking more doesn't buy extra chances. The prize is BNB, funded straight from the token's own trading tax.

Contract address (CA)
Will be posted at launch
LOTTERY — Draw ticket Current round
10 min
Length of each round
100,000
LOTTERY needed for a ticket
—%
Pool paid out per round
1 / 1%
Buy / sell tax
Each round only pays out part of the pool — the rest rolls forward automatically into the next round.

How it works

One round runs through five steps

The whole process happens on-chain and anyone can call the functions below — no team has to stand in and run the draw for you.

01

Trading fills the prize pool

Every buy or sell of LOTTERY carries a 1% tax. That tax is converted to BNB and sent straight into the vault — this is the pool the prize gets paid from.

02

Stake to get a ticket

Approve, then call enter() with the amount you want to stake. The moment your balance reaches the minimum, your wallet counts as exactly one ticket for this round — staking further doesn't create a second ticket.

enter(amount)
03

Round closes, prize gets locked in

Once the round's time is up, anyone can call the close function. A fixed percentage of the accumulated pool is locked in as this round's prize; everything else stays in the pool for the next round.

closeRound()
04

Drawn from a future blockhash

A few blocks later, the draw function reads the hash of a block that was committed to in advance — at close time nobody could know what that hash would be — and uses it to pick one qualified ticket at random, with equal odds for every ticket.

drawWinner()
05

Claim the prize, withdraw your stake

The winner claims the BNB prize. More importantly: once a round has been drawn, everyone who staked — winner or not — can withdraw their full LOTTERY stake back. Your stake is never at risk; only the BNB prize is won or lost.

claimPrize(roundId) · claimStake(roundId)

Fair odds

One wallet, one ticket — staking more doesn't win more

This is a deliberate design choice: your odds of winning are not proportional to how much you put in.

Fair by wallet, not by size

A wallet that stakes exactly the minimum has the exact same odds as a wallet that stakes ten times that. Staking more only changes how much you withdraw afterward — it never buys an extra ticket.

A trade-off worth knowing

Because tickets are counted per address rather than per token, someone willing to split funds across many wallets — each staking the minimum — could in theory collect more tickets than someone holding a single wallet. The minimum stake is set high enough that splitting like this isn't worth the gas and capital cost, but it's still worth understanding before you stake — it's a trade-off of this design, not a bug.

Tokenomics

Trading tax feeds the prize pool directly

There's no separate team wallet collecting the tax — the entire flow goes straight into the drawing vault.

100%tax → Vault
  • Buy tax
    Applied on every LOTTERY buy order
    1%
  • Sell tax
    Applied on every LOTTERY sell order
    1%
  • Tax allocation
    All of it converts to BNB and funds the drawing vault — no burn, no separate dividend, no added liquidity
    100%
  • Paid out per round
    A fixed share of the accumulated pool; the remainder rolls automatically into the next round
    —%

Security & randomness

A transparent draw, no third party needed

No admin key gets to pick the winner. A commit–reveal scheme uses a future blockhash as the source of randomness.

  • When a round closes, the contract commits to a block a few blocks in the future — at that moment, nobody, not even validators, knows what that block's hash will be.
  • Once that block exists, anyone can call the draw function so the contract reads the hash itself and picks the winner with a modulo operation, giving every ticket an equal chance.
  • If nobody calls the draw within 256 blocks of the committed block, the original hash is no longer available on-chain — the contract automatically re-commits to a new block instead of drawing on an empty, predictable hash.
  • This is a gas-free mechanism, well suited to a community lottery at a moderate scale. For very large prizes, blockhash-based randomness still carries a theoretical degree of validator risk — worth keeping in mind as the pool grows over time.
  • Player stakes and the prize pool are tracked separately inside the contract's own accounting — win or lose, your stake is always withdrawable once a round has been drawn.

Frequently asked

Before you stake

Can I lose my staked tokens?

No. Once a round has been drawn, anyone who staked — winner or not — can call claimStake() to withdraw the exact amount of LOTTERY they put in. Only the BNB prize is won or lost; your principal always comes back.

How much do I need to stake for a ticket?

Reaching the minimum configured for the vault (see "LOTTERY needed for a ticket" above) is enough for exactly one ticket. Staking more doesn't create a second ticket — the extra balance is simply returned in full once the round ends.

What happens if nobody reaches the minimum in a round?

That round has no winner, the locked prize is returned to the shared pool, and a new round starts immediately. No BNB ever gets stranded.

Where does the prize come from?

From LOTTERY's 1% buy / 1% sell trading tax, converted to BNB and accumulated in the vault. Each round only pays out a fixed percentage of that balance — the rest rolls forward automatically, letting the pool grow over time instead of being emptied by a single winner.

Who controls the draw?

Nobody. Both the close and draw functions are open to any address to call — there's no privileged admin role in picking the winner. See "Security & randomness" above.

Ready to grab a ticket for the next round?

The contract address will be announced right at launch. Follow Telegram or X so you don't miss it.