NFTStrategyHook on Ethereum

Uniswap v4 Hook Contract 0xa16026a28aa581aa96713d20c608da7f8db86444 on Ethereum · Dynamic fee · Verified contract

Volume (24h)
$168
Value locked (TVL)
$10.59K
All-time volume
$143.38K
Pools using this hook
1
Swaps (24h)
2 (2 traders)
Total swaps
919

What it does

A Uniswap v4 hook for NFTStrategy ETH/token pools that charges a dynamic trading fee and routes it to fund NFT purchases, $IMD buy-and-burn and a fee address.

How it works step by step

  • Charges a time-decaying buy fee from 99% down to the default fee, and a flat default fee on sells.
  • Rejects exact-output swaps to keep the fee calculation on exact-input amounts.
  • Takes the fee from the swap delta via the pool manager and forwards it in the same transaction.
  • Converts token-denominated fees to ETH through a one-off swap in the same pool.
  • Splits fees 87% to the NFTStrategy NFT pot, 10% to the factory for $IMD buy-and-burn, and 3% to the fee address.
  • Deposits ETH or WETH bridged in from another chain into the NFT pot.
Swap behaviour
On each swap, after the swap it rejects exact-output orders, takes the fee in the input currency (99% decaying to 10% for early buys, 10% for sells and later buys, lowerable to 1%), then converts token fees to ETH and splits the proceeds 87/10/3 between the NFTStrategy, the factory and the fee address, depositing any bridged ETH or WETH into the NFT pot and emitting Trade and HookFee events.
Liquidity behaviour
afterAddLiquidity only runs during factory loading and grants the NFTStrategy a transfer allowance equal to the token amount added; it does not alter liquidity. No remove-liquidity callbacks.
Fee behaviour
Sells and buys after the launch window pay defaultFee (10% at deployment, lowerable by owner to no less than 1%). Buys in the early window pay a fee decreasing 100 bps per minute from 99% down to defaultFee. Fees are taken from the swap output in the input currency via manager.take and then split: 87% to the NFTStrategy as NFT buy pot, 10% to the factory for $IMD buy-and-burn, 3% to feeAddress (or the factory once renounced, making 13% to $IMD). Token-denominated fees are swapped to ETH first.
Owner & admin controls
Owner of the NFTStrategyFactory (via the launcher) can call lowerFee to reduce defaultFee down to MIN_FEE (1%) and cannot raise it; can call updateFeeAddress until renounced; can renounce the fee address share into $IMD buy-and-burn permanently (callable by feeAddress or factory owner). No pause, upgrade proxy, or fee raise path found in the verified source.

Enabled Uniswap v4 callbacks

beforeInitialize, afterAddLiquidity, afterSwap, afterSwapReturnDelta

beforeInitialize restricts pools to ETH/token and only allows initialization while the factory is loading liquidity, recording the collection's deployment time for the fee schedule. afterAddLiquidity grants transfer allowance to the NFTStrategy during loading. afterSwap rejects exact-output swaps, takes the dynamic fee, distributes it, emits Trade and HookFee events, and optionally deposits bridged ETH/WETH into the NFT pot. afterSwapReturnDelta lets the hook return the fee amount as a delta so the pool settles it to the hook.

Security & trust assessment

Risk level: medium (verified source, high confidence).

Who controls it: The factory owner can lower the trading fee to 1% at any time, which reduces revenue but does not directly harm traders. The owner can also redirect the feeAddress share until it is renounced; after renouncement the share goes to the factory for $IMD buy-and-burn and cannot be changed. The owner can change the NFTStrategy-related flow via the launcher; the hook itself has no withdrawal function for arbitrary funds.

Risk to user funds: The hook takes the swap fee as currency delta and holds it transiently, forwarding it to the NFTStrategy, factory and fee address within the same transaction. It can hold ETH bridged in and forward it to the NFT pot. It does not hold a persistent user balance and has no function to withdraw user funds. Users are exposed to the fee schedule and to exact-input-only routing rather than to custody risk.

Security findings

  • [info] Exact-output swaps disabled: Exact-output swaps revert in afterSwap, so routers must use exact-input swaps.
  • [medium] Very high early buy fees: Early buy fees start at 99% and fall 1% per minute after deployment, so early buyers pay almost all of the input. This is by design but can cause large losses for users who buy without checking the fee.
  • [low] External calls during afterSwap: The hook calls external NFTStrategy contracts (addFees, increaseTransferAllowance) and swaps through the pool manager during afterSwap, and it unwraps WETH and forwards ETH. Reentrancy is guarded only on depositBridgedFees, not on the swap path.
  • [info] Owner can lower trading fee: The owner can lower defaultFee to MIN_FEE (1%), which lowers the fee revenue of the NFT pot and the $IMD buy-and-burn; the fee cannot be raised.

Contract details

Verified source
Yes (NFTStrategyHook)
Compiler
solc 0.8.30+commit.73712a01
Bytecode size
7,785 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, moves-currency, return-delta

Pools using NFTStrategyHook