Skip to main content

Fee Structure

Olla has two fee mechanisms: a protocol fee on staking rewards and an instant redemption fee on immediate withdrawals. Both are 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)

Instant redemption fee

When users redeem stAztec instantly (bypassing the withdrawal queue), a fee is charged on the gross asset value.

ParameterRange
instantRedemptionFeeBP0 – 2,000 bps (0% – 20%)

How it works

  1. User calls instantRedeem() with their stAztec shares.
  2. Gross assets are calculated at the current exchange rate.
  3. The fee is deducted: netAssets = grossAssets - (grossAssets * feeBP / 10,000).
  4. The user receives netAssets in Aztec tokens.
  5. The fee amount stays in the buffer pool. It is not sent to the treasury.

Because the fee stays in the buffer while the shares are burned, the exchange rate increases slightly. This means the instant redemption fee is effectively distributed to all remaining stAztec holders. It acts as a deterrent against rapid withdrawals that could destabilize the buffer, while rewarding patient stakers.

Queued withdrawals have no fee

Standard queued withdrawals through requestRedeem() and claimRequestById() do not incur any fee. The tradeoff is time: queued withdrawals must 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 instant redemption feeOllaVaultsetInstantRedemptionFeeBP(uint16)
Change treasury addressOllaGovernancesetTreasury(address)