Fee sharing hook on Ink

Uniswap v4 Hook Contract 0x661455a91c57670ba405b88e871c7f89429ba0cc on Ink · Fee sharing

Volume (24h)
$0
Value locked (TVL)
$0
All-time volume
$3.85K
Pools using this hook
1
Swaps (24h)
0 (0 traders)
Total swaps
60

What it does

Takes a share of swap flow via return deltas and routes accumulated value to a creator, growth sink and terminal pot, as a fee-sharing hook.

How it works step by step

  • Validates or configures the pool in beforeInitialize
  • Captures a portion of swap value through beforeSwapReturnDelta and afterSwapReturnDelta
  • Accumulates captured value in WETH and token balances
  • Uses unlockCallback with the pool manager to settle deltas
  • Distributes accumulated value via deliverFees and distribute to creator, growth sink and terminal pot
Swap behaviour
beforeSwap and afterSwap run custom logic and adjust deltas so the hook can capture a portion of each swap's value.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Hook takes fees via return deltas on swaps and forwards accumulated value through deliverFees and distribute; exact fee rate is not determinable from the decoded selectors alone (FEE_PIPS is exposed as a view).
Owner & admin controls
No admin controls found. Storage shows a single uint8 slot read and written by deliverFees and distribute; no owner, pause or upgrade selectors were decoded.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize validates or sets up the pool on initialization; beforeSwap and afterSwap run custom logic around swaps; beforeSwapReturnDelta and afterSwapReturnDelta let the hook take or give currency deltas on swaps.

Security & trust assessment

Risk level: medium, estimated (decoded bytecode, low confidence).

Who controls it: Could not determine from bytecode whether any privileged key exists; creator() and growthSink() views suggest a designated recipient address for funds, but no setter selector was decoded.

Risk to user funds: The hook can take a share of swap amounts through return deltas and move WETH and token balances to the creator or growth sink addresses when distribute or deliverFees runs; exact split logic cannot be verified without source.

Security findings

  • [medium] Hook moves currency via return deltas: The hook holds return-delta permissions and calls take and transfer, so it can move currency on swaps and when distributing.
  • [info] Self-unlock pattern: The hook calls unlock and unlockCallback, so it can open its own pool manager unlock context to settle deltas.
  • [medium] Permissionless distribution entry points: Distribution is driven by public deliverFees and distribute functions with no decoded access check; whether they are permissionless could not be confirmed without source.
  • [info] Minimal mutable state: Only one storage slot is inferred and no admin setters were found, which limits what the hook can change after deployment.

Contract details

Verified source
No
Bytecode size
5,921 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, return-delta, self-unlock

Pools using Fee sharing hook