1. Get the draw details
Fetch the coin’s events and find the jackpot:meta object:
2. Check the seed
The seed is:n is the number of jackpots this coin had paid before this one, starting at 0.
3. Rebuild the snapshot
Using an archival RPC or indexer, list every token account for the coin as of the draw’sslot and total balances by owner. Then remove:
- owners that are not on the ed25519 curve (program-owned accounts),
- the bonding curve, the PumpSwap pool and pool authority for the coin,
- the coin’s fee vault and any excluded wallets from its settings.
<owner>:<amount>, with amounts in base units, separated by \n. The SHA-256 of that text must equal snapshotHash.
4. Re-run the draw
Rebuild the previous cycle’s snapshot the same way, as ofpreviousSnapshotAt in the payout’s metadata. Count each holder at the lower of its two balances (a wallet missing from the previous snapshot counts as 0), keep those with at least the coin’s minimum holding, and sort again: largest first, ties by address. If the payout’s diamondHands is true, multiply each holder’s weight by its hold multiplier (Diamond hands). If entrants is buyers, the entrants are instead every wallet that bought since buysSince and held the minimum at the draw, weighted by total buy amount, largest first. Then: