Fees and staking

Understand Pool v24 trading fees, fee destinations, and staking discounts.

This page describes the Pool v24 fee model, the current committed protocol baseline. Older v22 and v23 deployments use different fee paths.

When fees are charged

A v24 pool charges a protocol fee when you open, close, or reduce a price position, and on direct liquidation.

ActionFee baseMarginal Xi adjustment
Open or mergeRequested gross collateralBalancing discount and an open-only worsening surcharge
Close or reduce leverageCanonical gross payoutBalancing discount, never a surcharge
LiquidationCanonical gross entitlementNo marginal adjustment

A negative close has no positive payout, so it charges no close fee.

Fee calculation

Each pool configures a base fee rate, optional Marginal Xi rates, and a maximum total rate:

final fee = min(
  discounted base fee - balancing discount + open-only worsening surcharge,
  protocol fee cap
)
  • The staking discount applies only to the base fee.
  • The balancing discount applies to the balancing slice of the already-discounted base fee.
  • The worsening surcharge is computed from the worsening slice of an open and is not reduced by either discount.
  • The base fee rate, worsening surcharge rate, and total cap are each bounded by 5%. The balancing discount rate is bounded by 100%.
  • The total cap cannot be lower than the base fee rate, so it can only truncate the surcharge.

When a pool enables the Marginal Xi model, it classifies each action's notional against one canonical checkpoint as balancing, worsening, or neutral. If the exact risk transition cannot be proven, the action is treated conservatively as worsening. This can remove a balancing discount but cannot add a surcharge to a close.

Your maxProtocolFee guard

Guarded opens, closes, and leverage reductions accept maxProtocolFee, an absolute amount of the collateral token. If the final fee exceeds your value, the action reverts with ProtocolFeeExceedsUserMaximum. It does not clamp the fee. A zero value means you accept no protocol fee.

The guard covers only the protocol trading fee, not keeper payments, liquidation incentives, oracle update costs, or gas. Permissionless liquidation provides no user fee cap.

Where fees go

Each collected fee decomposes into five parts, subject to configuration and eligibility:

DestinationConditionPath
LP shareFee-sharing weight existsCredited to the pool LP fee reserve in collateral
Creator shareActive, eligible creator recipient configuredBooked externally, paid by flush
Referral shareValid referral binding for the tradeBooked externally, paid by flush
Bounty reserveAlways configuredHeld in the pool bounty reserve
TreasuryAlwaysBooked externally, paid by flush

Configuration bounds each share rate, requires the distributed rates to leave at least a 10% minimum treasury share, and defines no universal default split. The external shares are recorded at trade time and moved by a permissionless flush that is rejected during EmergencyPause. A misconfigured recipient makes the booking fail closed instead of silently rerouting.

The Safety Reserve is not part of this fee flow. When governance withdraws an approved Safety surplus, only the amount above the configured floor can move, and it goes to the pool's fixed treasury. It is not LP income.

vTACO discounts

If a pool configures a discount module, the staking discount on the base fee depends on the trader's virtual vTACO balance. vTACO is a time-decaying staking score, not an ERC20 token.

The default FeeDiscountModuleV24 tiers are:

vTACO heldFee discount
10,0005%
25,00010%
50,00015%
100,00020%
250,00025%
500,00030%
1,000,00035%
2,500,00040%
5,000,00050%

These are defaults. The module owner can replace the tiers, bounded by a 90% per-tier cap, and each pool separately caps the discount it applies. A module that is unavailable or returns an invalid rate does not block the trade: the pool charges the undiscounted base fee.

Staking flow

  1. Stake TACO in the staking contract.
  2. Lock it for a chosen period.
  3. The remaining lock time determines the vTACO balance.
  4. Use that balance to reduce the base fee through the discount module.

Locked TACO cannot be withdrawn until the lock expires, and the vTACO balance decays as the remaining lock time decreases. Pausing new staking does not freeze existing stakes: locks keep their maturities, and matured stakes remain withdrawable.

LP rewards

Opt-in fee-sharing liquidity earns the LP fee share from trading fees. Every liquidity lot also accrues trader-paid Funding, which is claimed separately. Neither flow removes trading risk, LP risk, or smart contract risk. See Price market liquidity and Rewards and fees.

On this page