Fee sharing hook on BNB Chain
Uniswap v4 Hook Contract 0x90fd5d7e223d255e64489cdd92d51fc684ab8044 on BNB Chain · Fee sharing
- Volume (24h)
- $0
- Value locked (TVL)
- <$0.01
- All-time volume
- $14.23M
- Pools using this hook
- 19
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 48,006
What it does
A Uniswap v4 hook that takes a configurable fee from swap proceeds after each swap and routes it to a fee recipient, with tiered fee settings and a pause switch.
How it works step by step
- Runs an afterSwap callback on every swap in pools using this hook.
- Uses afterSwapReturnDelta to take a fee from the unspecified currency of the swap.
- Selects fee rates from a default fee and tiered fee levels stored in contract state.
- Routes the collected fee to a configured hookFeeRecipient address.
- Can be paused by its privileged role, which stops swap processing through the hook.
- Swap behaviour
- After each swap, the afterSwap callback computes a hook fee and adjusts the unspecified-currency delta via afterSwapReturnDelta, sending the cut to the fee recipient.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- Uses a tiered fee configuration (defaultFee, tierOneFee, tierTwoFee, tierThreeFee) with a hook fee recipient and a commission toggle. The hook appears to take a portion of swap output as a fee via afterSwap return delta and forward it to hookFeeRecipient. Exact fee formulas could not be confirmed without source.
- Owner & admin controls
- Owner-gated functions are present (owner() is exposed and the owner-type storage slot is read by configuration selectors). Pausing is available via paused()/ACTION_SET_PAUSED and a setter path that writes the bool stored at slot 5. Fee tier values (defaultFee, tierOneFee, tierTwoFee, tierThreeFee) and the hookFeeRecipient address are stored in slots 5 and 8, which appear to be writable by the privileged role through selector 0xc077e3cd. Exact authorization checks could not be confirmed from bytecode alone.
Enabled Uniswap v4 callbacks
afterSwap, afterSwapReturnDelta
afterSwap: runs after each swap to compute and record fee accounting and to adjust balances. afterSwapReturnDelta: lets the hook alter the unspecified-currency delta after a swap, which is how it takes its fee from swap proceeds.
Security & trust assessment
Risk level: medium (decoded bytecode, low confidence).
Who controls it: A privileged owner or config role can change fee tiers, the commission flag, the fee recipient and the paused state. Changing the fee recipient or fee levels could redirect or inflate the hook's cut of swap proceeds on pools using this hook.
Risk to user funds: The hook holds and moves a portion of swap proceeds through its afterSwap return delta and forwards the fee to hookFeeRecipient. A pause or fee change by the privileged role directly affects user swap outcomes. No evidence of an unrestricted drain function was found, but this could not be confirmed without source.
Security findings
- [medium] Hook takes tokens from swaps via return delta: afterSwapReturnDelta lets the hook take tokens from swap output, and a moves-currency pattern is present (take and transfer selectors appear), so the hook can hold and transfer user-side value.
- [medium] Pausable hook can block swaps: A paused() state and a pause setter exist. If the owner pauses the hook, swaps routed through it may revert, blocking trading on affected pools.
- [medium] Owner can change fee parameters and recipient: Fee tiers, commission toggle and fee recipient are writable through a configuration path, so an owner could raise fees or redirect the hook's cut.
- [info] Ownership model not verifiable from bytecode: Owner() is exposed and owner-gated writes exist, but the access control implementation (single owner vs. multisig, ownership transfer rules) cannot be verified without source.
- [info] Edge-case behaviour not fully traced: Bytecode indicates a conditional return delta and a paused flag; behaviour under all edge cases (zero-amount swaps, exact-output swaps) could not be fully traced.
Contract details
- Verified source
- No
- Bytecode size
- 12,541 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, pausable, return-delta
Pools using Fee sharing hook
- QQQB / USDC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / 4Stock (0.00% fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- BNC4 / USDC (0.00% fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- GMEB / USDC (0.00% fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- QQQB / USDC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- BNCB / USDC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- GOOGLB / USDC (0.00% fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- BNC4 / USDC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- GMEB / USDT (0.0001% fee) — 24h volume $0, TVL $0, 0 swaps today
- QQQB / USDC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / 4Stock (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- QQQB / USDC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / NFLXB (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- BNCB / USDC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- QQQB / USDC (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today
- BNCB / USDC (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today
- BNC4 / USDC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- BNC4 / USDC (0.0001% fee) — 24h volume $0, TVL $0, 0 swaps today
- BNC4 / USDC (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today