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
- ETH / USDC (Dynamic fee) — 24h volume $6.32K, TVL $17.43K, 248 swaps today
- EURC / USDC (Dynamic fee) — 24h volume $2.40K, TVL $8.95K, 52 swaps today
- USDC / cbBTC (Dynamic fee) — 24h volume $367, TVL $4.18K, 58 swaps today
- ETH / cbBTC (Dynamic fee) — 24h volume $149, TVL $4.21K, 15 swaps today
- ETH / USDC (Dynamic fee) — 24h volume $0, TVL $0.32, 0 swaps today