Fee sharing hook on Ethereum
Uniswap v4 Hook Contract 0xc50373838b1e670c997e04ff96a6f6e631e3c0cc on Ethereum · Fee sharing
- Volume (24h)
- $13.01K
- Value locked (TVL)
- $203
- All-time volume
- $13.01K
- Pools using this hook
- 1
- Swaps (24h)
- 97 (46 traders)
- Total swaps
- 97
What it does
This hook charges a buy-side or sell-side fee on swaps through return deltas, with the fee taken in the currency routed to the hook and later paid out via payClaim; which direction pays more could not be determined from the decoded constants.
How it works step by step
- Exposes BUY_FEE_BPS and SELL_FEE_BPS constants and a FEE_DENOMINATOR, indicating direction-dependent fee rates on swaps
- Runs beforeSwap and afterSwap callbacks that can return a delta, so the hook can take a portion of swap amounts via the pool manager
- Calls take(address,address,uint256) on the pool manager to withdraw currency owed to the hook
- Exposes token() and payClaim(address,uint256), suggesting the hook accumulates a token balance that is later paid out to a recipient
- Has liquidity and donate callbacks present in the interface but the bytecode shows swap-focused logic
- Swap behaviour
- beforeSwap and afterSwap are active and can return deltas; the hook takes a buy-side fee (BUY_FEE_BPS) or sell-side fee (SELL_FEE_BPS) depending on swap direction, with the exact rates and which direction pays more not determinable from the decoded constants alone.
- Liquidity behaviour
- Liquidity callbacks (beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity) are present in the dispatch table but no liquidity-specific logic has been identified.
- Fee behaviour
- Uses separate buy and sell fee rates in basis points, expressed against FEE_DENOMINATOR; the hook takes these fees via return deltas on swaps, and the destination of the collected fees is not determinable from bytecode alone.
- Owner & admin controls
- No admin controls found in decoded bytecode; no owner or setter selectors were identified, though fee constants and payClaim may be controlled by an unseen mechanism.
Enabled Uniswap v4 callbacks
beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeSwap is used to gate or compute the swap-side fee; afterSwap is used to take the post-swap fee amount; beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to alter the amounts settled with the pool manager; the liquidity and donate callbacks appear to be implemented but are not clearly used.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, low confidence).
Who controls it: Without source it cannot be confirmed who may call payClaim or whether any party can change the fee constants; if payClaim is gated to an owner, that party controls where accumulated fees go.
Risk to user funds: The hook can take currency from swaps through return deltas and the pool manager take call, so traders pay the hook's fee on each affected swap, and accumulated balances are held by the hook until paid out via payClaim.
Security findings
- [medium] Hook takes currency via return deltas: beforeSwapReturnDelta and afterSwapReturnDelta are enabled and the bytecode calls take on the pool manager, so the hook can withdraw a portion of every swap's currency.
- [info] Fee rates are fixed constants in bytecode: BUY_FEE_BPS and SELL_FEE_BPS are exposed as view functions, which suggests immutable or constant fee rates rather than admin-adjustable ones.
- [medium] Payout function callable externally: payClaim(address,uint256) is a nonpayable external function; without source it is unclear whether it is restricted, so accumulated fees may be claimable by a privileged or arbitrary caller.
- [info] No source verification: Analysis relies solely on decoded bytecode, so access checks and exact fee math cannot be confirmed.
Contract details
- Verified source
- No
- Bytecode size
- 3,552 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, return-delta
Pools using Fee sharing hook
- ETH / SYNC (0.00% fee) — 24h volume $13.01K, TVL $203, 97 swaps today