Use the app
Create a pool
Two tokens, a hook and its settings, a tick spacing and a starting price, then the first liquidity. The pool key and the hook's settings are fixed once the pool is initialized.
Anyone can create a pool. The Create page builds one with no hook, one of Socket's hooks, or a listed external hook, and shows a summary of the pool before you sign.
struct PoolKey {
Currency currency0;
Currency currency1;
uint24 fee;
int24 tickSpacing;
IHooks hooks;
}Steps#
Choose the tokens
Pick a base and a quote token from the tokens already in pools or in your wallet, or paste any ERC-20 address. Native ETH can be either one. Prices on the page are quoted as quote per base. In the pool key the two are sorted by address, with ETH as
address(0)always first; the app handles that for you.Choose a hook
Choose No hook, Dynamic fee, TWAP oracle, Range order, or a listed External hook. The app offers only hooks on Socket's allowlist.
Set the hook's settings
Each Socket hook asks for its own settings, below. They are fixed with the pool.
Set the fee and tick spacing
A pool without the dynamic fee has a fixed fee, entered in percent. A Dynamic fee pool's fee field is the dynamic-fee flag,
0x800000, and its fee comes from the hook.Tick spacing runs from 1 to 32,767. Each tick is a 0.01% step in price, so with a spacing of 60 neighboring prices sit about 0.6% apart. The page shows the step for the spacing you pick. Positions and range orders start and end on this grid.
Set the starting price
Type how much quote one base is worth. If the pair already has pools, the field starts at their price. Your first liquidity goes in at exactly this price, so set it at the market.
Add the first liquidity
Pick a range around the starting price and enter an amount of either token; the page fills in the other. A range entirely above or below the starting price takes only one token.
Create
Press Create. The first time you deposit an ERC-20 token, approve Permit2 for it. Then sign the permit and confirm. The pool is initialized with its settings, and your first position is minted as an NFT. It appears under Positions.
Hook settings#
| Setting | Starts at | What it does |
|---|---|---|
| Base fee | Your choice | The fee while trading is calm. |
| Max fee | 1.00% | The pool's max fee. The hook can't charge more. |
| Max extra | 0.70% | The most the hook adds on top of the base fee. |
| Per tick of movement | 0.01% | Fee added per tick of recent average price movement. |
| Decay | 1% per second | How fast the measured movement fades. Fully decayed after 100 s. |
| Weight of the latest swap | 25% | How much one swap moves the running average. |
The hook stores each setting in hundredths of a basis point: 1,000,000 is 100%, so a 1% max fee is 10,000. See Dynamic fee for the formula and a calculator.
The TWAP oracle has no settings. It keeps a ring of 32 observations of the pool's cumulative tick, and any contract reads the mean tick over a window with observe(key, secondsAgo). See TWAP oracle.
The range order hook has no settings. Once the pool exists, anyone can place orders in it, each a range in multiples of the pool's tick spacing. See Place a range order.
A pool with no hook has a fixed fee and no settings. It can't use the dynamic-fee flag, and it keeps no buyback share.
The buyback share#
A pool on one of Socket's built-in hooks keeps a buyback share of the LP fees its positions collect, and the hook sends it to the Buyback contract, which buys SOCKET and burns it. The pool takes the share in force when it is initialized: 20% today. SOCKET holders can set it from 0% to 50% for pools created after a vote, and every pool keeps the share it started with. The summary shows it before you sign.
Swaps pay the pool's fee and nothing more. Pools with no hook, or on an external hook, keep no buyback share.
Pools with your own hook#
On Uniswap v4, any pool can name any hook. The app creates and routes through pools with no hook or a listed hook. To put a hook of your own on the list, see Write a hook, then propose it on Govern.