Every v4 pool may name a hook: a contract the PoolManager calls at fixed moments in a swap, a deposit, a withdrawal. Which moments is not a promise anybody makes. It is mined into the hook's address — the low fourteen bits are the list, and the protocol refuses to call the contract for anything outside it.
That is the whole of what this page knows, and it is worth knowing precisely because it is enforced rather than claimed. What a hook does with a permission is in its code. This application does not read code, and it keeps no list of hooks anybody has vouched for — both would be a claim it could not check, next to figures it can.
Read from the pools of this week's busiest v4 days — 250 of them. 25 name a hook; 225 name none, and behave the way a v3 pool does.
Ordered by how many of those pools run each hook. That is a count of pools and nothing else: a hook on many of them is a hook somebody deployed many pools with.
0x0000113dcf4add69999fad8f20f2b63f979bfcc0
Runs 2 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
- Run after every swap, where it can still refuse the swap.
Around deposits and withdrawals
- Run before every deposit, where it can refuse the deposit.
- Run after every deposit, where it can still refuse the deposit.
When the pool was created
- Run once, before the pool was created. That has already happened.
- Run once, after the pool was created. That has already happened.
The protocol's own names for these
- beforeSwap
- afterSwap
- beforeAddLiquidity
- afterAddLiquidity
- beforeInitialize
- afterInitialize
0x0000000aa232009084bd71a5797d089aa4edfad4
Runs 2 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
This hook runs when a provider withdraws, and is permitted to refuse a withdrawal. Whether it ever does is not knowable from here.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
- Run after every swap, where it can still refuse the swap.
- Take a share of a swap after the pool has priced it.
Around deposits and withdrawals
- Run before every deposit, where it can refuse the deposit.
- Run before every withdrawal, where it can refuse the withdrawal.
When the pool was created
- Run once, before the pool was created. That has already happened.
- Run once, after the pool was created. That has already happened.
Around donations
- Run after a donation to the pool's providers, where it can still refuse the donation.
The protocol's own names for these
- beforeSwap
- afterSwap
- afterSwapReturnsDelta
- beforeAddLiquidity
- beforeRemoveLiquidity
0x4440854b2d02c57a0dc5c58b7a884562d875c0c4
Runs 2 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
- Run after every swap, where it can still refuse the swap.
- Take a share of a swap after the pool has priced it.
The protocol's own names for these
- beforeSwap
- afterSwap
- afterSwapReturnsDelta
0x2c67eba8a50af0db5fba55f725247a75cbda6444
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run after every swap, where it can still refuse the swap.
- Take a share of a swap after the pool has priced it.
Around deposits and withdrawals
- Run after every deposit, where it can still refuse the deposit.
When the pool was created
- Run once, before the pool was created. That has already happened.
The protocol's own names for these
- afterSwap
- afterSwapReturnsDelta
- afterAddLiquidity
- beforeInitialize
0xd53006d1e3110fd319a79aeec4c527a0d265e080
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
When the pool was created
- Run once, before the pool was created. That has already happened.
The protocol's own names for these
- beforeSwap
- beforeInitialize
0xa4e6f5500e88691fdcb289aa0e99067481434880
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
Around deposits and withdrawals
- Run before every deposit, where it can refuse the deposit.
The protocol's own names for these
- beforeSwap
- beforeAddLiquidity
0x0c02c38d66d777ba1c0387e639c2fb2d2440a8cc
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
- Run after every swap, where it can still refuse the swap.
- Take tokens out of a swap, or put its own in, before the pool prices it — so a swap here need not follow the pool's own curve.
- Take a share of a swap after the pool has priced it.
Around deposits and withdrawals
- Run before every deposit, where it can refuse the deposit.
When the pool was created
- Run once, before the pool was created. That has already happened.
The protocol's own names for these
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
- beforeAddLiquidity
- beforeInitialize
0x890681cff5ad2069f020027f41f5f68f6a292000
Runs 1 of them
What it is permitted to do
When the pool was created
- Run once, before the pool was created. That has already happened.
The protocol's own names for these
0xe3bf665a9545d34d061fa5bd7a0676c81b5aaacc
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
This hook runs when a provider withdraws, and is permitted to refuse a withdrawal. Whether it ever does is not knowable from here.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
- Run after every swap, where it can still refuse the swap.
- Take tokens out of a swap, or put its own in, before the pool prices it — so a swap here need not follow the pool's own curve.
- Take a share of a swap after the pool has priced it.
Around deposits and withdrawals
- Run before every deposit, where it can refuse the deposit.
- Run before every withdrawal, where it can refuse the withdrawal.
When the pool was created
- Run once, before the pool was created. That has already happened.
The protocol's own names for these
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
- beforeAddLiquidity
- beforeRemoveLiquidity
- beforeInitialize
Where it runs
0xfaaad5b731f52cdc9746f2414c823eca9b06e844
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run after every swap, where it can still refuse the swap.
- Take a share of a swap after the pool has priced it.
Around deposits and withdrawals
- Run before every deposit, where it can refuse the deposit.
When the pool was created
- Run once, before the pool was created. That has already happened.
The protocol's own names for these
- afterSwap
- afterSwapReturnsDelta
- beforeAddLiquidity
- beforeInitialize
0xe54082dfbf044b6a8f584bdddb90a22d5613c440
Runs 1 of them
What it is permitted to do
Around swaps
- Run after every swap, where it can still refuse the swap.
Around deposits and withdrawals
- Run after every deposit, where it can still refuse the deposit.
The protocol's own names for these
- afterSwap
- afterAddLiquidity
0xcf4d29f14cc585ddd1167f956092852af844e040
Runs 1 of them
What it is permitted to do
Around swaps
- Run after every swap, where it can still refuse the swap.
When the pool was created
- Run once, before the pool was created. That has already happened.
The protocol's own names for these
- afterSwap
- beforeInitialize
0x47f1c7c7d5bd2039d9d3a997d91569869edf1080
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
When the pool was created
- Run once, after the pool was created. That has already happened.
The protocol's own names for these
- beforeSwap
- afterInitialize
0xe705dd22bedbe0adf1ed07b609fe3ccee46c00cc
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
- Run after every swap, where it can still refuse the swap.
- Take tokens out of a swap, or put its own in, before the pool prices it — so a swap here need not follow the pool's own curve.
- Take a share of a swap after the pool has priced it.
The protocol's own names for these
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
0xbac4827c28ab5871a830671df53bd94589d3c0cc
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
- Run after every swap, where it can still refuse the swap.
- Take tokens out of a swap, or put its own in, before the pool prices it — so a swap here need not follow the pool's own curve.
- Take a share of a swap after the pool has priced it.
The protocol's own names for these
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
0x02871b585ee8e77d987a74d925d47cf1910720cc
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
- Run after every swap, where it can still refuse the swap.
- Take tokens out of a swap, or put its own in, before the pool prices it — so a swap here need not follow the pool's own curve.
- Take a share of a swap after the pool has priced it.
When the pool was created
- Run once, before the pool was created. That has already happened.
The protocol's own names for these
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
- beforeInitialize
0xb9596ddf5778cf53da85bf5cfe619210d25dd0c0
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
- Run after every swap, where it can still refuse the swap.
When the pool was created
- Run once, after the pool was created. That has already happened.
The protocol's own names for these
- beforeSwap
- afterSwap
- afterInitialize
0x3c66eaf8a9041468cb003152333f2548afcfe0cc
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
- Run after every swap, where it can still refuse the swap.
- Take tokens out of a swap, or put its own in, before the pool prices it — so a swap here need not follow the pool's own curve.
- Take a share of a swap after the pool has priced it.
When the pool was created
- Run once, before the pool was created. That has already happened.
The protocol's own names for these
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
- beforeInitialize
0xb8d9477eb6ef5f0df5219cf0c8130dd7e520e0cc
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
- Run after every swap, where it can still refuse the swap.
- Take tokens out of a swap, or put its own in, before the pool prices it — so a swap here need not follow the pool's own curve.
- Take a share of a swap after the pool has priced it.
When the pool was created
- Run once, before the pool was created. That has already happened.
The protocol's own names for these
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
- beforeInitialize
0xd3efcb655ef4d7ac9f8140fe4b7e833c46b728e0
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
- Run after every swap, where it can still refuse the swap.
Around deposits and withdrawals
- Run before every deposit, where it can refuse the deposit.
When the pool was created
- Run once, before the pool was created. That has already happened.
Around donations
- Run before a donation to the pool's providers, where it can refuse the donation.
The protocol's own names for these
- beforeSwap
- afterSwap
- beforeAddLiquidity
- beforeInitialize
- beforeDonate
0xafed2c6e0d906520ca17143a8918ce6d54b128cc
Runs 1 of them
This hook is permitted to change what a swap costs or pays. Any figure drawn from price history — a suggested range, a fee tier, a comparison against simply holding — assumes the pool charges what it says and pays what the curve says. Neither assumption is safe here, and none of it is visible in a price series.
What it is permitted to do
Around swaps
- Run before every swap, where it can refuse the swap and, on a pool with a dynamic fee, set what that swap pays.
- Run after every swap, where it can still refuse the swap.
- Take tokens out of a swap, or put its own in, before the pool prices it — so a swap here need not follow the pool's own curve.
- Take a share of a swap after the pool has priced it.
Around deposits and withdrawals
- Run before every deposit, where it can refuse the deposit.
When the pool was created
- Run once, before the pool was created. That has already happened.
The protocol's own names for these
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
- beforeAddLiquidity
- beforeInitialize
0xc6c965bd164c483e87d0b550671798e9a3602840
Runs 1 of them
What it is permitted to do
Around swaps
- Run after every swap, where it can still refuse the swap.
Around deposits and withdrawals
- Run before every deposit, where it can refuse the deposit.
When the pool was created
- Run once, before the pool was created. That has already happened.
The protocol's own names for these
- afterSwap
- beforeAddLiquidity
- beforeInitialize