> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lunya.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Pools & Fees

> The three pool types and how fees are set on the Lunya exchange

## One pool per pair, per type

Creating a pool takes only the two tokens and the pool type — nothing else. There are **no fee tiers**: for each pair and type there is exactly one canonical pool, so liquidity never fragments across parallel fee variants of the same market. Tick spacing and fee come from governance-set defaults per pool type, and can be calibrated per pool afterwards.

## Pool types

### Concentrated Liquidity (CL)

Uniswap V3-style pools: each position concentrates capital inside a chosen price range.

* **Higher capital efficiency** — the same capital earns more fees while the price trades inside your range
* **Active management** — positions out of range stop earning until re-ranged
* **Custom ranges** — every position picks its own bounds

### Constant Product (CP)

The classic full-range `x·y=k` curve. Under the hood a CP pool is the same contract as CL with every position pinned to the full range — you get the simplicity of always-in-range liquidity with the same interface, events, and plugin support.

* **Always in range** — no re-positioning, ever
* **Simple LPing** — deposit both assets, hold a share of the pool
* **Launchpad graduations** — completed bonding curves [graduate](/launch/graduation) into CP pools

### STABLE

A separate pool contract carrying an **amplified StableSwap curve**, designed for pairs that trade near parity (stablecoin pairs, wrapped/native pairs):

* **Amplified pricing** — near the peg, slippage is a small fraction of what constant product would charge for the same trade
* **Tickless** — every position spans the whole curve; a swap resolves in one step
* **Decimal-normalized** — tokens with different decimals (e.g. USDC/DAI) are normalized internally so the amplified region sits exactly at par

## Who can create pools

Pool creation is controlled **per pool type** — each type can be open to anyone or restricted to a governance-granted role, because the risks differ per type:

* **CL — open.** Anyone can list any pair; a concentrated pool makes no assumption its creator could abuse.
* **CP — restricted.** CP pools are opened by [launchpad graduations](/launch/graduation) through a role granted to the launchpad. The reason is front-running: a pool's fee and plugin are fixed from its creator, and a graduation refuses a pool that already exists — so an open CP type would let anyone open a launch's pool ahead of the launchpad and set its permanent market terms.
* **STABLE — restricted.** The amplified curve assumes its pair trades near parity; listed against an unpegged pair it would quote both tokens at par and hand the difference to arbitrageurs at LPs' expense.

Restrictions are roles, not single addresses: governance can admit as many creators per type as it grants, and open or close a type as the platform evolves.

## Providing liquidity in practice

* **CL demands attention** — a position outside its range holds a single asset and earns nothing until the price returns or you re-range. Tighter ranges earn more per unit of capital and go out of range sooner.
* **Impermanent loss is real on every curve** — providing liquidity underperforms holding when the price moves significantly, and concentrated ranges amplify both fee income and this effect.
* **Passive routes exist** — [Liquidity Vaults](/exchange/vaults) manage CL ranges for you, and pools with active [farming programmes](/exchange/farming) pay rewards on top of trading fees.

## How fees work

**The fee lives in the pool, and can be dynamic.** Each pool stores its current fee, readable at any time without touching the plugin. When a pool's plugin has the dynamic-fee capability enabled, it can adjust that fee — the [Dynamic Fee module](/exchange/plugins#dynamic-fees) raises it with measured volatility and lowers it when the market calms. A plugin attached for other purposes (farming, security) gets notified of pool events without gaining any say over what traders pay.

**Fees are set by governance, not by pool creators.** Defaults are per pool type; per-pool calibration is a governance action. This prevents anyone from squatting the canonical pool for a pair with an absurd configuration.

## Where fees go

Every trading fee is divided between **the liquidity providers of the pool** and **the protocol**. The protocol share is bounded by design to at most half of the fee; the rest — the larger side — stays with LPs.

The protocol share is the revenue that will feed the [Earn layer](/earn/overview) when it ships: stakers paid from real trading activity, in the assets the fees were collected in.
