SentryStockFeeHookV3 on Robinhood Chain

Uniswap v4 Hook Contract 0x35c0098836fa0d10a015a95bf02c16387814f0cc on Robinhood Chain · Launchpad · Verified contract

Volume (24h)
$127
Value locked (TVL)
$8.05K
All-time volume
$353.44K
Pools using this hook
153
Swaps (24h)
6 (3 traders)
Total swaps
5,416

What it does

A launch hook for a Sentry token pair that charges a time-decaying fee on swaps and sends the proceeds to holder reflections, the token creator, the treasury and locked liquidity.

How it works step by step

  • Pool creation is restricted to the factory, requires a dynamic fee and a registered base side, then records the launch timestamp.
  • Swap fee starts high and decays from startFee to endFee after a hold period, following a halving schedule.
  • Before reflectionStartDelay the fee goes to creator, treasury and LP; afterward it is split into holder reflections, creator, LP and treasury remainder.
  • Creator share is forfeited to treasury when no fee recipient is set.
  • LP share accrues in the base asset and compound() later mints locked full-range liquidity held by the hook.
Swap behaviour
Swaps where the base asset is specified have the current curve fee skimmed in the base asset via beforeSwap or afterSwap return deltas; swaps where it is not are passed through with a zero-fee override.
Liquidity behaviour
No liquidity callbacks. Accrued LP fees in the base asset are compounded by compound() once decay ends into permanently locked full-range liquidity owned by the hook.
Fee behaviour
Dynamic fee: curve starts at startFee, holds for holdDuration, then decays by halfLife steps to endFee. The swapper always pays the current curve rate, skimmed in the base asset via beforeSwap/afterSwap return deltas and split by window (early: creator, treasury, LP; late: reflections, creator, LP, treasury remainder). Whitelisted launch wallets get endFee on the buy side.
Owner & admin controls
No owner or pause controls found. Factory-only gate on setLaunchWhitelist and launch-time pool registration; fee parameters are immutable constructor values; no upgrade path; compound() is permissionless but its LP position has no withdrawal path.

Enabled Uniswap v4 callbacks

beforeInitialize, afterInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize restricts pool creation to the factory with dynamic fee and a registered base side. afterInitialize records launch time. beforeSwap and afterSwap skim the curve fee via return deltas. beforeSwapReturnDelta and afterSwapReturnDelta are enabled so the hook can take a share of swap amounts.

Security & trust assessment

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

Who controls it: No privileged owner in the hook, but the factory can register launch whitelists before initialization and sets the fee recipient and treasury addresses that receive fee shares. Fee parameters cannot be changed after deployment.

Risk to user funds: The hook takes base-asset value from swappers via return deltas and routes it to creator, treasury, token reflections and locked LP. It does not hold a withdrawable balance for users and cannot block swaps, but a bug in the take/settle accounting could misroute swap value.

Security findings

  • [medium] Return-delta fee skimming on swaps: Return-delta hooks take a fee of up to the curve rate on every swap of the base asset; swaps are not blocked, but the effective price moves with the fee, and the contract's own note says it is not yet independently audited.
  • [medium] Whitelist fee discount: Whitelisted launch wallets (set by the factory per pool) receive endFee instead of the curve rate on the buy side, creating a privileged fee path for those addresses.
  • [low] Trust in external token reflection callback: Reflection payouts send base tokens to the token contract and call notifyReward(), which depends on the external token contract behaving correctly; a malicious or buggy token could misbehave on this callback.
  • [info] Permanently locked LP liquidity: Compounded LP liquidity is minted to the hook with no withdrawal path, so the locked position is permanent by design.
  • [info] Immutable configuration: Constructor-set parameters are immutable and the hook address must match flag bits, so no runtime reconfiguration is possible.

Contract details

Verified source
Yes (SentryStockFeeHookV3)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
10,388 bytes
Upgradeable proxy
No
Detected patterns
access-control, dynamic-fee, launchpad, liquidity-management, moves-currency, return-delta, self-unlock

Pools using SentryStockFeeHookV3