Retrofit on Robinhood Chain

Uniswap v4 Hook Contract 0x2e7f2ce88e30b8c6ccd619935591bdb342cf2888 on Robinhood Chain · Fee sharing · Verified contract

Volume (24h)
$0
Value locked (TVL)
$0
All-time volume
$0
Pools using this hook
8
Swaps (24h)
2 (1 traders)
Total swaps
2

What it does

Retrofit lets any v4 router swap against an existing Pons coin or v4 pool, with each trade paying a combined protocol and royalty fee on the ETH side and a burn on the other side, while liquidity deposits are not allowed.

How it works step by step

  • Makes Pons V2 bonding-curve swaps and graduated v4 pools reachable through Uniswap v4 routers by executing the swap on the source inside beforeSwap and returning the result as a BeforeSwapDelta
  • Takes a fee on every swap (protocolBps plus a per-fitting royaltyBps, both in basis points) and splits it between a protocol balance and a royalty balance owed to a fitting's royaltyTo address
  • Takes a burn (burnBps per fitting) of the non-fee side of each swap and sends it to the dead address 0x...dEaD
  • Lets anyone create a fitting pool on top of a Pons coin or an existing v4 pool, optionally paying a fixed burn of the project token (fitBurn)
  • Uses ETH protocol fees to buy and burn the project token via burnBuy, at most once per hour and up to burnBuyCap per call
  • Blocks all liquidity additions (beforeAddLiquidity always reverts) so the pools hold no liquidity of their own
Swap behaviour
Every swap on a Retrofit pool is routed to the source (the Pons bonding curve while the coin is on it, otherwise the graduated v4 pool or another v4 pool) and the hook returns a delta that cancels the core swap. The fee side is ETH for Pons pools: buys pay the fee on the ETH input, and sells pay it on the ETH output. The burn is taken from the other side. Exact-output swaps are rejected on the curve. Swaps revert if the source is in its graduation gap.
Liquidity behaviour
Adding liquidity is blocked: beforeAddLiquidity reverts with LiquidityNotAllowed. Removing liquidity has no hook callback and the pools hold no liquidity, so there is nothing to remove.
Fee behaviour
Total fee is protocolBps (currently 10 bps, capped at 30) plus the fitting's royaltyBps (capped at 50). The fee is split pro rata: protocolBps goes to protocolFees, the remainder to the fitting's royalty recipient. A separate burnBps (capped at 200) is taken from the other currency and burned. Fees are set by the owner for protocolBps and by each fitter for royalty and burn at creation time; the pool's own static fee field is only an identifier.
Owner & admin controls
A single owner (transferable with a two-step pendingOwner flow) can: set protocolBps up to 30 bps, set the token (one-time, which fixes the burn-buy target), set fitBurn (the fee a fitter pays in project tokens, applied to all future fittings), set burnBuyCap, and sweep non-ETH protocol fees to any address. The owner cannot touch royalties owed to fitting recipients, cannot pause swaps, and the contract is not behind a proxy in the provided source.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap, beforeSwapReturnDelta

beforeInitialize: registers fitting pools and creates Pons base pools so the PoolManager accepts them. beforeAddLiquidity: always reverts to block liquidity. beforeSwap: executes the swap on the source and returns the fee and burn adjustments through beforeSwapReturnDelta.

Security & trust assessment

Risk level: medium (verified source, high confidence).

Who controls it: The owner key can raise protocolBps up to 30 bps on all pools, change the fitBurn price for future fittings, set burnBuyCap, and sweep non-ETH protocol fees. It cannot seize royalties, pause swaps directly, or redirect burns, which go to the dead address.

Risk to user funds: The hook holds protocol fees and royalties in the PoolManager accounting and in its own protocolFees and royalties mappings until claimed or swept. Swappers' funds pass through the source curve or pool; the hook does not hold user principal beyond the swap. Owner sweep can only move non-ETH protocol fees, not royalties or ETH.

Security findings

  • [medium] Owner can raise protocol fee: setProtocolBps lets the owner raise protocolBps up to MAX_PROTOCOL_BPS (30 bps) at any time, applying to all existing pools immediately since the fee is read on every swap. Combined with royaltyBps (up to 50) and burnBps (up to 200), total extraction per swap is bounded but can be changed without notice.
  • [info] Hook takes tokens via return deltas: The hook uses beforeSwapReturnDelta and poolManager.take to pull fee and burn amounts from the PoolManager on every swap, so user swap outcomes depend on protocol-controlled deltas rather than only on pool liquidity.
  • [low] Owner can sweep non-ETH protocol fees: sweep lets the owner transfer any non-ETH protocolFees balance to an arbitrary address; ETH protocol fees are reserved for burnBuy, and royalties are segregated per recipient.
  • [low] Owner sets fitBurn and token: The owner can set fitBurn to any value (raising the cost of creating fittings) and sets the token once, which determines where burnBuy spends ETH. Setting token is irreversible and only checked against zero.
  • [info] Swap availability depends on source contract: Swaps call into the Pons curve and external v4 source hooks (srcHooks). If the curve is in a graduation state or the source hook reverts, swaps on the fitting revert, so liveness depends on external contracts.

Contract details

Verified source
Yes (Retrofit)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
19,271 bytes
Upgradeable proxy
No
Detected patterns
erc20, fee-sharing, launchpad, moves-currency, ownable, return-delta, self-unlock

Pools using Retrofit