Fee sharing hook on Base

Uniswap v4 Hook Contract 0xfad27bc5ef16a0a2aa3049953c25a48e8858b0c0 on Base · Fee sharing

Volume (24h)
$9.24K
Value locked (TVL)
$34.77K
All-time volume
$998.26K
Pools using this hook
5
Swaps (24h)
373 (101 traders)
Total swaps
40,699

What it does

A Uniswap v4 hook that appears to capture arbitrage opportunities on pool swaps and direct profit to an owner-configured distributor, with owner-adjustable fees, but its exact mechanics cannot be fully confirmed without source.

How it works step by step

  • Records pool keys and configuration on initialization (beforeInitialize and afterInitialize).
  • Reads a default fee and per-tick fee mapping to set swap fees (getFee, setDefaultFee).
  • Runs arbitrage logic around swaps through beforeSwap and afterSwap, bounded by call gas budget and minimum gas left.
  • Sends arbitrage execution to an owner-configured MEV router and executor.
  • Forwards profit to an owner-configured profit distributor.
  • Supports donations through beforeDonate and afterDonate selectors that forward to the pool.
Swap behaviour
beforeSwap and afterSwap run on every swap; beforeSwap reads fee configuration and afterSwap uses gas-budget and profit-related parameters, consistent with an arbitrage step after swaps.
Liquidity behaviour
Has beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity selectors; no custom liquidity accounting is confirmed, so behaviour is not fully determined.
Fee behaviour
The hook stores a default fee and a per-tick fee mapping (getFee, setDefaultFee, and an internal fee setter selector 0xc2b7698c); swaps read these values, and profit from arbitrage is passed to a profit distributor, which suggests fees or arbitrage proceeds are routed to a distributor, but the exact split cannot be confirmed from bytecode alone.
Owner & admin controls
Owner (two-step ownership with pendingOwner, acceptOwnership, transferOwnership, renounceOwnership) can set the default fee, MEV executor, MEV router, profit distributor, call gas budget and minimum gas left, and can run or redirect arbitrage through runArbitrage; the owner can also upgrade the proxy implementation.

Enabled Uniswap v4 callbacks

beforeInitialize, afterInitialize, beforeSwap, afterSwap

beforeInitialize and afterInitialize record pool keys and configuration; beforeSwap reads fee configuration and afterSwap reads gas and budget parameters to support arbitrage execution; the donate-related selectors indicate donations are forwarded to the pool.

Security & trust assessment

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

Who controls it: The owner controls the executor and router that receive arbitrage calls, the profit distributor address and fee parameters; a malicious or compromised owner could redirect profits or swap flow to a malicious router or executor, and could upgrade the implementation to change any hook logic.

Risk to user funds: The hook can take pool value through arbitrage and forward profit to a distributor set by the owner, and can route liquidity-related and donated funds through an owner-selected router and executor; because the owner can upgrade the implementation, the hook could in principle hold or move user funds in ways not visible in the current bytecode review.

Security findings

  • [high] Upgradeable proxy controlled by owner: The proxy delegates all calls to an implementation that the owner can presumably replace, so the hook's behaviour is not fixed and could change.
  • [high] Owner-set router and executor receive arbitrage flow: setMevxRouter and setMevxExecutor let the owner point arbitrage execution to arbitrary contracts that receive pool-related calls and funds.
  • [medium] Owner can redirect profit distribution: setProfitDistributor sets the address that receives arbitrage profit; the owner can redirect proceeds at will.
  • [medium] Arbitrage entry point access unclear: runArbitrage is an externally callable nonpayable function that moves pool funds through the hook; its access restrictions could not be confirmed without source.
  • [low] Owner can change fees: setDefaultFee and fee mapping setters allow the owner to change pool fees, which can affect traders' costs.

Contract details

Verified source
No
Bytecode size
2,739 bytes
Upgradeable proxy
Yes
Detected patterns
donates, ownable, upgradeable

Pools using Fee sharing hook