InstantHook on Robinhood Chain

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

Volume (24h)
$874
Value locked (TVL)
$10.44K
All-time volume
$1.28M
Pools using this hook
184
Swaps (24h)
9 (8 traders)
Total swaps
14,970

What it does

Instant markets charge a fixed 1.50% fee on every ether-side trade, sending 1.00% to the market creator and 0.50% to the platform, with no adjustable parameters.

How it works step by step

  • Enforces a fixed 1.50% fee on the ether side of every trade, in both buy and sell directions.
  • Charges in beforeSwap when ether is the specified currency and in afterSwap when it is unspecified, so no swap route avoids the fee.
  • Mints ERC-6909 ether claims to a per-market vault instead of taking ether mid-swap, which lets the first trade settle on a freshly launched one-sided pool.
  • Splits each charge into a 1.00% creator share and 0.50% platform share, computed from the trade so the two always sum exactly to the fee.
  • Forces the pool's LP fee to zero at initialisation and on every swap so the 1.50% is the whole cost of a trade.
  • Restricts liquidity additions to the factory's locked initial position and disables remove and donate callbacks.
Swap behaviour
On every swap the hook charges 1.50% of the ether leg. If ether is the specified currency it charges in beforeSwap via a specified-delta; otherwise it charges in afterSwap via an unspecified-delta. The pool LP fee is overridden to zero, so the charge is the only cost.
Liquidity behaviour
beforeAddLiquidity only permits liquidity added through the pinned PositionManager on behalf of the factory (the locked initial position). Remove, donate callbacks revert with CallbackNotEnabled.
Fee behaviour
Charges a fixed 1.50% of the ether leg on every trade (1.00% to the creator, 0.50% to the platform treasury) via beforeSwap or afterSwap depending on direction and exact-in/out kind. The pool's LP fee is overridden to zero on every swap and stored as zero at initialisation, so this is the only charge.
Owner & admin controls
No admin or owner controls: the fee is a compile-time constant, the vault and recipients are immutable, and the vault has no sweep or setter. The only privileged actor is the factory, which may call register once per pool; the PoolManager gates callbacks; the vault's hook and creator/treasury addresses are fixed at deployment.

Enabled Uniswap v4 callbacks

beforeInitialize, afterInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize: requires the pool to be ether-quoted, dynamic-fee, correct tick spacing, and registered with a vault. afterInitialize: sets the stored LP fee to zero. beforeAddLiquidity: restricts adds to factory-initiated liquidity. beforeSwap: charges the fee on the specified ether leg and returns a zero-LP-fee override. afterSwap: charges the fee on the unspecified ether leg. beforeSwapReturnDelta and afterSwapReturnDelta: allow the fee to be expressed as a return delta that the trader settles, with the hook minting ERC-6909 claims to the vault.

Security & trust assessment

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

Who controls it: Effectively none. The factory can register a vault for a pool once; nobody can change fees, recipients, or pause swaps. The creator and platform recipients are immutable and can only pull their own accrued ether, and claims are permissionless but can only pay the fixed recipients.

Risk to user funds: The hook itself holds no balance; minted ether claims are credited to the vault. Traders' ether is only moved through standard v4 settlement. The vault holds accrued fees and is the only path to withdraw them, paid to immutable recipients. Funds cannot be moved or blocked by any admin, though the code is unaudited on the evidence given and the return-delta accounting is the main technical surface.

Security findings

  • [info] Swap path relies on return-delta accounting: The hook returns return deltas and mints claims to the vault during every swap, so a bug in the arithmetic or sign conventions would directly affect trader balances. The split and direction logic is compact and appears internally consistent.
  • [low] Stranded ether from force-sends: Ether force-sent via selfdestruct is not claimable by any ledger. The contract exposes unaccounted() rather than sweeping it, so such funds are stranded by design.
  • [info] Recipient failures isolated by pull design: A creator whose receiver reverts on ether receipt only fails their own claim; swaps are not blocked because claims are pull-based.
  • [info] Registration and permission gating: Only the factory can register a pool, and registration is once per pool. The address-bit check in the constructor ensures the hook has the required permissions.

Contract details

Verified source
Yes (InstantHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
6,020 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, erc6909-claims, liquidity-management, return-delta

Pools using InstantHook