Skip to content

Providing liquidity

Liquidity on Ekubo lives in one Core contract, but the shape it takes is configurable. A pool’s type, its fee, and its extension are all part of its identity, chosen when the pool is created.

For the step-by-step version in the app, see Add liquidity.

Type Liquidity shape Suits
Concentrated Provider-chosen price range, with tick spacing controlling how narrow ranges can be Most pairs; precise control over where capital sits
Stableswap Concentrated around a configurable center price, with an amplification factor Correlated assets that trade near a fixed ratio
Full range The entire price range Long-tail pairs and the simplest possible position

All three settle in the same Core contract and are quoted and routed together, so choosing one does not fragment your liquidity away from the others.

Ekubo’s ticks are 1/100th of a basis point — 100x finer than most concentrated-liquidity AMMs — so a range can be drawn exactly where you want it. See Pool math for how positions and prices are represented.

The pool fee is what swappers pay to trade against your liquidity, and it is chosen when the pool is created rather than from a fixed set of tiers. A protocol fee is applied to the swap fees you collect (10% on EVM, 20% on Starknet, both applied by the Positions contract) and funds the DAO through revenue buybacks. The canonical Positions deployment charges no fee on your principal when you withdraw — the contract supports a withdrawal fee, but it is configured to zero.

Because any licensee can deploy their own Positions contract with its own fee settings, always check the deployment you are actually using.

Core itself charges nothing — see Protocol architecture.

Extensions attach behavior to a pool without moving liquidity out of Core:

  • TWAMM — pools that back DCA orders. Providing liquidity here earns fees from order flow that executes against the pool when buy and sell orders are imbalanced, in addition to ordinary swap volume.
  • MEV capture — charges extra on price-moving swaps and returns that value to LPs instead of searchers.
  • Boosted fees — lets anyone fund additional fee rewards for a pool’s LPs, on top of swap fees. Used for targeted liquidity campaigns.
  • Ve33 — replaces swap-fee income with emissions of a stake token, with voters directing where those emissions go and setting each pool’s fee. LPs earn emissions; voters earn the swap fees.
  • Oracle — records price history for a token against native ETH on EVM (a configured quote token on Starknet). Oracle pools are full-range and fee-free by design.

A liquidity position is an ERC-721 token minted by the Positions contract, so it can be held, transferred, or used as collateral like any other NFT. Its tokenURI resolves to the Ekubo API, which serves the position’s metadata and a rendered SVG image.

Liquidity can also earn from incentive campaigns, which measure the depth your position provides near the market price and distribute reward tokens through periodic drops.

Providing liquidity is not a yield product. A position earns fees from the volume that trades against it, and simultaneously accrues divergence loss as the price moves — ending up holding more of whichever asset fell in relative value. Narrowing a range concentrates both effects at once: more fees per dollar while the price is in range, and faster conversion into the losing asset when it moves. Whether a position is profitable depends on the volume it captures relative to that divergence, which is a property of the market, not of the protocol.