SinjohMarketHook on Robinhood Chain
Uniswap v4 Hook Contract 0xafa33d3cc1073c3c80b4ac8a10a9b2b152f2eaec on Robinhood Chain · Liquidity management · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 23 (15 traders)
- Total swaps
- 23
What it does
Traders pay a creator-set tax on every buy and sell taken by the hook, with a launch surcharge in the early window and an extra sell surcharge when the price falls to the threshold, and liquidity providers cannot add or remove liquidity directly because the hook owns and rebalances all of it.
How it works step by step
- Owns all pool liquidity itself: the launch or migration curve, managed ranges, temporary deep-depth and floor-band positions are placed and removed by the hook, and external LPs are blocked
- Charges backing-denominated taxes on the filled amount of buys and sells, splitting them into platform, creator, automation, floor and treasury buckets
- Recenters live liquidity to an anchor price when the price moves 490 ticks, and folds ranges to keep at most eight
- Places temporary treasury depth for large sells below the live band and a temporary floor band when sells reach the floor, with seller-paid rounding
- Runs public maintenance jobs (creator payout, bucket moves, floor raise, yield step, idle deposit) paid from an automation bucket
- Authorizes exits on Sinjoh-token legs through the token's exit gate for newly earned or prepaid output
- Swap behaviour
- Buys and sells pay a tax computed on the actual fill: exact-input buys tax the gross input (re-grossed if the pool fills less), exact-output sells gross up the requested backing. Sell surcharge may apply when the end price is at or below the threshold, adding to the sell tax; a launch surcharge also applies during the launch window on non-migration markets. Exact-output buys and exact-input sells are charged on the unspecified side via return deltas. Swaps can revert on exact-output shortfalls, swap reentry, or insufficient fill.
- Liquidity behaviour
- Direct liquidity additions and removals revert (LiquidityNotAllowed); only the hook places and removes positions internally. Donations revert.
- Fee behaviour
- Pool fee is zero; the hook charges a dynamic tax through beforeSwap return deltas. The rate is a creator-set model (static, or market-cap based) plus a launch surcharge that decays over time and a conditional sell surcharge. Tax is routed to platform, creator destination, automation, and floor or treasury buckets; floor-reaching sellers also pay rounding losses.
- Owner & admin controls
- Creator (per market, not a protocol owner) can change the fee destination, lower static rates or switch to static rates within current bounds, disable the sell surcharge, propose or renounce creator succession and record activity. Governance can execute a creator takeover after a delay. The factory is the only caller for registration and placement. Fee recipient is set in settings. No pause or upgrade function was seen in the visible ABI.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeDonate, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize: validates the pool is the pending registration and the opening price. beforeAddLiquidity and beforeRemoveLiquidity: block external liquidity. beforeDonate: blocks donations. beforeSwap: gates swaps, computes and returns the tax delta, places temporary sell depth and floor band. afterSwap: settles the tax, credits buckets, recenters and folds ranges, authorizes exits. beforeSwapReturnDelta and afterSwapReturnDelta: let the hook take the tax in the unspecified currency.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, medium confidence).
Who controls it: The creator key controls fee destination, tax rates within bounds and succession for one market; governance controls takeover for any market. Neither can directly drain pool positions, but both shape user costs and where tax goes.
Risk to user funds: The hook and its vault hold backing claims, floor cash, treasury and token inventory for the pool, and can move them through the managed positions, floor band, deep depth and bucket moves. Users' swap proceeds depend on those reserves being correct; unverifiable library logic adds uncertainty.
Security findings
- [info] Hook takes tax through return deltas: beforeSwap and afterSwap return deltas take a tax from every swap on the managed pool, so traders pay the hook's rate by design.
- [medium] Creator can set rates and destination: The creator can switch rates to static within bounds, lower rates, and set the fee destination to any non-zero address other than the hook; a creator can divert the creator bucket to an address they control.
- [medium] Governance takeover can reassign creator: Governance can replace a market's creator and, when the destination is a direct address, reassign the fee destination to the new creator after the outgoing creator's payout attempt.
- [medium] Hook controls inventory and floor reserves: Floor cash, treasury and inventory are held and moved by the hook and its vault; a bug in the recenter, band or coverage logic could misstate or lock reserves. Source for several libraries was omitted, so this could not be fully verified.
- [low] Swap gating can revert: A swap reverts when it is reentered, does not fill, or the tax consumes the whole input; a paused or misconfigured market can block trades.
Contract details
- Verified source
- Yes (SinjohMarketHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 48,369 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, erc20, liquidity-management, moves-currency, return-delta, self-unlock