What a round leaves behind
At every round the engine writes one file. It lists the pot, the forfeit pot, and for every wallet its balance, the time it has held since, its multiplier, its weight, the amount sent at once, the amount credited to its vault and when that credit unlocks. It also states how much of the pot came from creator fees, how much from the treasury (with the swap transaction) and how much from forfeits. The file for round 1 is at /rounds/1.json.
The engine then takes the SHA-256 hash of that file and writes it into the memo of every payout transaction for the round. A memo is a short public note attached to a Solana transaction. Once the transaction is confirmed, the hash is on chain for good, which means the file cannot be edited later without the mismatch being visible to anyone who looks.
Each file also carries the hash of the round before it, so the rounds form a chain and none can be quietly removed.
Check a round by hand
- Open a round on the rounds page and download its file.
- Hash the file. On macOS or Linux:
shasum -a 256 payoutholders-round-1.json - Open any of the round's transactions on Solscan and read the memo. It ends with the same hash.
- Find your wallet in the file. The amount next to it is the amount in the transaction.
Check a round with the script
The verifier is a single file with no dependencies. It needs Node 18 or newer. It downloads the round file, hashes it, recomputes every weight, cut, vault credit and payout from the rules, then reads each payout transaction from Solana and confirms that the memo carries the hash and that every wallet received exactly the amount in the file, once.
curl -O https://payoutholders.xyz/verify-round.mjs
node verify-round.mjs 1By default it reads the chain through the public Solana RPC. To use your own node, add --rpc https://your-rpc-url. It exits with an error and lists every difference if anything does not match. Download verify-round.mjs and read it first if you like: it is about two hundred lines.
What this does and does not prove
It proves that the amounts follow from the balances and holding times in the file, that the file has not changed since the payouts were sent, and that the payouts on chain match it. Balances at the moment of a past snapshot can be checked against the token's transfer history on any explorer. Holding times come from that same history: a wallet's clock starts when it first holds the minimum and restarts on any sale or outgoing transfer.