Dynamic fee hook on Arc

Uniswap v4 Hook Contract 0x79f91ed8c4ac36b780e7d48fef5539883a7b20cc on Arc · Dynamic fee

Volume (24h)
$0
Value locked (TVL)
$0
All-time volume
$0
Pools using this hook
1
Swaps (24h)
0 (0 traders)
Total swaps
2

What it does

A Uniswap v4 fee hook for graduated Tripl v5 pools that charges a fixed fee on every swap and routes it to the fee vault, creator, holder staking and buyback lanes.

This read was written for the hook 0x7499…a0cc on Arc 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

  • Binds a market pool to fixed fee configuration at pool creation, callable only by the immutable factory.
  • Charges a total fee of up to 10 percent per swap, split across NFT, creator, holder, buyback and split lanes.
  • Takes buy fees from the input side and sell fees from the output side using beforeSwap and afterSwap return deltas.
  • Mints PoolManager ERC6909 quote claims for fees and records them in the fee vault and staking reward ledgers.
  • Optionally applies a 90 percent first-block buy tax on the launch block for tokens flagged for it.
  • Rejects all liquidity add, remove and donate operations.
Swap behaviour
beforeSwap charges the fee on quote-in buys and sets an expected exact input; afterSwap verifies the fill and charges the fee on quote-out sells through the output delta. Swaps require empty hookData and exact-input shape.
Liquidity behaviour
All liquidity add, remove and donate callbacks revert with UnsupportedSwap. Liquidity is not managed by the hook.
Fee behaviour
Fees are a fixed set of bps per pool (NFT lane 30 bps plus creator, holder, buyback and split lanes, total capped at 1000 bps). On buys (quote-in) the fee is taken from the input via beforeSwap return delta; on sells (quote-out) the fee is taken from the output via afterSwap return delta. First-block buy tax (9000 bps of the input) can be charged on the launch block when enabled. Fee is minted as PoolManager ERC6909 quote claims to the fee vault and staking contract and recorded in their ledgers.
Owner & admin controls
No owner or admin setters on the hook itself. Pool binding is restricted to the immutable factory via bindPool, which can only be called once per pool id. The hook has no pause, upgrade or parameter-change functions. Fee lane weights are fixed per pool at bind time.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize restricts initialization to the registered market for an enabled pool. beforeSwap takes the buy-side fee and any first-block protection fee by returning a positive specified delta and minting claims. afterSwap takes the sell-side fee by returning a positive unspecified delta and minting claims. beforeSwapReturnDelta and afterSwapReturnDelta are enabled so the hook can charge fees via deltas.

Security & trust assessment

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

Who controls it: No privileged owner key on the hook. Trust is placed in the immutable factory address that binds pools and in the PoolManager. Pool configuration, fee splits and recipients are fixed at bind time.

Risk to user funds: The hook takes swap fees from trader input or output via return deltas and mints ERC6909 claims to fee vault and staking contracts; it holds no user principal and cannot redirect funds beyond the fixed fee lanes. Users can be charged up to 10 percent per trade plus up to 90 percent on launch-block buys, and swaps can revert when exact-fill conditions are not met.

Security findings

  • [info] Restricted swap shapes: beforeSwap and afterSwap require hookData to be empty and only accept exact-input swaps (amountSpecified < 0). Swaps with hookData or exact-output swaps revert with UnsupportedSwap.
  • [low] Exact fill requirement may block some swaps: Buy-side swaps require the actual input delta to exactly match the expected amount computed in beforeSwap, otherwise PartialFill reverts. Any partial fill or fee-on-transfer behaviour blocks the swap.
  • [medium] Launch-block buy tax up to 90 percent: First-block protection charges a 90 percent tax on buy input during the launch block when the launch token flag is set, using an external launchBlock call to the token. This is a deliberate high-fee window for early buyers.
  • [info] No post-deployment fee or pause controls: Fee lanes are fixed at bind time and total at most 10 percent, but the constructor-validated hook permissions and factory binding are immutable, so there is no way for an admin to alter fees or pause swaps after deployment.

Contract details

Verified source
No
Bytecode size
8,163 bytes
Upgradeable proxy
No
Detected patterns
erc6909-claims, return-delta

Pools using Dynamic fee hook