Titan LockerTITAN
All articles

Locking Uniswap V2, V3, and V4 Liquidity: What's Actually Different

Uniswap V2 LP tokens, V3 positions, and V4 positions all lock through Titan Locker but aren't the same asset - here's exactly what differs (fungible token vs. NFT, fee collection, price ranges) and why it matters for which one you're locking.

Published · Last reviewed · Titan Locker

Uniswap V2 liquidity is a fungible ERC-20 LP token, while V3 and V4 liquidity is a non-fungible position (an NFT) - locking each one is mechanically different even though Titan Locker handles all three. A V2 lock holds an ERC-20 balance; a V3/V4 lock holds one specific position NFT and lets the owner keep collecting its trading fees while it's locked. All three are live on Robinhood Chain (chain ID 4663).

The core difference: fungible token vs. NFT

Uniswap V2 liquidity is full-range - every provider in a pool holds an interchangeable share of the same reserves, represented by one ERC-20 LP token per pool. Two people's V2 LP tokens for the same pool are identical and can be locked, transferred, or combined like any other token.

Uniswap V3 and V4 liquidity is concentrated - each position specifies its own price range (a tick lower and upper bound) and fee tier. Two positions in the exact same pool with different ranges represent genuinely different bets and aren't interchangeable, so they can't be fungible ERC-20 tokens. Instead, each position is minted as its own ERC-721 NFT with its own token ID.

Uniswap V2Uniswap V3Uniswap V4
Asset typeFungible ERC-20 LP tokenNon-fungible position (ERC-721)Non-fungible position (ERC-721)
Price rangeFull range onlyCustom tick range per positionCustom tick range per position
Identified byThe LP token's contract addressPosition manager + token IDPosition manager + token ID
Locked asA token balance in the lock contractThe NFT held by the lock contractThe NFT held by the lock contract
Fee collection while lockedFees compound into the LP token automaticallyOwner calls collectFees() on the lock, any timeOwner calls collectFees() on the lock, any time
Native ETH representationWrapped (WETH)Wrapped (WETH)Can be native ETH directly (address(0))
Titan Locker create flow"Token / LP lock" tab"LP Position (V3/V4)" tab"LP Position (V3/V4)" tab

Why V3 and V4 use NFTs instead of a fungible LP token

A fungible token can only represent something every holder owns an identical, interchangeable share of. Once liquidity has a price range attached, that's no longer true - your position between $0.90 and $1.10 is a different financial instrument than someone else's position between $0.50 and $2.00 in the same pool, even though both are 'liquidity in the ETH/TOKEN pool.' An NFT can hold that position-specific data (range, fee tier, accrued fees); a fungible token can't.

Locking a Uniswap V2 LP token

This works exactly like locking any ERC-20: paste the LP token's own contract address into the "Token / LP lock" tab. Titan Locker reads the pair's real token0/token1 symbols directly from the pair contract, so it displays as a real pair label (like WETH / TLPD) rather than the pair contract's own generic symbol.

Locking a Uniswap V3 or V4 position

Open the "LP Position (V3/V4)" tab, pick the protocol version, and enter the position's token ID - or, for V3, pick it from a list of your wallet's actual positions (V3's position manager supports on-chain enumeration). V4 positions can't be listed this way since V4's position manager doesn't support that on-chain lookup, so V4 still needs a token ID entered directly. Either way, the flow shows you the real underlying pair and fee tier before you confirm, and the locked position keeps earning fees you can collect at any time while the principal stays locked.

Common mistakes

  • Trying to lock a V3/V4 position through the plain "Token / LP lock" tab - it needs an ERC-20 address, and a position NFT isn't one. Use the LP Position tab instead.
  • Assuming a V3/V4 lock's "locked amount" is a token balance - it isn't; the locked asset is the position NFT itself, identified by its token ID, not a quantity.
  • Forgetting that V3/V4 fees don't collect themselves - unlike V2 (where fees compound into the LP token automatically), a locked V3/V4 position needs the owner to call collectFees() to actually receive them.
  • Not double-checking the pair and fee tier shown at confirmation - with many positions across many pools and ranges, it's easy to select the wrong token ID by mistake.

Security recommendations

  • Verify the pair label and fee tier shown before confirming a lock, not just the token ID number.
  • For V3/V4, confirm your wallet actually owns the position (Titan Locker checks this before allowing a lock, but verify the token ID is the one you intended).
  • Only lock positions on the position managers Titan Locker has allowlisted - the create flow already restricts you to these, so a position from an unlisted or forked position manager simply won't be lockable, by design.
  • Treat a locked position's certificate page as the source of truth for verification - it reads the pair, fee tier, and owner directly from the chain.

Frequently asked questions

Can I lock a Uniswap V2 LP token and a V3/V4 position the same way?

No. A V2 LP token is a plain ERC-20 and locks through the "Token / LP lock" tab like any token. A V3/V4 position is an NFT and locks through the separate "LP Position (V3/V4)" tab, by token ID.

Why can't I list my Uniswap V4 positions the way I can for V3?

Uniswap V3's position manager supports on-chain enumeration (it implements ERC721Enumerable), so a wallet's positions can be listed directly from the chain. Uniswap V4's position manager does not implement that interface, so there's no on-chain way to list a wallet's V4 positions - you need the token ID, findable in the Uniswap app or on the block explorer.

Do I keep earning fees on a locked V3 or V4 position?

Yes. The owner can call collectFees() on the lock at any time while the position stays locked - locking the position doesn't require giving up its trading fee income.

Is a V3/V4 position lock's 'amount locked' a token quantity?

No. The locked asset is the position NFT itself - there's no fungible quantity to display. The certificate page shows the position's token ID and its underlying pair instead of a token amount.