Reading the hook.
The address, the bytecode, then a swap each way through its pool. A few seconds.
v4 hook · Robinhood Chain · block 93,296,606
0xC059…a044
The eight checks
4 pools use this hook, the first one 35 d ago.
- 01caution
Permissions that touch your moneyThe address enables after swap returns delta. The hook is allowed to take; the next two checks measure whether it does.
- 02pass
What it takes from a swapIt takes 1% on top of the pool fee.
- 03pass
LPs can get outLiquidity added and removed in the same block came back whole.
- 04pass
The fee is the feeA fixed fee of 0.30%, written in the pool key.
- 05caution
No one holds the switchOwned by 0x1531901509d9f737Dcf0A51f4DFFc43be523349F. Owner-style functions: setPlatformFeeRecipient, burnThreshold, burnVaultBalance, setFees, setFactory, claimPendingFees.
- 06pass
The code cannot changeNot a proxy, no DELEGATECALL, no SELFDESTRUCT.
- 07pass
Only the PoolManager can call itEach callback refused a call that did not come from the PoolManager.
- 08pass
Track record4 pools over 34 days.
Measured at block 93,296,606. A hook with an owner or a dynamic fee can behave differently later; scan again before a large trade.
What the address allows
A v4 hook's permissions are the last fourteen bits of its address. The PoolManager calls only what they switch on.
address & 0x3fff0x2044 · 10000001000100
- bit 13Before initialize
- bit 12After initialize
- bit 11Before add liquidity
- bit 10After add liquidity
- bit 9Before remove liquidity
- bit 8After remove liquidity
- bit 7Before swap
- bit 6After swap
- bit 5Before donate
What it did to a real swap
A small swap each way and a liquidity round trip, run through the PoolManager and this hook inside a call that is never sent. The pool fee is expected; anything else missing is the hook.
ETH / PTEST
fee 0.30%- Swap ETH → PTESThook takes 1%
- Swap PTEST → ETHhook takes 1%
- Add, then remove liquiditycame back whole
pool 0x11414a21d059d2f8b5f26bd9797db386aba36671fb40dd1add7b16cdb8e363f4
ETH / PENGU
fee 0.30%- Swap ETH → PENGUhook takes 1%
- Swap PENGU → ETHhook takes 1%
- Add, then remove liquiditycame back whole
pool 0xc0728dad09f8fe73fc7739e7e249e23489b8293dcca5aa53335194007ad831fa
Read from the bytecode
- Code size
- 13,934 bytes
- Owner
- 0x1531901509d9f737Dcf0A51f4DFFc43be523349F
- Proxy
- no
- DELEGATECALL
- absent
- SELFDESTRUCT
- absent
- Outside calls
- 11
- Callbacks open to anyone
- none
Its functions, uncensored
Selectors found in the dispatcher, named from the public signature database. Red ones are what an owner usually keeps for itself.
- 0x04f618cb bindReferrer
- 0x06bfa938 getPoolInfo
- 0x0f04ba67 isFactory
- 0x1246dbf5 hasPool
- 0x1871e243 setPlatformFeeRecipient
- 0x1e592502 referrerShareBps
- 0x2142e7bc burnThreshold
bit 4
After donate
bit 3Before swap returns deltabit 2After swap returns deltabit 1After add returns deltabit 0After remove returns delta- Before initialize. Runs once, when a pool is created.
- After swap. Runs after every swap.
- After swap returns delta. Can take part of what you get out of every swap.
0x21d0ee70 beforeRemoveLiquidity0x23cbe1f3 sellFeeBps0x249d39e9 BPS0x259982e5 beforeAddLiquidity0x264e97e0 isTrustedRouter0x44fb97f7 registerPool0x4db15e74 pendingFees0x575e24b4 beforeSwap0x5eb53f37 burnVaultBalance0x6c2bbe7e afterRemoveLiquidity0x6d66f1c0 totalBurnedPaired0x6e7ffd4b getPoolKey0x6fcba377 setFees0x6fe7e6eb afterInitialize0x6ff57b08 snipeWindowSeconds0x71013c10 setFactory0x715018a6 renounceOwnership0x7381527f POOL_TICK_SPACING0x76e580d9 claimPendingFees0x77d2300e buyFeeBps0x7a1f6755 gasFeeRecipient0x7cf90dd3 maxBurnImpactBps0x87eb0f19 bindReferrerFor0x8da5cb5b owner0x91dd7346 unlockCallback0x991cf0e2 snipeTaxTokens0x9f063efc afterAddLiquidity0xb1a25c94 creatorShareBps0xb3b94502 autoBurnBps0xb47b2fb1 afterSwap0xb5217bb4 pools0xb6a8b0fa beforeDonate0xbe2cc454 isSniper0xc64f5351 setTrustedRouter0xc92536ec snipeSellTaxBps0xd21cacdf referrerOf0xd90fca75 setMaxBurnImpactBps0xda21b60c executeBurn0xdc4c90d3 poolManager0xdc98354e beforeInitialize0xdd1b9c4a POOL_FEE0xde0cebe9 setSnipeProtection0xe1b4af69 afterDonate0xe25f919d totalBurnedTokens0xeb13554f platformFeeRecipient0xec13cd58 setGasFeeConfig0xf2fde38b transferOwnership0xfa48f032 snipeTaxPaired0xfccc2813 BURN_ADDRESS0xfeb570b4 gasFeeBps