Skip to main content

Uniswap Protocol Fees

Fees from protocol versions (v2, v3, v4, UniswapX, Unichain) flow into a single onchain collector on each network. From there, specialized contracts handle how those assets are released or transformed (for example, burning UNI).

Flow of Assets

  1. Fee Sources
    Each protocol component that generates fees (v2, v3, v4, UniswapX, Unichain, and others) routes those fees through an associated Fee Adapter contract. Adapters define how and when fees are collected and send them to the TokenJar on the same chain.

  2. TokenJar
    Each chain has one immutable contract called the TokenJar. All fee sources send tokens here. It’s the unified collection point for raw tokens.

  3. Releasers
    Releasers define how tokens in the TokenJar are accessed. The simplest version burns UNI in exchange for the collected tokens. Other Releasers could handle cross-chain conversions or alternative value flows.

  4. Governance Control
    Governance can update which Releaser a Sink uses or adjust configuration on Fee Controllers, but the core contracts themselves are immutable.

Components

TokenJar

Immutable contract that receives all tokens from fee sources on a given chain. Only the active Releaser can withdraw from it.

See TokenJar for more.

Fee Adapters

Adapters that connect specific protocol versions or products to the TokenJar. They define how and when fees are collected.

See Fee Adapters.

Releasers

Contracts that convert collected fees into protocol value according to defined logic.
Examples include the Firepit Releaser, which burns UNI in return for assets.

See Releasers.

Real-World Example

  • Assume 100 UNI is the threshold amount for the Firepit Releaser.
  • When the top N assets in the TokenJar are worth slightly more than 100 UNI, anyone is incentivized to use the Firepit.release() contract to:
    1. Burn 100 UNI
    2. Withdraw the top N assets, valued at slightly more than 100 UNI