GridPonsHook on Robinhood Chain
Uniswap v4 Hook Contract 0x2053d56ec2d735f92cec99538554178b5699e8c0 on Robinhood Chain · Dynamic fee · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $3.65K
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 287
What it does
A protocol-owned PONS/GRID Uniswap v4 pool that charges a dynamic fee and automatically arbitrages its price against the GRID/VIRTUAL and VIRTUAL/WETH v2 pools and the WETH/PONS v3 pool, keeping the profit for the owner.
How it works step by step
- Maintains a single PONS/GRID v4 pool whose liquidity is owned and placed by the hook owner.
- Computes a reference price along GRID to VIRTUAL to WETH to PONS using the v2 and v3 pool reserves, including fees and GRID's transfer tax.
- On each swap, if an arb edge exists, performs a flash-accounted cycle through the v4 pool and the external pools and keeps the PONS profit in the hook.
- Charges outside traders a dynamic fee: a base fee normally, rising to a displacement fee when a trade pushes the price back toward reference.
- Blocks all third-party liquidity additions and lets only the owner manage the position and sweep funds.
- Swap behaviour
- On every swap, beforeSwap and afterSwap attempt a cheap edge check; if a profitable arb exists the hook runs a self-call that trades through its own pool and external v2/v3 pools, with any failure swallowed. Outside swaps pay the dynamic fee returned by feeFor.
- Liquidity behaviour
- beforeAddLiquidity reverts with LpLocked for all outside LPs, so only the owner can add liquidity (via the hook's unlockCallback). Owner can remove liquidity and sweep funds at any time.
- Fee behaviour
- Dynamic-fee pool with stored fee 0. Every outside swap is charged via beforeSwap override: baseFee (default 0.05%) normally, or a displacement fee up to maxFee (default 0.30%, hard cap 1%) when the trade moves the pool price back toward the reference mid, minus slackBps. Fees accrue to LPs, which is the owner's own position. The hook's own arb swaps are exempt via noSelfCall.
- Owner & admin controls
- Owner (set at construction, transferable via transferOwnership with no two-step confirmation) can: call addLiquidity, removeLiquidity and exitAll to move the pool's LP position and sweep all PONS, GRID and WETH held by the hook to any address; call withdraw to send any token balance to any address; call setParams to change baseFee (up to maxFee), maxFee (up to 1%), edgeBps, slackBps, minProfit and disable arbitrage; and transfer ownership. No pause mechanism, no upgrade proxy (immutable deployment), no timelock.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap
beforeInitialize: restricts pool creation to the owner and enforces PONS/GRID currency ordering and dynamic fee. beforeAddLiquidity: blocks all third-party liquidity. beforeSwap: triggers the arb attempt and returns the dynamic fee override. afterSwap: triggers a re-anchoring arb attempt after each trade.
Security & trust assessment
Risk level: high (verified source, high confidence).
Who controls it: The owner has full custody of the hook's funds and the pool liquidity. It can withdraw all PONS/GRID/WETH held by the contract at any time, remove the LP position, set fees up to 1%, and transfer ownership to any address in a single transaction. A compromised or malicious key could drain the protocol-owned liquidity and all accumulated arb profit.
Risk to user funds: The hook holds PONS, GRID and WETH (LP position, fees and arb profit) and the owner can withdraw all of it. Outside traders do not lose custody, but their swaps execute against owner-controlled liquidity and can be charged up to the owner-set fee. The hook cannot block user swaps except through the fee setting and the LowGas revert on very low gas.
Security findings
- [high] Owner can drain all funds and liquidity: withdraw, exitAll and removeLiquidity let the owner move any token balance and LP position to an arbitrary address with no timelock, multisig or delay.
- [medium] Owner can raise swap fees up to 1%: setParams allows the owner to raise maxFee to the 1% FEE_CAP and set baseFee up to that cap, making every outside swap far more expensive.
- [medium] Single-step ownership transfer: transferOwnership sets the new owner immediately with no confirmation step; a mistyped address permanently transfers control.
- [medium] Unaudited arbitrage logic against external pools: The arb path relies on flash accounting across multiple external v2 and v3 pools, with price estimates modelled from virtual reserves; a bad estimate or a tax-token behaviour change can make arbs revert (swallowed) or, in edge cases, trade at unfavourable marginal prices. The contract is explicitly marked UNAUDITED in its source.
- [low] Arb sizing depends on manipulable reserves: Users are protected from arb-induced reverts by a try/catch, but the arb is triggered on every swap and the hook's own sizing uses live pool reserves that can be manipulated within a transaction, so price-manipulation risk to the pool's LPs exists.
Contract details
- Verified source
- Yes (GridPonsHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 18,871 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, liquidity-management, ownable
Pools using GridPonsHook
- PONS / GRID (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today