Callside Docs
Concepts

Interest and the daily charge

Your debit accrues every second through the debit index of your staking tier, then settles once a day, every day, in a fixed charge order. Nothing about the charge is discretionary: the rate, the time and the order are all on chain.

The margin rate

The base margin rate is the fed funds rate plus the desk spread. Today that is 3.50% + 9.00% = 12.50% annually. Both components sit behind bounded, rate-limited setters: each can move by at most a fixed number of basis points per change, with a minimum interval between changes, so the rate can track policy but never lurch. The current values and their bounds are on the Parameters page. A staking discount lowers this rate itself: each staking tier has its own debit index accruing at the base rate minus the tier's discount, and your debit is scaled against the index of your tier. A tier change binds at your next transaction or daily charge, or at once through a permissionless sync, and it reprices accrual only from that moment forward.

The per-second index

Accrual is one number per staking tier, the debit index, advanced by a permissionless poke() that every desk transaction runs first and the keeper runs at least hourly:

index_t = index_(t-1) × (1 + r × dt / 31,536,000)

Growth is simple interest within a poke and compounds across pokes, floored at every step so no account is ever charged more index than elapsed time earns. Your marked debit is then just a multiplication:

debit = principalScaled × index

Because each draw is stored pre-divided by your tier's index at the moment you drew it, accrual needs no per-account writes at all. One poke moves every debit on the desk at once, each tier at its own rate over the same window, and any view can mark your debit to the current second without a transaction. This is what the ticking figure on the margin screen is: your principalScaled times your tier's live index, recomputed client-side every second.

Worked example, spec pinned

One day of interest on a 12,000 debit at the base rate of 12.50% is about $4.11: 12,000 × 0.125 / 365 = 4.1096. The test suites pin this number to the cent, both in the TypeScript mirror and on chain through 24 hourly pokes; a tier 3 staker pays $1.81 on the same debit through its own index.

The daily charge

Accrued interest becomes a cash movement once a day at 00:00 UTC, every day of the year. There is no trading-day test and no calendar in the path: the desk is open continuously, so the charge runs on Saturdays, Sundays and holidays exactly as it runs on a Tuesday, and a day is simply a UTC day. The Realiser charges the book across as many calls as it takes, freezing the index for each, and computes each account's accrual as marked debit less cash principal (so a debit drawn mid-period is charged only its own accrual), and settles it in a fixed order:

OrderSourceHow it settles
1Held USDGPays the interest in cash; leftover USDG then nets against the debit itself
2Treasury tokens (no member listed at launch)Sold in the day's batch, largest positions first within the class
3Crypto and majors (1 listed at launch)Same, after treasury tokens are exhausted
4Stock and ETF tokens (25 listed at launch)Last resort, largest position value first

Sales are netted: every account's slice of a given asset joins one batch per asset per call, executed on the asset's pinned pool (the charge never runs a route, because its batches are sized on chain) against the oracle mark under a per-class slippage budget (0.10% for treasury tokens, 0.30% for crypto, 1.50% for stock and ETF tokens). Fills apply pro rata by each account's share, with per-account parts summing exactly to the batch totals, to the cent. A day charged across several calls sells in clips whose proceeds pool per asset, and every account is applied afterwards at the day's volume-weighted price, so no account's price depends on which call charged it.

When a charge cannot settle

A batch that cannot fill, because the venue reverts or an asset's price is stale, never blocks the day. The affected share capitalises: it stays in the debit, keeps compounding through the index, and the next day's charge retries it. Everyone else settles normally. Because the charge runs every day, a retry is never more than 24 hours away, and cash on an account is netted against the debit every day rather than waiting out a weekend.

Who runs it

Allowlisted keepers may call the charge from 00:00 UTC; after 30 more minutes anyone may. The function is idempotent per UTC day and caller-independent, so a stalled keeper delays settlement by at most that window, and a stranger running it changes nothing about the outcome.

The cash side of every settlement flows to the cash vault, where depositors earn it less the protocol skim. Interest accrual is also part of your debit for every margin test, so a position left alone can drift toward a call on interest alone; see calls and forced sales.