Skip to content

Tickets and the holder table

How the program weighs each holder, who gets into the 1,024-entry table, and how the website draws tickets.

A token account’s tickets for a round are the lowest counted balance it held from the start of the round to the swap that closes it. The counted balance is the account’s balance if it is at least 10,000,000 tokens, and zero otherwise.

  • A buy during a round joins the next round. A new holder has zero tickets in the round they arrive. A top-up adds nothing until the next round starts.
  • A sell cuts your weight at once. Your tickets for the round drop to the new balance. Buying back in the same round does not restore them.
  • Sending tokens counts as selling for the sender. The receiver’s new tokens count from the next round.
  • Dropping under the minimum at any moment gives zero for that round.
  • To count in a round, you hold from its start to its close.

An example, with one token account across two rounds:

What happens Balance Tickets this round
Round 12 opens 50M 50M
Buys 30M 80M 50M
Sells 60M 20M 20M
Buys 100M 120M 20M
Round 12 closes 120M 20M, frozen for the draw
Round 13 opens 120M 120M, if nothing is sold

This is why a buy just before a draw wins nothing. In testing, a $20,000 buy whose own swap closed the round got zero tickets for that draw.

It is also why splitting doesn’t help. Tickets in several accounts add up to the same total, and each prize is a separate weighted pick. Your expected share of the prizes equals your share of the tickets, however you split.

The table records token accounts, not wallets. A wallet with two token accounts of $777 has two entries, each with its own balance. Most wallets use a single associated token account. Keying by token account prevents double counting. The owner of a token account that isn’t an associated token account can be changed without a transfer, so entries keyed by wallet could count the same tokens twice.

Only token accounts whose owner is a regular wallet, a key on the ed25519 curve. Accounts owned by program addresses never get an entry. That covers the curve’s vaults, the pot, lockers and multisig vaults, so a treasury held in a multisig can’t win.

10,000,000 tokens, 0.001% of the 1 trillion supply.

  • Under it, an account counts as zero, and a newcomer doesn’t get an entry.
  • An entry already in the table that drops under the minimum stays there at zero. It is the first in its window to go when a newcomer needs the slot.
  • One account at a fixed address: the PDA ["table"] of raffle-hook, 92,624 bytes. It holds a 6,608-byte status block, then 1,024 entries, then the trees that keep the ticket totals.
  • Each entry is a token account, its counted balance, its lowest balance this round, and the round it was last touched.
  • Each token account has a home slot taken from the first bytes of its address. It can sit in any of the 16 slots starting there.
  • The hook records both sides of every transfer, skipping the curve’s own vaults. Nothing in it can make a transfer fail.
  • If all 16 slots a newcomer can use are taken, it replaces the smallest entry there, if its own counted balance is larger. Otherwise it is skipped.
  • The comparison uses counted balances at that moment, not tickets.
  • No entry is replaced while a draw is pending, between a round’s close and its reveal. A newcomer who would need to replace someone is skipped during that time.
  • A full table settles near 97% occupancy (986 of 1,024 in testing), because a few slots sit outside every newcomer’s 16-slot window.
  • An evicted or skipped holder keeps their tokens. They hold no tickets until they get back in.

So when the table is full, the smallest holders can be left out. To push someone out, you have to hold more than they do.

Anyone can call sync with any token accounts of the mint. It applies each account’s real balance by the same rules as a transfer, without counting a swap.

  • Use it to enroll an account that was skipped or evicted, once there is room in its window or its balance beats the smallest entry there.
  • Any later transfer to or from the account tries the same thing.
  • Like any newcomer, an account enrolled by sync starts with zero tickets for the current round and counts from the next one.

The website shows holdings as paper tickets in a drum. That is a picture of the table, rounded for display:

  • 1 paper ticket per 0.1% of supply, 1,000,000,000 tokens, rounded down.
  • A gold ticket stands for 10, that is 1% of supply.
  • Every table holder at or above the minimum shows at least one ticket.
  • Tickets that count in the current round carry a seal. Tokens bought during the round show as pending tickets that join the next round.

Pot Draw runs on public programs on Solana. Addresses are published at launch. Nothing here is financial advice or a promise of returns.