Reading the hook.
The address, the bytecode, then a swap each way through its pool. A few seconds.
v4 hook · Robinhood Chain · block 93,033,273
0xB63c…e0cC
The eight checks
14 pools use this hook, the first one 32 d ago.
- 01caution
Permissions that touch your moneyThe address enables before swap returns delta, 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.
- 03fail
LPs can get outTaking liquidity straight back out lost 100%.
- 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 record14 pools over 32 days.
Measured at block 93,033,273. 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 & 0x3fff0x20cc · 10000011001100
- 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 / V6PRE
fee 0.30%- Swap ETH → V6PREhook takes 1.00%
- Swap V6PRE → ETHhook takes 1%
- Add, then remove liquiditycame back whole
pool 0x545af3704ce727ebfc89105b79b1a94ac88159a95feac33144f29bfe6245f0a1
CB6 / cbBTC
fee 0.30%- Swap CB6 → cbBTCtoo little liquidity to measure
- Swap cbBTC → CB6hook takes 0.57%
- Add, then remove liquiditylost 100%
pool 0x483395c70102c2ff8ab7978c74ec8833cde913478593f65df8f86535fc596f1a
Read from the bytecode
- Code size
- 15,228 bytes
- Owner
- 0x1531901509d9f737Dcf0A51f4DFFc43be523349F
- Proxy
- no
- DELEGATECALL
- absent
- SELFDESTRUCT
- absent
- Outside calls
- 12
- 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.
- Before swap. Runs before every swap. On a dynamic-fee pool it can set the fee each time.
- After swap. Runs after every swap.
- Before swap returns delta. Can take part of what you put into a swap, or change how much is swapped.
- 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