THE THREE LUCKY ARROWSYou don't have to trust us
Every result is derived on-chain from the hash of a future block that does not exist when the draw is committed. The keeper triggers the required transactions, but it never supplies the random number or chooses the winners. The contract performs the weighted selection on-chain.
Future-blockhash seed
The contract commits to a future block before its hash exists. Once mined, that blockhash becomes the source of verifiable on-chain randomness.
Odds fixed at the timer
At commit, the contract saves a Merkle-sum root of every eligible wallet and its WIN POWER. Later trades remain open but count only toward the next draw.
Auto-paid, non-custodial
Prizes are pushed directly to the winners. If a wallet cannot receive ETH, its prize remains reserved on-chain and can be claimed later.
How a draw works
- 1
Commit the draw
When the timer is due, the pot is at least 0.05 ETH and 3+ active wallets are eligible, the keeper triggers commit. The contract snapshots the pot, total WIN POWER and the canonical Merkle-sum root, then records a future reveal block.
- 2
Fix a future block
The contract records revealBlock = current block + a delay. Its hash does not exist at commit time, so the keeper cannot supply or preselect the result.
- 3
Reveal
Once the reveal block is mined, the keeper automatically calls the next permissionless step. The contract reads that block's hash itself and derives three random words. Users do not need to send any transaction.
- 4
Verify 3 snapshot winners
The random positions are resolved against the saved root. The keeper submits Merkle-sum proofs, and the contract rejects any forged wallet, weight or winner. Three distinct wallets are selected without stopping current trading.
- 5
Pay
ETH is sent to the three winners (50% / 30% / 15%) and 5% goes to the buyback burner, which buys $LUCKY and sends it to the dead address. Winning reduces WIN POWER by place; tokens stay in the wallet. Failed direct payouts remain claimable on-chain.
What is verifiable
The complete draw flow is visible on-chain: pot commit, reveal block, captured random words, weighted winner selection and payouts.
The randomness comes later. The seed is the hash of a block that hasn't been mined at commit time, not a number the crank produces. The crank can't pick a favorable value because it does not exist when the draw is committed.
The keeper cannot forge the snapshot. The root is maintained and saved by the contract before the future blockhash exists. At settlement, the keeper supplies proofs only; the contract recomputes the root and rejects any changed wallet or weight.
Future-blockhash randomness is transparent and inexpensive, but it is not the same security model as VRF: a block producer may have limited influence over a blockhash. The keeper can delay a step, but it cannot provide its own seed, choose winners or change payout percentages.
Check it yourself
The official token, fee collector, buyback burner and lottery addresses are published on this site and in GitBook. To verify any completed draw: read the reveal block's hash, reproduce the contract's hash derivation and re-run the same weighted selection logic against the committed WIN POWER snapshot. The relevant inputs and completed result are visible in contract state and events. keccak256(blockhash, revealBlock, requestId, index)
$LUCKY is a plain fixed-supply ERC-20 launched by Pons. Before graduation it trades on its Pons bonding curve; afterwards Pons moves trading to a Uniswap V4 pool and locks the liquidity permanently. Check the project's fee collector, buyback burner and lottery source code on RobinScan using the links below.
What the contract guarantees
- · Randomness from a future block hash, captured before payout
- · WIN POWER odds committed before the reveal block exists
- · Merkle-sum proofs checked against the contract-saved root
- · Prizes auto-paid directly to wallets
- · Your tokens are never moved, locked, or burned
- · The lottery has no owner or admin treasury withdrawal
- · The 80% / 20% fee split and 50 / 30 / 15 payouts + 5% buyback are immutable
- · Bought-back $LUCKY can only go to the dead address
What the crank can't do
- · Choose or predict the random number
- · Forge a wallet, weight or valid winner proof
- · Override the contract's selection or payout percentages
- · Touch the pot or your tokens
- · Redirect the buyback ETH — the burner only buys $LUCKY (with a minimum-output check) and burns it; after 7 days of keeper inactivity anyone can trigger it
The fee, in the open
Every $LUCKY buy and sell on Pons pays 2%: a 1% Pons trading fee plus a 1% $LUCKY creator tax, on the bonding curve and after graduation alike. Pons keeps 0.3% of volume; the remaining 1.7%is credited to the project's immutable fee collector, which sends 80% to the prize treasury (1.36% of volume) and 20% to the fixed marketing wallet (0.34% of volume).
- · The fee collector has no function to redirect the Pons fee stream, and its split is fixed at deployment.
- · The lottery has no owner or admin; nobody can change payouts or withdraw the prize treasury.
- · Only the current creator-fee recipient can move the Pons fee stream, and the collector has no function that does. Pons' admin (a 2-of-3 multisig) can queue a change for any Pons token, which takes effect only after a 3-day timelock and is visible on-chain until then.
- · After graduation, Pons locks the Uniswap V4 liquidity permanently.