UniHooks

TupleOracleHook

BaseRegistered

A Uniswap v4 hook that maintains a TWAP oracle (truncated observations) and a liquidity book tracking liquidity distribution across tick buckets. It records collateralized debt positions via hookData on liquidity operations, overrides swap fees based on direction (zero fee for tuple→wrapped-native swaps, fixed LP_FEE otherwise), and donates wrapped-native fees back to LPs on qualifying swaps.

0x0a10576d56379b951317e07363301c1e8c7e9fcc First pool 8 May 2026View on explorer
ALooks safeRegistered, verified, immutable
Pools
32
Dynamic-fee pools
32
Last new pool
6mo
Code size
15,620 B

What it can do

Runs code on every swap

Its code executes inside each trade in pools that use it.

Can take tokens from swaps

It can take or add tokens during a swap. Fees, burns and custom curves work this way, and so do scams.

Sets its own swap fee

Pools using it let the hook choose the swap fee instead of a fixed tier.

Can block LP withdrawals

It runs before liquidity is removed, so it can delay or refuse LP exits.

Gates who can add liquidity

It checks every deposit before it goes in.

Runs at pool creation

It runs when a pool is created, often to lock in that pool’s settings.

Safety report

Automated checks, not an audit
✓Not upgradeableNo proxy pattern found: the code is fixed.
✓No owner foundNo owner() function: nobody has an admin switch (as far as the standard check goes).
✓Listed in Uniswap’s hook registryRegistered with Uniswap Labs (a listing, not a security review).
✓Source code publishedThe code on the block explorer matches what's deployed (contract: TupleOracleHook).
iCan change swap amountsIt has a ReturnDelta permission. Normal for fees and burns, but also how fake-quote hooks steal.
?No audit linkedAutomated checks only.

Pools using this hook

32 total
PairCreatedFeePool ID
WETH / SUIIII 6mo dynamic 0xbb68…77db Tx ↗
10 / WETH 6mo dynamic 0xc19a…94f4 Tx ↗
WETH / GREATREDO 6mo dynamic 0xddfd…ad4c Tx ↗
WETH / GREATDOGE 6mo dynamic 0x4b44…c40b Tx ↗
WETH / ALIEN 6mo dynamic 0xb5a4…52ac Tx ↗
WETH / HUMAN 6mo dynamic 0xa20c…e7c1 Tx ↗
WETH / OUTBREAK 6mo dynamic 0xb718…cd2b Tx ↗
WETH / SAFE 6mo dynamic 0x36e4…020a Tx ↗
WETH / 0xe654…606d 6mo dynamic 0x7895…d147 Tx ↗
0x241a…86b9 / WETH 6mo dynamic 0xf457…9b71 Tx ↗
0x2e45…6800 / WETH 6mo dynamic 0x2d27…c180 Tx ↗
WETH / 0xd7ed…d6e6 6mo dynamic 0xf624…902b Tx ↗
WETH / 0x82c2…8e9f 6mo dynamic 0x7ee3…42cd Tx ↗
WETH / 0x8d3d…158a 6mo dynamic 0x23ec…5198 Tx ↗
WETH / 0xf868…ab54 6mo dynamic 0xa1a0…26ba Tx ↗
WETH / 0xf8ee…65b6 6mo dynamic 0x73ec…71be Tx ↗
0x32d0…0000 / WETH 6mo dynamic 0x0db8…8211 Tx ↗
0x3591…3758 / WETH 6mo dynamic 0x8cfd…cb17 Tx ↗
WETH / 0xb445…a9eb 6mo dynamic 0x43e5…aa28 Tx ↗
WETH / 0x6c62…18a6 6mo dynamic 0x15bb…6cf7 Tx ↗
0x0d00…158d / WETH 6mo dynamic 0x3821…7ff5 Tx ↗
0x0d42…9964 / WETH 6mo dynamic 0xe20f…142e Tx ↗
WETH / 0xfb32…e9a3 6mo dynamic 0xe586…66f9 Tx ↗
WETH / 0x6305…27c5 6mo dynamic 0x3415…2aaf Tx ↗
WETH / 0x4bb1…dad9 6mo dynamic 0xa8cb…59ba Tx ↗
0x0851…d217 / WETH 6mo dynamic 0x45b8…2156 Tx ↗
WETH / 0xebde…755e 6mo dynamic 0x2ed2…9fcf Tx ↗
0x067e…46b7 / WETH 6mo dynamic 0x494c…ab8c Tx ↗
WETH / 0xe748…1211 6mo dynamic 0x085b…06ae Tx ↗
WETH / 0x9890…aa25 6mo dynamic 0xd779…b8b3 Tx ↗
WETH / 0xf156…2de2 6mo dynamic 0x27d5…150c Tx ↗
WETH / 0xac25…7094 6mo dynamic 0xf391…e53d Tx ↗