SOMETHING FOR NOTHING

everyone wants something for nothing. so we built the machine that gives it to them — every 30 minutes, one wallet gets paid.

BUY $SFN X / TWITTER TELEGRAM PROVABLY FAIR
Article I — you hold, you get paid

HOLD THE BAG.

THE VAULT PICKS ONE.

ONE WALLET GETS PAID.

$SFN is a memecoin on Robinhood Chain with an automatic lottery built in. Every 30 minutes a bot snapshots every holder, hands out tickets in proportion to how much you hold, and draws one winner — who is paid ETH straight to their wallet. More $SFN = more tickets = better odds. You must be holding to be entered; sell your bag and you’re out of the draw. Every winner is picked from a public block-hash seed, so anyone can verify the draw wasn’t rigged. That’s the whole game: hold the token, stay in, win the pot.

Article I.i — the machine, warming up
Form 0001 · Draw Receipt$SFN
next draw in
--:--:--
pot: 0.00 ETH
> hold 1,000 $SFN to be entered — more tokens = more tickets = higher odds
round -- eligible holders: -- commit block: --
– – – detach along this line · the chain keeps it anyway – – –
Article II — how the vault works

EVERY TICKET IS A BALANCE.

MORE $SFN = MORE TICKETS.

A ROBOT PICKS ONE. IT DOES NOT SLEEP.

(that is the whole business model. it fits on a receipt.)

Form 0002 · Winners Ledgeraudited by nobody · verified by everybody
round winner wallet won transaction snapshot verify
tx links resolve on the Robinhood Chain explorer. seed = block hash of the committed block. recompute any draw below ↓
Article III — verify a draw
Form 0003 · The Verifiertrust nothing

Pick a round. Your browser recomputes the winner from the published seed — nothing trusted, the math runs locally. The output links the seed’s source block and the snapshot file so you can check them independently.



    
verify your own copy (paste JSON)

Don’t trust our data? Paste a round’s snapshot JSON (the round-N.json file — it contains the seed, totalTickets, entries and winner). Or paste {"seed":"0x…","totalTickets":123} for just the ticket math.


      
rebuild the snapshot yourself (maximum paranoia)

The snapshot still comes from us. To trust nothing, rebuild the holder→ticket map from public chain data and confirm it matches the published round-N.json. The rules are fixed and public — same inputs, same ranges:

  1. Fetch every holder + balance from Blockscout:
    GET https://api.blockscout.com/4663/api/v2/tokens/<TOKEN>/holders (paginate via next_page_params). For an exact match, read balances as of the round’s snapshotBlock — call balanceOf(holder) at that block over RPC. Blockscout returns latest balances, which match if you check right after the round.
  2. Drop every address in the snapshot’s excludedAddresses (LP, router, prize wallet, burn, zero).
  3. Drop anyone below minBalanceToQualify.
  4. Sort the rest by address ascending (lowercase).
  5. Tickets per holder = floor(balance / 10^decimals) × ticketsPerToken.
  6. Assign contiguous cumulative ranges from 0 in that sorted order.

Your totalTickets and every ticketStart/ticketEnd must equal the published snapshot. If they do, the ticket ranges weren’t rigged — and the verifier above already proves the seed picks the published winner from those ranges. (This is exactly what the bot’s tickets.ts does; the code is in the repo.)

fine print — how it works (nobody reads this)

Tickets. Every holder gets tickets proportional to their $SFN balance — more tokens, more tickets, higher odds. A minimum balance excludes dust; LP, router, prize wallet and burn addresses are excluded. The full holder→ticket map is frozen in a snapshot each round.

Seed. Before the snapshot block is even mined, the bot publishes which future block will be used (the commit block). Once mined, that block’s hash becomes the seed — a public, unpredictable value nobody could pre-compute or cherry-pick. You don’t have to trust our published seed: look up the commit block on the Blockscout explorer and read its hash yourself.

Draw. Winner = deterministic function of seed and snapshot: winningTicket = seed mod totalTickets, then walk the cumulative ticket ranges — the wallet owning that ticket wins. (If that winner had dumped by payout time, the next candidate is keccak(seed, n) mod totalTickets — also recomputable.)

Off-chain by design. Nothing on-chain except reading balances and sending the prize. The 5% token fee is handled by a separate app and is unrelated to this lottery.