Roll logic
The agent that decides when to roll, and the bounds it works inside.
A fixed schedule is easy to game. If rolls happen every Friday, the obvious move is to buy on Thursday and sell on Saturday, and the payout drains toward people who were never holding in the first place.
So ARCBALL does not roll on a timer. An agent watches the ball and the market around it and picks a moment that is hard to predict and good for the people already holding.
What the agent reads
- Fill level. Below capacity, a roll is not possible at all.
- Inflow rate, and whether it is accelerating. A ball that is still filling quickly is usually worth letting fill.
- 24h volume and realised volatility. These set how much more fee income is plausibly still coming.
- Gas, in USDC. A roll during a gas spike burns payout for no reason.
- Holder count and hold-weight distribution. Rolling when weight is concentrated in very fresh positions serves the wrong people.
The bounds it works inside
The agent has judgement, but not freedom. The contract constrains it, and these limits hold no matter what the agent asks for:
| Bound | Value | Why |
|---|---|---|
| Minimum fill | 100% of capacity | No rolling a half-empty ball. |
| Cooldown | 24 hours | No rapid-fire rolls that only pay gas. |
| Force-roll deadline | 14 days at capacity | If the ball has been full for two weeks, anyone can trigger the roll permissionlessly. The agent cannot sit on a full ball. |
| Destination | Fixed | The agent can only choose when. It has no ability to change who gets paid or how much. |
The agent cannot take the money. Its only privilege is calling roll() once the contract's own conditions are already satisfied. A compromised agent key can make rolls happen at bad moments within those bounds; it cannot redirect a single dollar, and the force-roll deadline caps how long it can stall.
Transparency
Every decision the agent makes — including the decision to wait — is published to its log with the inputs that produced it. The panel on the home page is a view of that trail. When a roll happens, the log entry and the on-chain Rolled event can be checked against each other.
If the agent goes away
Nothing is stranded. The force-roll deadline means any address can roll a ball that has been full for fourteen days, so the protocol keeps paying even if the agent is never heard from again. Claims are pull-based and do not depend on the agent at all.