Paper holders receive two flows: 50 % of every fee charged, win and loss fees alike, and 100 % of the excess swept from the house above the $75,000 reserve cap.
The accumulator
if total_paper == 0: unallocated += x paid out with the next distributionotherwise: acc_per_paper += x × SCALE / total_paper SCALE = 1e24
Your share is read from the accumulator, so a distribution costs the same whether there are ten holders or ten thousand. Before paper is minted to you, the program settles what you have earned so far:
rewards_owed += paper × acc_per_paper / SCALE − reward_debtpaper += mintedreward_debt = paper × acc_per_paper / SCALE
Claiming
claim_rewards() moves rewards_owed and anything pending into your available balance, where you can trade with it or withdraw it. Only your wallet can claim; a session key cannot.
An example
Total paper outstanding is 100,000 and a $10 fee is charged. $5 goes to paper holders, so acc_per_paper rises by $0.00005 per paper. A holder of 1,960 paper has earned $0.098.
Rounding
acc_per_paper is a u128 scaled by 1e24, and every division rounds down. The dust left by rounding stays in the vault, in the protocol's favour, and amounts to less than one base unit per holder each time rewards are settled.