Reading the hook.
The address, the bytecode, then a swap each way through its pool. A few seconds.
v4 hook · Robinhood Chain · block 93,116,461
0x2A16…2844
The eight checks
10 pools use this hook, the first one 28 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.
- 02caution
What it takes from a swapIt takes 10% of each swap on top of the pool fee.
- 03n/a
LPs can get outClosed to outside LPs: only the hook's own liquidity is in the pool.
- 04pass
The fee is the feeA fixed fee of 0%, written in the pool key.
- 05caution
No one holds the switchOwned by 0x2910117dd2cB431173Ae9Fb6eAF30726321d1693. Owner-style functions: setProtocol, settleStock, sweep, settleToken, claim, claimFor.
- 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 record10 pools over 27 days.
Measured at block 93,116,461. 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 & 0x3fff0x2844 · 10100001000100
- 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.
MASK / META
fee 0%- Swap MASK → METAhook takes 10%
- Swap META → MASKhook takes 10%
- Add, then remove liquiditydeposit refused: NotSeeder
pool 0x27d5f6db4e15384b4c8441e62b47ae1687e7c8f38d88e3690dbec12fac291795
KURA / MSTR
fee 0%- Swap KURA → MSTRhook takes 10%
- Swap MSTR → KURAhook takes 10%
- Add, then remove liquiditydeposit refused: NotSeeder
pool 0x2898fd010ac55511e636b79658344a2a01bf147c46a44dd7fdba893a7d56bf33
Read from the bytecode
- Code size
- 18,481 bytes
- Owner
- 0x2910117dd2cB431173Ae9Fb6eAF30726321d1693
- Proxy
- no
- DELEGATECALL
- absent
- SELFDESTRUCT
- absent
- Outside calls
- 10
- 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.
- 0x045da0c9 MAX_TIP_BPS
- 0x06992c65 setProtocol
- 0x0885f732 poolConfig
- 0x1d79d8e2 payStock
- 0x1dda4010 settleStock
- 0x21d0ee70 beforeRemoveLiquidity
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 add liquidity. Can refuse a deposit, or only let some addresses provide liquidity.
- After swap. Runs after every swap.
- After swap returns delta. Can take part of what you get out of every swap.
0x248eb4ec
sweep
0x251e1c64 settleToken0x259982e5 beforeAddLiquidity0x27258b22 isRegistered0x2c597de9 MAX_TAX_BPS0x427ec6a3 meanTick0x46af929a potOf0x4841c832 flush0x49f5c8a9 vetoCreator0x4e46e4c9 poolOfTreasury0x53c813cc buyRateBps0x55f14137 protocolOf0x575e24b4 beforeSwap0x614f5471 observationCount0x618f105b proposeCreator0x61e512f6 pendingCreator0x62358aad bind0x6c2bbe7e afterRemoveLiquidity0x6fe7e6eb afterInitialize0x72036df6 owedProtocol0x773ac612 ACCEPT_WINDOW0x7b6267df owedCreator0x861fbe84 acceptCreator0x8d7b7255 sellRateBps0x8da5cb5b owner0x8f460445 meanTickOf0x90abf36c register0x91dd7346 unlockCallback0x96c144f0 claim0x982e1652 pendingBy0x9df4efa5 treasuryOf0x9f063efc afterAddLiquidity0xa7bd6f1b owed0xa941d62b owedTreasury0xaad741ef TAKEOVER_DELAY0xb3df5a55 MAX_SPIKE_BPS0xb47b2fb1 afterSwap0xb6a8b0fa beforeDonate0xbae667bc tokenOf0xbee6f029 observationCountOf0xc01b94a7 lastEventAt0xc45a0155 unknown0xd2cb71b1 VETO_QUIET0xd7e9ec04 totalOwed0xd87be2cf noteEvent0xda69f02a stockOf0xdc4c90d3 poolManager0xdc726205 rates0xdc98354e beforeInitialize0xe1b4af69 afterDonate0xebf1c786 claimFor0xf4ab00f8 noProposalBefore0xf54b8a26 pendingCreatorAt0xf83cc0a0 MAX_SNIPE_BPS0xf92f23a7 accrued0xff94e4f3 creatorOf