Permissionless, oracle-free, perpetual options protocol built on top of Uniswap V3/V4 concentrated liquidity. Sellers mint short options as Uniswap range positions; buyers borrow that liquidity to create perpetual long calls/puts that never expire. V2 launched on Ethereum mainnet in Dec 2025 with Unichain support.
- 01perpetual put/call options on any Uniswap V3/V4 pool
- 02permissionless options on long-tail tokens
- 03Uniswap LPs converting range positions into option exposure
- 04structured strategies (jade lizard, iron condor, straddle) on-chain
- pnpm add viem @uniswap/v3-sdk
- forge install panoptic-labs/panoptic-v1-core
| Variable | Scope | Description |
|---|---|---|
| NEXT_PUBLIC_ETH_RPC_URL | Client | Ethereum mainnet RPC for PanopticPool reads/writes (or Unichain RPC for L2). |
| PANOPTIC_FACTORY_ADDRESS | Client | Address of `PanopticFactory` used to look up the `PanopticPool` for a given Uniswap V3 pool. |
Use viem against the Panoptic core contracts. Resolve a pool via `PanopticFactory.getPanopticPool(uniV3Pool)` then read user data with `PanopticPool.optionPositionInfo(account, tokenId)`. Mint a position with `PanopticPool.mintOptions(positionIdList, positionSize, effectiveLiquidityLimit, slippageTickLimitLow, slippageTickLimitHigh)` — `tokenId` packs up to 4 legs (long/short, call/put, width, strike-tick). Burn with `burnOptions(...)`. Each `CollateralTracker` (one per token0/token1) handles deposits via `deposit(assets, receiver)` and tracks utilisation; LPs effectively earn streaming premium on their Uniswap range converted to option commissions. There is no expiry — premium accrues per-block as long as the position is open.
- ⚑Panoptic is oracle-free — all option pricing and exercise comes from the underlying Uniswap V3 pool's tick. Thin/illiquid pools with sparse ticks produce extreme premium spikes and can grief writers; only deploy on pools with healthy liquidity (e.g. ETH/USDC 0.05%).
- ⚑Positions are perpetual — there is no expiry, but premium streams continuously based on instantaneous utilisation of the writer's range. A position can become very expensive to keep open if utilisation goes high.
- ⚑Liquidations: undercollateralised accounts are liquidated via `liquidate(...)` and force-exercised. Liquidation curves depend on pool tick volatility; a single large swap can move ticks far enough to cascade liquidations on near-the-money longs.
- ⚑The packed `tokenId` encodes legs in a specific bit layout (univ3pool, asset, optionRatio, isLong, tokenType, riskPartner, strike, width per leg). Hand-encoding leads to off-by-one strike or width errors — always go through the SDK helpers in `panoptic-v1-core/test/foundry/core/types/TokenId.t.sol`.
- ⚑V2 ships on Ethereum mainnet + Unichain only; many examples reference older testnet deployments — verify the factory address against `panoptic-labs/panoptic-v1-core` deployments folder.
- ⚑Forced exercise ('forceExercise') by a counterparty is allowed when a position drifts past a width band — UIs should warn long-option holders that they can be forcibly closed when illiquid.