Overview
Understand Uniswap v4 permissioned pools, which restrict swaps and liquidity to allowlisted holders of a permissioned asset.
The Permissioned Pools hook lets a Uniswap v4 pool support tokens that can only be held or traded by approved addresses, such as tokenized or crypto-native assets that must restrict who can hold them. It combines an onchain allowlist with a wrapper token that keeps the permissioned token compatible with the standard PoolManager. The protocol stays permissionless: anyone can create a pool, but only allowlisted holders can swap or provide liquidity.
Use Cases
Potential use cases for the Permissioned Pools hook include:
- Tokenized assets that require holders to pass identity verification before trading.
- Regulated assets where an issuer must be able to restrict who gains exposure.
- Compliance-gated liquidity where both swappers and liquidity providers must be on an allowlist.
How It Works
With permissioned pools, a verified wrapper contract, the Permissions Adapter, holds the underlying permissioned token, and the pool trades the wrapped version. When assets enter the pool they are wrapped, and when they leave they are unwrapped, so the holder always ends up with the underlying permissioned token. A permissioned hook checks the issuer's allowlist on every swap and liquidity addition, and the Permissioned Position Manager and the Universal Router handle wrapping and unwrapping so integrations need minimal changes.
The wrapper is verified through a factory: before a pool can use it, the issuer proves the adapter is authorized to hold the underlying token by seeding it with a minimal balance, which is only possible if the adapter is on the token's allowlist. See Architecture for the details.
Core Invariants
- Only allowlisted addresses can swap or provide liquidity.
- Disallowed addresses cannot gain exposure to the permissioned token, including through multi-hop routes.
- The issuer can halt swapping and can unwind liquidity positions.
- Liquidity position NFTs are non-transferable, so allowlist checks cannot be bypassed.
- The system is non-custodial: funds leave the pool only through swaps, position withdrawals, and claim redemptions, never through the wrapped token directly.
If you are considering bringing an asset onchain and want the team to follow up, register your interest. If you already have a permissioned token deployed, request allowlisting for routing instead.
Where to Go Next
- Learn how the contracts fit together in Architecture.
- Onboard a token in Deploy a Permissioned Pool.
- Integrate permissioned tokens in an app with Swapping on Tokenized Pools.