Hook 0x3e9b…40cc on Robinhood Chain
Uniswap v4 Hook Contract 0x3e9b51e5d3f3f69fbb9058cf3cf6d9d74c5d40cc on Robinhood Chain · Other
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $7.97M
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 18,366
What it does
A Uniswap v4 hook that charges a configurable tax on swaps, accrues it, and forwards it to an owner-set recipient, so traders pay a bit more than the pool quote.
How it works step by step
- Computes a tax in basis points (taxBps) on swap amounts in beforeSwap and afterSwap
- Uses before and after swap return deltas to take the tax out of the swap flow
- Accrues tax per address (accruedTax) and tracks a threshold (taxThreshold) before forwarding
- Forwards collected tax to a configurable taxRecipient in a chosen taxCurrency
- Interacts with the PoolManager via unlock, settle, take, mint and burn for currency accounting
- Owner can update tax parameters and transfer or renounce ownership
- Swap behaviour
- beforeSwap and afterSwap run on every swap; the hook computes a tax (taxBps) and takes it through return deltas, accruing it for the configured recipient and currency.
- Liquidity behaviour
- Liquidity add and remove callbacks are present as view-level stubs in the dispatch table; no state-changing liquidity logic was identified from the decoded selectors.
- Fee behaviour
- Applies a hook-level tax (taxBps, denominated against BPS_DENOMINATOR) on swaps, accrues it per address via accruedTax, and forwards it to a configured taxRecipient once a threshold is reached. Pool LP fee is not set by this hook.
- Owner & admin controls
- Owner (Ownable) can set the tax rate via 0x2f5f66e9 (uint24 taxBps), change the tax recipient and currency via 0x3209b28f/0xc8970142 style setters, set the tax threshold via 0xa4decd1d, transfer ownership, and renounce ownership. Owner is stored in slot 0.
Enabled Uniswap v4 callbacks
beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeSwap and afterSwap are used to compute and collect the tax on swaps. beforeSwapReturnDelta and afterSwapReturnDelta let the hook take a share of the swap amounts, moving currency out of the swap flow into its own accounting. Other callbacks (initialize, liquidity, donate) are dispatched but appear to be no-ops.
Security & trust assessment
Risk level: medium (decoded bytecode, medium confidence).
Who controls it: The owner can raise taxBps, change the tax recipient and currency, and adjust the threshold at will, so the owner can redirect swap proceeds to any address and set the tax high enough to take most of a swap's output.
Risk to user funds: The hook can take a percentage of every swap output via return deltas and hold accrued tax balances until the threshold is met. Owner-controlled parameters determine how much is taken and where it goes. Source is not verified, so exact accounting cannot be fully confirmed.
Security findings
- [medium] Swap tax via return delta: The hook takes a share of swap amounts through return deltas and transfers it to a recipient, so users receive less than the pool's quoted output.
- [medium] Owner can change tax parameters instantly: The owner can set taxBps, taxRecipient and taxCurrency without a timelock visible in the decoded functions, so tax terms can change instantly after users trade.
- [medium] Single owner key controls tax flows: Ownable with no visible ownership delay; transferOwnership and renounceOwnership are present. A compromised owner key could redirect accrued tax.
- [info] Self-unlock and currency movement: The hook calls unlock and settle/take/mint/burn on the PoolManager and uses an unlockCallback, so it moves currency through pool accounting. Self-unlock is a common pattern but increases the surface area for misconfiguration.
Contract details
- Verified source
- No
- Bytecode size
- 16,724 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc6909-claims, moves-currency, ownable, return-delta, self-unlock
Pools using Hook 0x3e9b…40cc
- ETH / OAI (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today