DodoAggregator on Arbitrum

Uniswap v4 Hook Contract 0x2e6a2c928edcb90634f6b690495192005b6ee888 on Arbitrum · Dynamic fee · Verified contract

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

A Uniswap v4 hook on Arbitrum that appears to set a custom fee on swaps and routes some trades through an external DODO pool, with logic that can take or settle currency during swaps.

How it works step by step

  • Stores pool parameters during beforeInitialize
  • Applies custom logic in beforeSwap with return deltas to adjust swap amounts
  • Charges a configurable fee in pips with an exemption list
  • Routes or quotes trades against an external DODO pool
  • Holds balances and exposes sweepDust to move leftover tokens
Swap behaviour
beforeSwap is implemented and beforeSwapReturnDelta is enabled, so the hook can alter swap amounts, take or settle currency, and quote or route trades toward the external DODO pool.
Liquidity behaviour
beforeAddLiquidity and afterRemoveLiquidity-related selectors exist; beforeRemoveLiquidity and afterAddLiquidity are present as well, and pseudoTotalValueLocked reports a value for a pool id, suggesting custom accounting around liquidity, but no concrete logic is confirmed.
Fee behaviour
Reads a stored feePips value and exposes MAX_FEE_PIPS and FEE_PIPS_DENOMINATOR, with an isFeeExempt check and exempt0 to exempt3 addresses, suggesting a fee charged on swaps with exemptions for certain addresses. Exact fee arithmetic cannot be confirmed without source.
Owner & admin controls
Owner-style functions visible: sweepDust(address) is nonpayable and callable by any caller as dispatched; no owner getter or pause selector identified. Parameters such as feePips and exempt addresses are readable; whether they can be changed cannot be confirmed from the decoded selectors alone.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap, beforeSwapReturnDelta

beforeInitialize stores pool parameters into storage slots 1 to 4; beforeAddLiquidity and beforeSwap run custom logic; beforeSwapReturnDelta indicates the hook can alter swap amounts and take or settle currency via take, settle, sync and balanceOf calls.

Security & trust assessment

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

Who controls it: sweepDust is callable and moves token balances; if its recipient logic is not restricted, any caller could trigger token transfers out of the hook. Trusted router and vault addresses are stored, so their configuration matters.

Risk to user funds: The hook can hold and move currency through take and settle during swaps and can transfer dust balances via sweepDust, so funds routed through this hook are exposed to its logic and any privileged setters.

Security findings

  • [high] Return delta controls swap amounts: The hook is permissioned for beforeSwapReturnDelta and calls take, settle and sync, so it can take or give currency on swaps, changing amounts users receive.
  • [medium] Unverified dust sweep function: sweepDust(address) is a nonpayable external function that transfers balances held by the hook; access control could not be verified from the decoded bytecode.
  • [medium] Fee parameters may be adjustable: Fee and exemption parameters are stored in slots and readable; some settings may be writable by a privileged key, which would allow fee changes affecting traders.
  • [info] External pool dependency: The contract references dodoPool, sellBase and sellQuote selectors, indicating integration with an external DODO pool that the hook trades against.

Contract details

Verified source
Yes (DodoAggregator)
Compiler
solc 0.8.37+commit.f401782d
Bytecode size
14,913 bytes
Upgradeable proxy
No
Detected patterns
liquidity-management, moves-currency, return-delta

Pools using DodoAggregator