PartyHook on Robinhood Chain
Uniswap v4 Hook Contract 0x8e75298a4fd5dccfff16a7404d4a1acc2ccaa8cc on Robinhood Chain · Dynamic fee · Verified contract
- Volume (24h)
- $167
- Value locked (TVL)
- $6.62K
- All-time volume
- $308.16K
- Pools using this hook
- 2
- Swaps (24h)
- 4 (4 traders)
- Total swaps
- 2,894
What it does
A single-deployment Uniswap v4 hook that charges a time-decaying launch fee (up to 3%) in the pool's quote currency, splitting it between the platform, token holders and the pool creator, while locking liquidity additions behind a launcher-controlled window.
How it works step by step
- Charges one linear-decay fee, from a start bps down to an end bps over a fixed duration, capped at 3% and 7 days.
- Takes the fee in the pool's quote currency as a swap delta and accrues it as ERC-6909 claims in the PoolManager.
- Permissionlessly sweeps accrued fees, sending 10% to the platform and splitting the remainder between holders and the creator.
- Locks liquidity additions for each pool, allowing at most two launcher positions in a single window that cannot be reopened.
- Lets a pool's author redirect its creator leg via setFeeRecipient, while the fee schedule itself is immutable.
- Parks failed payouts in an owed mapping so one blocked recipient cannot stall the sweep for everyone.
- Swap behaviour
- Each swap pays a decaying fee in the quote currency, taken in beforeSwap or afterSwap depending on direction and exact-input vs exact-output. Exact-output swaps that fill short revert instead of being charged on unfilled volume.
- Liquidity behaviour
- Adding liquidity is blocked unless the launcher has opened a window for that pool; each add spends one slot and the window closes permanently after at most two positions. Removing liquidity has no hook callback and is unrestricted.
- Fee behaviour
- A single decaying fee, linear from feeStartBps to feeEndBps over feeDuration (capped at 3% start and 7 days duration), charged in the pool's quote currency. The fee is taken as a swap delta: in beforeSwap when the quote is the specified currency, otherwise in afterSwap. It accrues as ERC-6909 claims in the PoolManager and is split on sweep: 10% to the platform, the remainder split between holders (dividendBps) and the creator as the rest. The pool's own LP fee is 0.
- Owner & admin controls
- Uniswap-wide: no owner, no pause, no upgrade path. Only the registered launcher can register pools and open a single liquidity window per pool (openLiquidityWindow, at most 2 slots, once per pool lifetime). Each pool's fee destination (feeRecipient) can be changed by that pool's author via setFeeRecipient, and the platform recipient rotates via a two-step propose/accept by its current holder only. Fee schedule, floor, dividend split and the 10% platform leg are fixed at registration and cannot be changed.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize: enforces that only the launcher may initialize pools on this hook. beforeAddLiquidity: enforces the one-shot liquidity window that acts as an LP lock. beforeSwap: takes the decaying fee in the quote currency on the specified side and returns a delta. afterSwap: takes the fee on the unspecified side, and on exact-output fills requires the swap to complete within the fee tolerance. beforeSwapReturnDelta and afterSwapReturnDelta: allow the hook to take its fee as a swap delta.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: No privileged owner key exists. The launcher can register pools and open liquidity windows, but cannot change fees or redirect funds. The platform recipient can redirect its own 10% leg via a two-step handover. Pool authors can redirect only their pool's creator leg and holders' leg destination via setFeeRecipient, not the fee amount.
Risk to user funds: The hook holds no user principal; it only holds claim-token fees in the PoolManager and transiently holds ETH during native payouts. Fees are charged only in the quote currency, and pool LPs are not charged a separate fee. Users are exposed to the fee schedule itself (at most 3% decaying), and traders in exact-output swaps may have the swap reverted if the fill is short.
Security findings
- [info] Permanent liquidity lock by design: Launch pools are locked to the launcher for adding liquidity; one slot-counted window per pool, opened once, prevents later LP additions and makes the lock permanent.
- [info] Fee ceiling enforced on-chain: The fee is capped at 3% in the hook itself, and fee duration is capped at 7 days, so a schedule cannot advertise a low floor while charging a high fee for years.
- [low] Full-fill requirement on fee-bearing swaps: Exact-output swaps that fill short are reverted rather than charged on unfilled volume, guarding against overcharging on volume that never traded.
- [info] Failed payouts isolated into claimable debts: sweep() is permissionless and only routes fees to pre-registered destinations, but a failing recipient transfer is parked in an owed mapping rather than reverting the sweep, so a single blocked address cannot lock everyone's fees.
- [low] Author can redirect fee destination: A pool author can point the creator leg and holders' leg at any address, including one that reverts; this affects only that pool's distribution, not user principal.
Contract details
- Verified source
- Yes (PartyHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 10,035 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, launchpad, moves-currency, return-delta, self-unlock
Pools using PartyHook
- ETH / PARTY (0.00% fee) — 24h volume $167, TVL $6.56K, 4 swaps today
- ETH / PARITY (0.00% fee) — 24h volume $0, TVL $63, 0 swaps today