Likely fee sharing hook on Robinhood Chain
Uniswap v4 Hook Contract 0x8835d467e8feb79aa555c1e591ba984af9438044 on Robinhood Chain · Fee sharing
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 0
What it does
This hook takes an owner-adjustable tax from swaps through its after-swap return delta and sends it to a treasury, so traders receive less output than the pool quote while LP liquidity in the locked position stays restricted until its unlock time.
This read was written for the hook 0x8835…8044 on Ethereum and reused here: the two run the same code.
How it works step by step
- Hook with afterSwap and afterSwapReturnDelta permissions, so it can take a share of each swap's output as a post-swap delta
- Tax rate taxBps is stored in slot 7 and can be changed by the owner through setTaxBps, bounded by a MAX_TAX_BPS constant
- Collected tax is directed to a treasury address (slot 6 offset 1) that the owner can set via setTreasury
- Pool initialization and a locked liquidity position are handled through initializePool and addLockedLiquidity, with a lock duration and unlock time
- Liquidity removal is gated by lock state (isLocked, unlockTime) and tracked via lockedLiquidity and liquidityBurned
- Contract is Ownable and includes sweep, collectFees and unlockCallback paths that move ERC20 tokens held by the hook
- Swap behaviour
- After each swap the hook computes a tax in basis points on the swap and returns that amount as a hook delta, so a portion of the trade output is diverted to the hook and then to the treasury. Swaps in either direction appear to be taxed by the same taxBps rate, though the exact direction-dependent logic cannot be confirmed from decoded bytecode alone.
- Liquidity behaviour
- Liquidity can be added to a locked position via addLockedLiquidity, with removal gated by the lock state and unlock time. Beforeadd and beforeremove callbacks are exposed in the selector list but their logic is not confirmed; the hook does not clearly modify liquidity beyond the locked-position mechanism.
- Fee behaviour
- The pool's static fee is used by the pool, and the hook adds a separate tax taken from swaps through the afterSwap return delta. The tax rate is taxBps, adjustable by the owner up to MAX_TAX_BPS, and the proceeds are routed to the treasury.
- Owner & admin controls
- The owner can call setTaxBps to change the tax rate up to MAX_TAX_BPS, setTreasury to change the recipient of collected tax, transferOwnership and renounceOwnership, and sweep to move tokens out of the hook. No pause or upgrade mechanism was identified in the decoded selectors.
Enabled Uniswap v4 callbacks
afterSwap, afterSwapReturnDelta
afterSwap is used to compute and take the tax on swap output; afterSwapReturnDelta allows the hook to return a delta that moves a share of the swap amount to the hook.
Security & trust assessment
Risk level: high, estimated (decoded bytecode, low confidence).
Who controls it: A single Ownable owner controls the tax rate, the treasury destination, token sweeping and ownership transfer, so a compromised or malicious key could raise taxes and extract hook-held funds.
Risk to user funds: The hook takes a percentage of swap output through the return delta and holds tokens in the contract, which the owner can sweep or redirect; traders pay the tax on every swap and LP funds in the locked position are restricted until unlock.
Security findings
- [high] Owner-adjustable tax rate: setTaxBps lets the owner change taxBps (slot 7), so the owner can raise the tax on every swap up to MAX_TAX_BPS, taking a larger share of trader output.
- [high] Owner can redirect tax and sweep tokens: setTreasury (slot 6) sets where collected tax goes, and sweep(address) can move tokens the hook holds, so a privileged key can divert accumulated funds.
- [medium] Hook takes tokens via return delta: afterSwapReturnDelta lets the hook take a share of swap output on each trade, so users receive less than the pool's quoted output.
- [info] Locked liquidity controls: Liquidity is locked for a duration with unlockTime and isLocked state; removal depends on lock status, which limits LP exit until the lock ends.
Contract details
- Verified source
- No
- Bytecode size
- 11,598 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc20, moves-currency, ownable, return-delta, self-unlock
Pools using Likely fee sharing hook
- ETH / PLANES (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today