Holder rewards.
When a deployer chooses Holders, the 0.80% builds up in HolderRewards.pot[coin]. The keeper, an off-chain process, watches the pot. Once it holds at least minPot (0.05 BNB by default) and at least one hour has passed since the last run, the keeper waits a random 0 to 60 minutes, snapshots holder balances from Transfer logs, builds a Merkle tree and calls postRun(coin, root, amount, holders, uri). The uri points to the published snapshot JSON listing every leaf and proof.
Who gets paid
- Every wallet holding at least
minHoldingof the coin, worth about $20 at the time of the snapshot, is paid in proportion to its balance. - The PancakeSwap pair, the Launchpad, Roots, the dead address and zkBNB's own wallets are excluded.
- The random delay means nobody knows the exact snapshot time in advance, which makes buying just before a snapshot and selling right after less useful.
Claiming
- Claim with
claim(coin, runId, amount, proof)to your wallet, orclaimShielded(…, pubKey, blinding)into the shielded pool. Leaves arekeccak(abi.encode(coin, runId, account, amount)). - After the claim window (30 days by default), anyone can call
sweepExpired, and the unclaimed remainder goes back into the coin's pot for the next run. - Anyone can top up a coin's pot with
tip(coin).
What to trust
The allocation is computed by the keeper. Only the Merkle root is on-chain. Every snapshot is published and linked from Rings, so anyone can recompute it and check that it follows the published rule.