QpullTaxHook on Robinhood Chain
Uniswap v4 Hook Contract 0x3536e961b166254e678ddf9f602cbc94d9009acc on Robinhood Chain · Fee sharing · Verified contract
- Volume (24h)
- $3.20K
- Value locked (TVL)
- $60.50K
- All-time volume
- $415.44K
- Pools using this hook
- 1
- Swaps (24h)
- 3 (2 traders)
- Total swaps
- 1,521
What it does
A fixed-rate 4% WETH trade tax on the QPULL/WETH pool that routes the fee to the Treasury, with early sells taxed higher and decaying, and launch-window buys limited to NFT pass holders with a cooldown and spend cap.
How it works step by step
- Charges a WETH fee on every swap of the canonical pool, sending it to the Treasury in afterSwap.
- Charges a flat 4% on buys and a sell tax that decays from 20% to 4% over the first 48 hours.
- Credits prize pack tickets and leaderboard points to the transaction signer on buys only.
- Gates buys during the first hour after pool creation to holders of an NFT launch pass, with a 2 minute cooldown and a per-buy WETH cap until a cumulative spend budget is reached.
- Restricts pool creation and liquidity additions to the QpullLiquidityLock contract and permanently disables liquidity removal.
- Exempts the Treasury's QpullWethAdapter from the tax on its conversion swaps.
- Swap behaviour
- Buys are taxed 4% in WETH and credit the game registries (prize packs and leaderboard points). Sells are taxed 20% at launch, decaying 4pp per 12 hours to 4% over 48 hours, and do not credit any game registry. During the first hour after pool creation, buys require an NFT pass held by tx.origin, and each wallet has a 2 minute cooldown and a per-buy WETH cap until its cumulative spend budget is used up.
- Liquidity behaviour
- Liquidity can only be added by the QpullLiquidityLock contract, which creates the canonical pool and seeds it in one transaction. All removals revert unconditionally, so launch liquidity is permanently locked in the pool. Other addresses cannot add liquidity.
- Fee behaviour
- Charges a 4% WETH fee on every swap of the canonical pool (buys always 4%). Sells decay from 20% to the 4% floor in 12 hour steps over the first 48 hours after pool creation. The fee is taken to the Treasury as WETH inside afterSwap, and game credit is min(WETH paid, fee * BPS / TAX_BPS) on buys only. Swaps made by the Treasury's QpullWethAdapter are exempt.
- Owner & admin controls
- No admin controls found. The contract has no owner, no setters and no upgrade path; TAX_BPS, the sell schedule constants, the gate duration and the buy cooldown are fixed by construction, and earlyBuyCapWei is an immutable set at deploy.
Enabled Uniswap v4 callbacks
afterInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
afterInitialize restricts pool creation to the canonical QPULL/WETH key created by the initializer, and stamps launchTime. beforeAddLiquidity restricts LP adds to the initializer. beforeRemoveLiquidity reverts for every caller. beforeSwap and afterSwap both return deltas: beforeSwap charges the WETH fee on the specified leg for exact-in buys and exact-out sells, and afterSwap charges it on the unspecified leg for exact-out buys and exact-in sells, taking it to the Treasury and crediting game registries on buys.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: No privileged key exists after deployment, so no single party can change fees, pause swaps, or withdraw funds. The only privileged actor at launch is the initializer contract, which is a fixed address and has no removal path.
Risk to user funds: The hook takes a fee of up to 20% of the WETH leg on early sells, and 4% otherwise, in every swap on the canonical pool. It cannot access principal or block withdrawals from unrelated pools, and it has no code path that moves other user funds. Traders who fail the launch gate cannot buy during the first hour.
Security findings
- [info] Launch-window buy gate and throttle: The launch holder gate reverts buys from wallets without an NFT pass during the first hour after pool creation, and a per-wallet cooldown and capped spend budget throttle buys in that window. These are intentional anti-sniper limits but restrict who can buy early.
- [low] Dependence on registry gas and try/catch behaviour: The 4% tax and the sell decay schedule are enforced in the fee path. If the registries run out of gas during a buy, the whole buy reverts with RecordOutOfGas. Registry logic faults only skip rewards (RecordFailed) and do not block swaps.
- [info] Hook moves tokens via return deltas: The hook can take WETH from every swap to the Treasury through take() and returns hook deltas on both specified and unspecified legs. It never holds user principal, but it does move pool value on every trade, and a failed fee take reverts the swap rather than letting it through untaxed.
- [info] Immutable and non-upgradeable: The contract is non-upgradeable and has no owner, so there is no proxy or admin upgrade risk. Liquidity is permanently locked, which means users cannot exit the canonical pool position through the hook.
Contract details
- Verified source
- Yes (QpullTaxHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 6,910 bytes
- Upgradeable proxy
- No
- Detected patterns
- launchpad, moves-currency, return-delta, tax
Pools using QpullTaxHook
- WETH / QPULL (0.30% fee) — 24h volume $3.20K, TVL $60.50K, 3 swaps today