Fee sharing hook on Ethereum
Uniswap v4 Hook Contract 0x9338644744b78a28db36cbf535c7d4e4eb17a888 on Ethereum · Fee sharing
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 57
- Swaps (24h)
- 2 (2 traders)
- Total swaps
- 48
What it does
A Uniswap v4 hook that can take over part of swap flow through return deltas, has a token jar that receives funds collected from pools, and exposes a quote function, with the owner-style controls and fee behaviour not clearly visible from the decoded bytecode.
How it works step by step
- Enables beforeInitialize, beforeAddLiquidity, beforeSwap and beforeSwapReturnDelta, so it runs on pool creation, liquidity addition and swaps, and can return a delta that changes how a swap settles.
- Contains a token jar address (tokenJar, TOKEN_JAR) and a pollTokenJar function, indicating it routes collected tokens to a separate jar contract.
- References a protocolFeeController, protocolFeeMultiplier and protocolFeeFlags, suggesting it reads or applies protocol fee settings for pools it manages.
- Exposes a quote(bool,int256,bytes32) function that computes swap output values, returning three uint256 values.
- Tracks initialized pools in an address array and a mapping keyed by pool id, and reports a pseudoTotalValueLocked per pool id.
- Makes external calls including transfer, transferFrom, take, settle, sync and swap on the pool manager, and also calls back into pools for Uniswap V3 and PancakeSwap V3 style swap callbacks.
- Swap behaviour
- beforeSwap is implemented and can return a return delta through beforeSwapReturnDelta, meaning the hook can adjust amounts settled on a swap. It also moves currency via transfer and take/settle calls and runs afterSwap-related logic, so swap outcomes depend on hook-side accounting.
- Liquidity behaviour
- beforeAddLiquidity is enabled and can gate or inspect liquidity additions. beforeRemoveLiquidity and afterRemoveLiquidity selectors are present but the hook permissions do not enable removal callbacks, so those selectors are likely not reached by the pool manager.
- Fee behaviour
- Fee handling is not clearly determined from the decoded functions. protocolFeeMultiplier and protocolFeeFlags suggest protocol fee logic, and funds are routed to a token jar, but the exact fee rate and how it is applied cannot be confirmed without source.
- Owner & admin controls
- pollTokenJar is a state-changing function callable by anyone, which indicates a permissionless trigger for moving collected tokens. No owner or pause functions were identified in the decoded selectors, but the protocolFeeController reference implies an external controller may set fee parameters. Upgradability could not be determined.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeSwap, beforeSwapReturnDelta
beforeInitialize records or checks pool creation; beforeAddLiquidity inspects or restricts liquidity additions; beforeSwap runs custom logic before each swap; beforeSwapReturnDelta lets the hook alter the amounts settled in a swap, which is the main source of its influence over user funds.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, low confidence).
Who controls it: The main privileged influence is through whoever controls the protocol fee controller and the token jar address, which can affect fee amounts and the destination of collected tokens. No direct owner key was identified in the decoded functions.
Risk to user funds: The hook can hold and move pool and user funds through transfer, take, settle and sync calls, and can alter settlement through its swap return delta. Whether it can block swaps depends on logic not visible in the decoded selectors.
Security findings
- [medium] Return delta swap interception: beforeSwapReturnDelta is enabled and the bytecode performs transfer, take and settle calls, so the hook can alter the amounts users receive or pay on swaps.
- [medium] Protocol fee parameters from external controller: The hook references protocolFeeController, protocolFeeMultiplier and protocolFeeFlags; if the controller can change these values, fees charged to traders could change without a hook upgrade.
- [low] Permissionless token jar poll: pollTokenJar is a nonpayable function with no visible access check in the selector list, so anyone can trigger transfer of collected tokens to the jar; the destination is fixed by the tokenJar address stored in slot 0.
- [info] Unverified bytecode: No verified source is available, so the exact access checks, fee arithmetic and upgrade mechanisms cannot be confirmed from selectors alone.
Contract details
- Verified source
- No
- Bytecode size
- 12,259 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, return-delta
Pools using Fee sharing hook
- USDC / WETH (0.01% fee) — 24h volume $0, TVL $0, 1 swaps today
- WETH / USDT (0.01% fee) — 24h volume $0, TVL $0, 1 swaps today
- WQUBIC / WETH (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- WETH / USDT (0.05% fee) — 24h volume $0, TVL $0, 0 swaps today
- RE / WETH (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- WBTC / PROS (0.25% fee) — 24h volume $0, TVL $0, 0 swaps today
- TUSD / USDT (0.01% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / USDT (0.01% fee) — 24h volume $0, TVL $0, 0 swaps today
- WETH / INX (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- DYO / WETH (0.05% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDT / USDT (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- DWH / USDT (0.01% fee) — 24h volume $0, TVL $0, 0 swaps today
- UDST / USDT (0.01% fee) — 24h volume $0, TVL $0, 0 swaps today
- MKP / USDT (0.01% fee) — 24h volume $0, TVL $0, 0 swaps today
- HKDD / USDT (0.01% fee) — 24h volume $0, TVL $0, 0 swaps today
- TARA / USDT (0.01% fee) — 24h volume $0, TVL $0, 0 swaps today
- PEPE / MNTO (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- MNTO / USDT (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- AQT / swETH (0.05% fee) — 24h volume $0, TVL $0, 0 swaps today
- EURT / WTOKEN (0.01% fee) — 24h volume $0, TVL $0, 0 swaps today