SentryInkXStockFeeHook on Ink

Uniswap v4 Hook Contract 0x18195c33d8150b2e7f5166fc79e29a6c2b1fb0cc on Ink · Launchpad · Verified contract

Volume (24h)
$0
Value locked (TVL)
$0
All-time volume
$0
Pools using this hook
96
Swaps (24h)
20 (6 traders)
Total swaps
7,253

What it does

A launch-pool fee hook that decays swap fees from 40% to a 2% floor over time and skims 25% of that fee as reflections to token holders or treasury.

How it works step by step

  • Records the pool launch timestamp in afterInitialize
  • Applies a dynamic LP fee that holds at start fee, then halves every half-life to an end-fee floor
  • Gives launch-whitelisted buyers the floor fee
  • Takes 25% of the fee in the base currency via return deltas each swap
  • Sends reflections to the token via notifyReward, or to treasury during the start delay
  • Restricts swap senders to the configured router and quoter
Swap behaviour
On each swap the hook checks the sender is the router or quoter, returns a dynamic fee override, and takes 25% of the currentFee on the base-currency amount via a return delta, notifying the token contract for holder rewards.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Pools use a dynamic LP fee that starts at startFee, holds for holdDuration, then halves every halfLife down to endFee (2.00% floor). Whitelisted buyers pay endFee. Each swap skims REFLECTION_SHARE_BPS (25%) of the currentFee on the base-currency amount as a reflection, paid to holders via notifyReward or to treasury during reflectionStartDelay.
Owner & admin controls
Owner (set to tx.origin at deploy) can transfer ownership and set the swapRouter address, which gates who may call swaps; the factory controls launch whitelist registration per pool. No pause function and no upgrade mechanism found; startFee, endFee, durations and the pool manager are immutable.

Enabled Uniswap v4 callbacks

beforeInitialize, afterInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize: restricts pool initialization to the factory and requires a dynamic fee and a registered base side. afterInitialize: records the launch timestamp. beforeSwap: gates swap senders, sets the dynamic fee override and computes the base-currency reflection delta. afterSwap: takes the reflection when the base currency is unspecified. beforeSwapReturnDelta and afterSwapReturnDelta: allow the hook to take a portion of swap amounts as reflections.

Security & trust assessment

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

Who controls it: The owner can set swapRouter to any address (or zero to disable the gate), changing who may swap; it cannot change fees or take user funds directly. The factory can register launch whitelists for pools before launch.

Risk to user funds: Not stated.

Security findings

  • [medium] Owner-controlled swap router gate: When swapRouter is set, only that router and the configured quoter can call swaps through the hook; direct PoolManager swaps from other senders revert, and the owner can change the router.
  • [info] Return-delta reflection skim: The hook takes up to 25% of the currentFee from every swap through return deltas and sends it to token holders or treasury; this is intended tokenomics but is a material cost to traders.
  • [low] tx.origin based whitelist: Launch whitelist is keyed on tx.origin, so the whitelist check depends on the originating EOA rather than the direct caller.
  • [low] Single-step ownership transfer: Owner is set to tx.origin at deployment and ownership is transferable with no timelock or two-step process.

Contract details

Verified source
Yes (SentryInkXStockFeeHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
5,268 bytes
Upgradeable proxy
No
Detected patterns
access-control, dynamic-fee, launchpad, moves-currency, ownable, return-delta

Pools using SentryInkXStockFeeHook