EvmgenHook on Robinhood Chain

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

Volume (24h)
$11.38K
Value locked (TVL)
$3.64K
All-time volume
$11.38K
Pools using this hook
1
Swaps (24h)
98 (55 traders)
Total swaps
98

What it does

Charges a configurable buy and sell fee on swaps of the MYTHASE token against ETH in a single pool and forwards the collected ETH to a fee receiver, with owner-controlled trading pause and blacklist.

This read was written for the hook 0x9079…20cc on Ethereum and reused here: the two share a code shape, so constants such as fees, owners and addresses can differ.

How it works step by step

  • Restricts the pool to native ETH paired with the MYTHASE token at a fixed LP fee and tick spacing.
  • Charges separate buy and sell fees in basis points (default 500 bps each, cap 9900 bps) on the ETH leg of each swap.
  • Takes collected fees from the pool manager and forwards them to the immutable fee receiver as ETH.
  • Parks fees as minted claims in parkedFees when the pool manager lacks ETH, to be settled later via settleParkedFees.
  • Gates swaps behind a trading-enabled switch and a blacklist maintained by authorized operators.
Swap behaviour
Only pools pairing native ETH with the configured token at a fixed fee and tick spacing are allowed. When trading is enabled, each swap has a fee in basis points taken on the ETH leg through return deltas (buys on gross input, sells on net output), collected by the hook and forwarded to feeReceiver. Swaps revert when trading is disabled, when the sender is blacklisted, or when the fill does not match the expected amount.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Owner or authorized operators set buy and sell fee rates in basis points (cap 9900 bps, default 500 bps each). Fees are taken from the ETH leg of each swap: buys are charged on the gross input and sells on the net output. Collected fees are taken from the pool manager and forwarded to feeReceiver with ETH; if the pool manager lacks ETH balance the fee is minted as a claim and parked in parkedFees until settleParkedFees is called.
Owner & admin controls
Owner (Ownable2Step, two-step transfer, renounceOwnership available) and feeReceiver act as principals; principals can grant/revoke authorized operators, and authorized callers can updateFees (buy/sell up to 99%), disableFees, setTradingEnabled (pauses/opens all swaps), blacklist/unblacklist any non-protected address (blocks its swaps), and emergencyWithdraw ETH, ERC20 and ERC721 from the hook. Protected addresses cannot be blacklisted. No upgrade proxy is present.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize restricts pools to native ETH paired with the configured token at a fixed LP fee and tick spacing. beforeSwap reverts when trading is disabled and, for the specified leg, returns a return delta equal to the fee amount. afterSwap reverts if the swap did not fill as expected and returns an unspecified-leg return delta equal to the fee on the other side, which the hook collects. beforeSwapReturnDelta and afterSwapReturnDelta allow these deltas to take currency from the swap.

Security & trust assessment

Risk level: high, estimated (decoded bytecode, high confidence).

Who controls it: Owner or any authorized operator can switch trading on or off, set fees up to 99% in either direction, blacklist arbitrary holders so their swaps revert, and withdraw any ETH, ERC20 or ERC721 held by the hook. The fee receiver is immutable and is itself a principal.

Risk to user funds: The hook uses return deltas to take ETH fee amounts from every swap and can hold ETH via parked fees or direct transfers. Principals can withdraw any ETH, ERC20 or ERC721 held by the hook. Operators can change fees and block trades, so user swaps are exposed to changes in fee rates and to blacklisting or pausing.

Security findings

  • [high] Privileged fee and trading control: grantAccess lets principals authorize arbitrary operators, and authorized operators can set fees up to 99% per side and toggle trading, so a compromised operator key can drain value from every trade.
  • [high] Swaps can be blocked for specific addresses or globally: blacklist blocks swaps by any non-protected address and setTradingEnabled can halt all swaps, so users cannot trade when the owner chooses.
  • [medium] Emergency withdrawals can move hook-held assets: emergencyWithdrawEth, emergencyWithdrawERC20 and emergencyWithdrawERC721 let principals move assets the hook holds, including any fees parked in the hook.
  • [medium] Extreme fee cap and strict fill check: Fees can be set to 99%, and the afterSwap IncompleteFill check reverts swaps that do not settle exactly, which may cause failed trades under unusual pool conditions.
  • [info] Ownership and upgrade model: Ownership uses Ownable2Step with a two-step transfer, and the hook does not appear to be upgradeable.

Contract details

Verified source
Yes (EvmgenHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
7,920 bytes
Upgradeable proxy
No
Detected patterns
access-control, dynamic-fee, erc20, moves-currency, ownable, return-delta, self-unlock

Pools using EvmgenHook