Mintvelocity

Launches

Holder rewards

A share of each trade, paid to holders in SOL, sent to their wallets automatically and claimable any time. The kit does it with the 64 bytes and one number per token.

The accounting

The launch pool’s hook pays the holder fee into the reward vault: lamports on KitConfig for a native kit, a holding of bridged SOL for an older one. KitConfig keeps acc_per_share, the lamports earned so far per eligible base unit (scaled by 1012); each holder’s 64 bytes keep a snapshot of it and what it is owed. Every callback syncs first, then settles each holder it touches at its balance before the operation.

Below min_eligible (a thousandth of the supply held) nothing is divided: what arrives waits in held, and the pool hook takes no holder fee. The division keeps its remainder, so nothing is paid twice and nothing is lost.

Claims

claim_sol syncs, settles the holder and pays min(owed, reward vault) to its wallet in SOL (claim, on a kit that is not native, to its bridged-SOL holding). It writes bytes 0 to 23 through write_hook_data and keeps 24 to 63 as read, so a claim never unlocks an early buyer. A wallet that sold everything keeps what it earned until it is paid. The site claims up to about four tokens in one transaction.

claim_sol_for is the same claim sent by anyone for a holder: the sender signs and pays the fee, and the SOL goes to the holding’s owner only. The keeper sends it about every 15 minutes for every holder owed 0.001 SOL or more, so holder rewards reach wallets without a claim; a holder can still claim any time, smaller amounts included.

Share with holders

share_sol(amount) lets anyone send SOL to every holder, pro rata (share, bridged SOL, on a kit that is not native). It streams over 3,600 seconds, so buying just before a share and selling after it gains nothing. While nobody is eligible the stream pauses, and resumes with the same time left.

Why the vault always covers it

After every instruction the reward vault holds at least what every holder could claim, plus what is held, plus what is still streaming, because: eligible is the sum of the balances that will be settled - every balance change passes through a kit callback, minting is impossible, and excluded owners never claim; every balance change of a holder is settled first, at the balance before it; every rounding favours the vault - the division, owed and stream releases all floor; shared lamports count as seen when they arrive and reach holders only as they are released.

The off-chain mirror

What the site shows as claimable is a pure function of three accounts (KitConfig, the reward vault, the holding), read in one call:

released  = what the stream releases by now
claimable = 0 for the pool and the launch,
          else owed + balance * (acc - snapshot) / SCALE  // floors
a claim pays min(claimable, vault.amount)