LeshyClassicQuoteFeeHook on Robinhood Chain

Uniswap v4 Hook Contract 0xf9cfc1ed016a467675c8a79316ebf8882dc120cc on Robinhood Chain · Fee sharing · Verified contract

Volume (24h)
$83
Value locked (TVL)
$971
All-time volume
$443.96K
Pools using this hook
19
Swaps (24h)
1 (0 traders)
Total swaps
4,278

What it does

Adds a governed quote-asset treasury fee of up to 0.25% on each swap of a Leshy Classic token, routing it to a treasury address while the locked LP fee is unchanged.

How it works step by step

  • Enforces that only the registered initializer can initialize the pool with the expected token/quote shape and this hook
  • Computes a quote-denominated treasury fee from the fee controller's pattern or global pips, between 500 and 2500 pips
  • Takes the fee on swaps via beforeSwap or afterSwap return deltas, minting ERC-6909 claims held by the hook
  • Lets anyone trigger claimTreasuryFees, which redeems claims to the controller's current treasury address
  • Optionally accepts a user maximum fee via 32-byte hookData and reverts if the current fee exceeds it
Swap behaviour
On each swap where the quote asset is the specified or unspecified currency, the hook computes a treasury fee from the fee controller's effective pips for the pattern, enforces an optional user max fee from hookData, takes the fee as a positive hook delta (claim-minted to the hook), and reverts on partial fills where the pool amount does not match.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Charges a controller-governed treasury fee in the quote asset on every swap, between 0.05% and 0.25% (default by pattern override or global setting), as an additive hook delta on the quote side; the LP fee of the locked position is unchanged. Fee is minted as ERC-6909 claims to the hook and redeemable to the current treasury address.
Owner & admin controls
The registry owner (set at deployment) controls the fee controller's treasury address and global/pattern trading fees within 500 to 2500 pips, and can transfer controller ownership but not renounce it; the hook itself has no owner or pause and its registerPool is gated to the registered factory adapter. Ownership of the fee controller is not verified from the input, so the exact admin identity cannot be confirmed.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize restricts pool initialization to the registered initializer; beforeSwap and afterSwap compute and accrue the quote-denominated treasury fee; beforeSwapReturnDelta and afterSwapReturnDelta let the hook take a share of the swap amount as a positive delta claimed via PoolManager claims.

Security & trust assessment

Risk level: medium (verified source, high confidence).

Who controls it: The fee controller owner can raise the treasury fee up to 0.25% on all pools or per pattern and can change the treasury recipient, redirecting all future claimed quote-asset fees; the owner cannot move already-accrued claims except through the controller's current treasury address and cannot pause swaps.

Risk to user funds: The hook holds no user principal but mints claims for its share of quote-side swap amounts; those claims are settled to the treasury. Users are exposed to a fee up to 0.25% that the controller owner can change, and to the hook being a required pool hook for these tokens.

Security findings

  • [medium] Owner-adjustable swap fee taken via return delta: The hook takes quote-asset value on every swap via return deltas, and the rate and recipient are controlled by the fee controller owner. Fees are capped at 2500 pips.
  • [medium] Treasury redirection by controller owner: Accrued treasury claims are redeemable to whatever address the controller's treasury() returns, so changing the treasury redirects future redemptions.
  • [info] Redemption guarded: Claim redemption performs a balance check on the treasury after take and reverts on mismatch, and the claim is ordered through a commitment and reentrancy guard.
  • [info] Non-renounceable ownership: Ownership of the fee controller cannot be renounced, and the registry blocks renouncing ownership as well, so a privileged key remains in place.

Contract details

Verified source
Yes (LeshyClassicQuoteFeeHook)
Compiler
solc 0.8.36+commit.8a079791
Bytecode size
10,683 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, moves-currency, return-delta, self-unlock, tax

Pools using LeshyClassicQuoteFeeHook