zkBNB
Launch token

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 minHolding of 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, or claimShielded(…, pubKey, blinding) into the shielded pool. Leaves are keccak(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.