The ball
Capacity, fill level, and what the ball actually is on-chain.
The ball is a USDC balance held by a contract, plus the accounting needed to split it fairly. Everything on the front page — the level rising, the glow at the waterline, the roll — is a reading of that one balance.
Capacity
Capacity is the level at which a roll becomes possible. At launch it is 25,000 USDC. It is not a hard cap: the ball can hold more than capacity if the agent decides to keep waiting. Capacity only marks the point from which rolling is allowed at all.
The fill percentage shown on the site is simply balance / capacity, clamped at 100%.
State
| Field | Meaning |
|---|---|
balance | USDC currently in the ball, including accrued yield. |
capacity | The threshold that arms a roll. |
rollCount | How many rolls have completed since genesis. |
accRewardPerShare | The accumulator every claim is measured against. See claiming. |
lastRollAt | Timestamp of the last roll, used to enforce the cooldown. |
What happens on a roll
A roll is one transaction. It does not loop over holders, and its cost does not grow with the number of them:
- Any USDC parked in the T-bill vault is redeemed back into the ball.
- The total is divided by the current hold-weighted supply and added to
accRewardPerShare. balancegoes to zero,rollCountincrements, and aRolledevent is emitted.
From that instant every holder has a claimable amount. Nobody had to be iterated over, and nobody can be skipped.
Because the credit is applied against hold-weighted supply at the moment of the roll, buying a large position one block before a roll gives you a 1.00× multiplier on it — the smallest weight in the system. There is no advantage to arriving late.