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
- SPY / WOLF (Dynamic fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- SPY / WOLF (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today