WolfHook on Robinhood Chain

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

Volume (24h)
$0
Value locked (TVL)
<$0.01
All-time volume
$8.60M
Pools using this hook
2
Swaps (24h)
0 (0 traders)
Total swaps
16,914

What it does

A one-time WOLF token launchpad that sells WOLF against SPY in a price-band sale, then lets holders redeem WOLF back at a fixed rate from the proceeds reserve.

How it works step by step

  • Deploys the WOLF token, mints the full supply to the hook, and sets the pool pair against SPY on start.
  • Runs a sale over a 24-hour window in a narrow tick band with a 1% fee on buys, seeding the sale position with 100 billion WOLF.
  • Forwards accumulated sale-position fees in SPY to feeRecipient once at launch.
  • Closes the sale on the band or the deadline, withdraws the sale position, and sets a 2x ask position for the remaining WOLF burned to the dead address.
  • Redeems WOLF at a fixed price against the SPY reserve through a dedicated floor pool, burning redeemed WOLF.
Swap behaviour
During the sale, buys are allowed only within the sale band and before the deadline, with a 1% fee; sells are blocked by the band. After launch, the market pool trades with a 0% fee up to a limit price, and the floor pool lets holders exact-input sell WOLF for SPY at the fixed starting price, capped by the reserve.
Liquidity behaviour
Only the hook's own sale and ask positions can add liquidity (beforeAddLiquidity reverts unless launched or seeding, and always reverts on the floor pool). Liquidity is seeded in start() and withdrawn in launch(); there are no public liquidity provision or removal paths for users.
Fee behaviour
Market pool (dynamic-fee flag) overrides fee per swap: during the sale, buys (SALE_FEE) pay 1% and sells pay 0%; after launch the fee is 0%. Floor pool uses a 0% fee. The SPY fees collected from the sale position are forwarded once to feeRecipient at launch.
Owner & admin controls
No owner or admin role is present. feeRecipient is set once at construction and cannot be changed; the hook has no pause, upgrade or parameter-setter functions. Launch and start are permissionless one-shot actions. The WOLF token is minted entirely to the hook and has no mint function after construction.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeDonate, beforeSwapReturnDelta

beforeInitialize: restricts pool initialization to the hook itself. beforeAddLiquidity: locks liquidity so only the hook can add it, and blocks adds to the floor pool. beforeSwap: enforces the sale and redemption logic, selects the swap fee, and performs redemptions on the floor pool. afterSwap: enforces the price band during the sale and the market limit price after launch. beforeDonate: reverts to block donations. beforeSwapReturnDelta: lets beforeSwap return a delta that takes WOLF and pays SPY out of the hook's accounting during redemptions.

Security & trust assessment

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

Who controls it: There is no privileged key. The only one-time value set by the deployer is feeRecipient, which receives accumulated sale-position fees in SPY at launch. Nothing else can be changed after deployment.

Risk to user funds: The hook holds SPY reserve and WOLF from the sale and redeems WOLF for SPY at a fixed rate via beforeSwapReturnDelta. The reserve is capped by spyReserve and the pool balance check, so users can only withdraw what the reserve supports. Sale-position fees are forwarded to feeRecipient once at launch. The hook cannot be paused or drained by an admin key.

Security findings

  • [info] Fixed-price redemption backed by sale proceeds: The hook redeems WOLF at a fixed price (startSqrtPriceX96 squared, roughly 78,000 WOLF per SPY) against a SPY reserve funded by sale proceeds. Redemption is an exact-input sell against the floor pool and is capped by spyReserve, so holders can exit only up to the reserve.
  • [low] Sale can stall if no one buys: Once started, the sale can close only by reaching the price band or by timeout. launch() requires either the sale to have ended or the band to be hit, and it reverts with NothingSold if the price never moved. If nobody buys, the pool can stay in this state, but no user funds are at risk.
  • [low] Accounting depends on ordering of hook-managed positions: The sale-window fee is 1% on buys and the ask position is seeded with twice the sold WOLF. Accounting depends on the ordering of the hook's own position operations, so any deviation in pool state would affect redemption solvency. This is a complexity concern rather than an observed defect.
  • [info] Reentrancy and access guards present: The hook calls wolf.burn on leftover tokens and on redeemed WOLF, and uses _seeding and nonReentrant guards. No public function can move other users' funds or change the hook's state arbitrarily.

Contract details

Verified source
Yes (WolfHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
15,504 bytes
Upgradeable proxy
No
Detected patterns
erc20, launchpad, moves-currency, return-delta

Pools using WolfHook