Skip to main content

Positions

In V3, each liquidity position is represented by a non-fungible token (ERC-721 NFT). Unlike V2’s fungible LP tokens, each V3 position is unique because it encodes a specific price range and liquidity amount.

Position Properties

Each position NFT stores:
PropertyDescription
token0Address of the lower-sorted token
token1Address of the higher-sorted token
feePool fee tier (100, 500, 3000, or 10000)
tickLowerLower bound of the price range
tickUpperUpper bound of the price range
liquidityAmount of liquidity provided

Position Lifecycle

1. Mint (Create)

Create a new position by calling the Position Manager with:
  • Token pair and fee tier (identifies the pool)
  • Tick range (tickLower, tickUpper)
  • Desired token amounts
The Position Manager mints an NFT and returns the tokenId.

2. Increase Liquidity

Add more liquidity to an existing position without changing the range. The additional tokens must match the current price ratio within your range.

3. Decrease Liquidity

Remove some or all liquidity from a position. This converts liquidity back to tokens, which are held by the Position Manager until collected.

4. Collect Fees

Claim accumulated trading fees. Fees accrue in the exact tokens of the pool and must be explicitly collected — they do not auto-compound like V2.

5. Burn

After removing all liquidity and collecting all fees, the NFT can be burned. This is optional — an empty position NFT has no economic value.

Position States

A position can be in one of three states depending on the current pool price:
StateConditionCompositionEarning Fees?
In rangetickLower < currentTick < tickUpperMix of token0 and token1Yes
Above rangecurrentTick ≥ tickUpper100% token0No
Below rangecurrentTick ≤ tickLower100% token1No

Fee Calculation

Fees earned by a position are proportional to:
  1. Liquidity share — The position’s liquidity relative to the total active liquidity at each tick
  2. Time in range — Fees only accrue when the position is in range
  3. Trading volume — More trades through the position’s range means more fees
Fees earnedLpositionLtotal at tick×Volume through ticks\text{Fees earned} \propto \frac{L_{\text{position}}}{L_{\text{total at tick}}} \times \text{Volume through ticks}

Key Differences from V2

V2 LP TokenV3 Position NFT
Token standardERC-20ERC-721
FungibleYesNo
Price rangeFull range (implicit)Custom range (explicit)
Fee collectionAuto-compoundedManual claim
ComposabilityEasy (fungible, transferable)Possible but more complex