ARCBALLdocsFollow on X ↗

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:

BoundValueWhy
Minimum fill100% of capacityNo rolling a half-empty ball.
Cooldown24 hoursNo rapid-fire rolls that only pay gas.
Force-roll deadline14 days at capacityIf the ball has been full for two weeks, anyone can trigger the roll permissionlessly. The agent cannot sit on a full ball.
DestinationFixedThe 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.