Protocol Uniswap V3

Protocol

Uniswap V3.

Ladders built from NonfungiblePositionManager positions, one NFT per funded bin.

On V3, each bin is a standard Uniswap V3 position minted through the NonfungiblePositionManager and held by ObolLadderManager.

Ladder manager
0x0EA3…eAED
NonfungiblePositionManager
0x7399…E0D3
Positions per ladder
One NFT per funded bin (empty bins are not minted)
Tokens
ERC-20 only (ETH is wrapped to WETH by the app)

Opening on V3

  1. Canonical pool check

    The manager reads token0, token1 and fee from the pool and requires factory.getPool(token0, token1, fee) == pool. The position manager mints into that canonical pool, so forks and look-alike pools (PancakeSwap, Sushi…) are rejected.

  2. Price guard

    slot0().tick must be within [minTick, maxTick].

  3. Mint the bins

    For every bin with non-zero liquidity, mint() is called with that bin's token budget. The manager then clears its allowances and refunds what was not used.

Claiming and closing

collect() pokes each position and returns all fees owed. On close, decreaseLiquidity() returns the principal, collect() returns principal plus fees, and the difference is the fee part the 7.5% applies to. The NFTs are then burned.

Learn more