Skip to main content

Fee Structure

Olla charges a protocol fee on staking rewards. It is configurable by governance through the timelock.

Protocol fee

The protocol fee is a percentage of gross staking rewards, charged during each accounting update. It compensates the protocol treasury and the staking provider for operating infrastructure.

ParameterRangeDefault setter
protocolFeeBP0 – 5,000 bps (0% – 50%)OllaGovernance.setProtocolFeeBP()

How it works

  1. During updateAccounting(), the protocol calculates gross rewards earned since the last report.
  2. The protocol fee is applied: feeAssets = grossRewards * protocolFeeBP / 10,000.
  3. The fee is converted to stAztec shares and minted. This dilutes existing holders proportionally, which is equivalent to taking a cut of the rewards.

Treasury / provider split

The minted fee shares are split between two recipients:

ParameterRangeEffect
treasuryFeeSplitBP1,000 – 9,000 bps (10% – 90%)Portion of fee shares sent to treasury
treasury shares = fee shares * treasuryFeeSplitBP / 10,000
provider shares = fee shares - treasury shares
  • Treasury: The protocol's governance-controlled treasury address, set via OllaGovernance.setTreasury().
  • Provider: The staking provider's rewards recipient address, configured in the StakingProviderRegistry.

Example

With a 10% protocol fee and a 50/50 treasury split:

  • Gross rewards in a cycle: 100 AZTEC
  • Protocol fee: 10 AZTEC (minted as stAztec shares)
  • Treasury receives: 5 AZTEC worth of stAztec
  • Provider receives: 5 AZTEC worth of stAztec
  • Stakers receive: 90 AZTEC (reflected in exchange rate increase)

Withdrawals have no fee

Withdrawals through requestRedeem() and claimRequestById() do not incur any fee. Queued withdrawals wait for the next rebalance cycle to be finalized.

Fee flow diagram

Governance controls

All fee parameters are changed through the governance timelock:

ActionContractGovernance function
Change protocol feeOllaCoresetProtocolFeeBP(uint16)
Change treasury splitOllaCoresetTreasuryFeeSplitBP(uint16)
Change treasury addressOllaGovernancesetTreasury(address)