vaultsDocumentation

Fees

Implemented

What is charged, what is not, and the high-water mark that stops the same gain being charged twice.

What is charged, what is not, and the high-water mark.

#What is not charged

  • No deposit fee.
  • No withdrawal fee, on either exit path.
  • No fee on the in-kind exit, which must stay unconditional.

#What can be charged

The FeeController holds fee policy only. It has no custody: it cannot hold, move, or claim vault assets. It answers a question the vault asks, and the vault does the accounting.

FeeBasis
Performance feeCharged on gains above the high-water mark
Keeper bountyCapped, paid for calling sync

#The high-water mark

Each vault records a high-water mark. A performance fee applies only to NAV above it.

If a vault rises, falls and rises again, the recovery is not charged a second time — the same gain cannot be charged twice. That is the entire purpose of the mark.

#The keeper bounty

A keeper pays gas to call sync and may earn a bounty for doing so. The bounty is bounded by two immutable values set at deployment: a basis-point rate and an absolute maximum.

Security. A keeper key controls no user funds. It pays gas and may earn a capped bounty. It cannot redirect vault assets, choose what is traded, or choose where proceeds go — the order struct has no recipient field, and the recipient is forced to the calling vault.

The bounty exists so that syncing is worth someone's gas, which is what makes the keeper role permissionless rather than a privileged position that has to be trusted to show up.

#Ceilings

Fee parameters, like every other parameter, sit under hard constants in the registry that no role can raise. The role that sets a vault's fee cannot set it above the ceiling, and cannot change the ceiling.