minWeight, a per-(asset, chain) parameter). A vault below its target is underweight; at or above it, overweight.
A settlement is treated as both legs at once: the asset leaving a vault as a withdrawal, the asset entering a vault as a deposit. Rebalancing applies only to pooled assets (one fungible asset spread across vaults); an isolated, single-vault balance has nothing to rebalance and is never charged.
How the rate is computed
Each vault’s weight is its share of the asset’s total balance across all chains. Its target is derived from the configured weights, divided by a buffer so the per-vault minimums sum to less than 100% and can all be satisfied at once:rate runs from 0 (vault stays at or above target) to 2.5% (vault stranded at 0% weight). Applying it:
- Deposit / settlement-in. The receiving vault earns a reward if it is below target. Every other vault the inflow pushes below target is charged a fee — depositing raises the asset’s total, lowering every other vault’s weight. The user pays or receives the net of the two.
- Withdrawal / settlement-out. Only the source vault is scored, and only if it ends below target. Withdrawals never earn a reward.
Worked examples
Three vaults, weights 30 / 10 / 10, buffer 1.2. Targets:Application and timing
- Deposits are charged when the balance is credited. Withdrawals and settlements are computed at request time — and counted in the solvency check — but applied only after the on-chain transaction confirms. A canceled withdrawal is charged nothing.
- Rewards are paid from a protocol fee account and capped at its balance; fees are collected to the same account.
- The rate uses the configured target weights at the moment of the movement, so it shifts as vault balances and pending outflows change.