SpcxStrategyHook on Robinhood Chain
Uniswap v4 Hook Contract 0xf7c46f4ddb5d6b8c6a040e19cf2064e832d32444 on Robinhood Chain · Dynamic fee · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $8.77K
- All-time volume
- $233.61K
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 1,784
What it does
Charges a decaying buy tax from 95% down to 10% and a flat 10% sell tax on the ETH/SPCXSTR pool, then splits the fee 90/10 between a treasury controller and a dev address.
How it works step by step
- Locks itself to the single ETH/SPCXSTR pool at initialization and records the launch timestamp.
- Charges a buy tax that starts at 95% and falls by 1% every 60 seconds to a floor of 10%.
- Charges a flat 10% tax on sells.
- Converts token-denominated fees into ETH via a nested swap on the same pool.
- Splits the collected ETH 90% to the controller treasury and 10% to dev.
- Grants the token transfer allowances needed for swap settlement and the initial liquidity load.
- Swap behaviour
- On every swap the hook computes a fee in bips (buy decays from 95% to 10%, sell is 10%), takes that amount from the swap's output currency via the pool manager, converts any token-denominated fee to ETH through a nested swap on the same pool, and distributes the ETH 90% to controller and 10% to dev. Exact-output swaps revert with ExactOutputNotAllowed.
- Liquidity behaviour
- afterAddLiquidity only grants the token a transfer allowance during the initial liquidity load, reverting with NotLoading otherwise. No remove-liquidity callbacks; LP positions are not taxed.
- Fee behaviour
- Charges a tax on the output currency of each swap: buys start at 95% (9500 bips) and decay by 1% per 60 seconds down to a flat 10% floor; sells are a flat 10%. The bootstrapper address is exempt. 90% of the taken fee goes to the controller and the remaining 10% to dev, with token-denominated fees swapped to ETH first.
- Owner & admin controls
- Owner (Solady Ownable, two-step ownership handover) can set the controller and dev fee recipients, and set the bootstrapper address once. Owner cannot change the tax schedule, fee split or permissions in code. Ownership can be transferred or renounced.
Enabled Uniswap v4 callbacks
beforeInitialize, afterAddLiquidity, afterSwap, afterSwapReturnDelta
beforeInitialize locks the hook to the single ETH/SPCXSTR pool and stamps the decay start time. afterAddLiquidity grants transfer allowance to the token during the initial load. afterSwap charges and distributes the tax and grants swap settlement allowance. afterSwapReturnDelta lets the hook take the fee amount from the swap delta.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The owner can redirect the 90% treasury share and the 10% dev share to any address via setController and setDev, and can designate the one-time bootstrapper that is tax-exempt. The owner cannot raise or alter the tax rate itself, so the owner cannot directly cause a higher tax, but a compromised owner could redirect all fee flow.
Risk to user funds: The hook takes the swap fee from the swap delta and holds ETH only transiently or as a deferred ERC-6909 claim on the pool manager, so it does not custody user principal. Users pay the tax on swap output, and an owner-set recipient change determines where that tax ends up. The token transfer gate allowance is granted per swap, not held.
Security findings
- [medium] Owner can redirect fee recipients: setController and setDev allow the owner to redirect all future fees to arbitrary addresses. The source comments note this is intended and owner is meant to sit behind a multisig and timelock.
- [low] One-time tax-exempt bootstrapper: setBootstrapper is settable once by the owner and makes that address's swaps tax-exempt (fee forced to zero), so a malicious bootstrapper could trade fee-free.
- [info] Timestamp-based decay schedule: Fee on buys is derived from block.timestamp relative to deployedAt, so the schedule is deterministic and not manipulable by the owner.
- [info] Deferred ETH fee claims: Fee ETH that the pool manager cannot cover is held as an ERC-6909 claim (pendingEthFees) and redeemed later, so buys avoid reverting but fees may be delayed.
- [info] No upgrade path visible: Standard Ownable with handover, plus a nonReentrant redeem and a unlockCallback restricted to the pool manager; no proxy or upgrade path is visible.
Contract details
- Verified source
- Yes (SpcxStrategyHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 10,969 bytes
- Upgradeable proxy
- No
- Detected patterns
- ownable, return-delta
Pools using SpcxStrategyHook
- ETH / SPCXSTR (0.00% fee) — 24h volume $0, TVL $8.77K, 0 swaps today