Reading the hook.
The address, the bytecode, then a swap each way through its pool. A few seconds.
v4 hook · Robinhood Chain · block 93,456,444
0xdFf9…60cC
The eight checks
1 pool use this hook, the first one 23 h 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.
- 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%, written in the pool key.
- 05caution
No one holds the switchNo owner() but it has transferOwnership, transfer, transferFrom.
- 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.
- 08caution
Track record1 pool, first seen 0 days ago.
Measured at block 93,456,444. 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 / CHORD
fee 0%- Swap ETH → CHORDhook takes 1%
- Swap CHORD → ETHno liquidity above the price
- Add, then remove liquiditycame back whole
pool 0xec4408e74c3ae3199d6562b5c09a3d9faee3548933e37d15cdae4fe8fb3259c5
Read from the bytecode
- Code size
- 11,334 bytes
- Owner
- none found
- Proxy
- no
- DELEGATECALL
- absent
- SELFDESTRUCT
- absent
- Outside calls
- 4
- 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.
- 0xeedb21ea HALL
- 0xf2fde38b transferOwnership
- 0xf3ccaac0 image
- 0xf4383a73 homePool
- 0xdd62ed3e allowance
- 0xe1b4af69 afterDonate
- 0xe8a3d485 contractURI
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.
0xc4ddcc00
tills
0xc4e833ce getHookPermissions0xc61199be cashedOutTotal0xcb4774c4 label0xd505accf permit0xdc98354e beforeInitialize0xacf4094a ARTIST0xb47b2fb1 afterSwap0xb6a8b0fa beforeDonate0xc040e6b8 stage0x9f063efc afterAddLiquidity0xa9059cbb transfer0xabfaeee0 twitter0x7ecebe00 nonces0x84b0196e eip712Domain0x8da5cb5b owner0x91dd7346 unlockCallback0x95128e19 tippedTotal0x95d89b41 symbol0x6fe7e6eb afterInitialize0x70a08231 balanceOf0x715018a6 renounceOwnership0x78a2ce59 hall0x575e24b4 beforeSwap0x5e1d5482 about0x6c2bbe7e afterRemoveLiquidity0x313ce567 decimals0x3644e515 DOMAIN_SEPARATOR0x3c1887af TIP_BPS0x43bc1612 artist0x46ae68d1 playedAt0x481c6a75 manager0x23b872dd transferFrom0x259982e5 beforeAddLiquidity0x29e9e7d6 played0x2d35e17d cashOut0x18160ddd totalSupply0x1c4695f4 link0x21d0ee70 beforeRemoveLiquidity0x02a1f4d3 HOME_TICK_SPACING0x03662a4a payee0x06fdde03 name0x095ea7b3 approve0x0f38d8c3 LABEL0x1304ff57 CHORDS