StampHook on Robinhood Chain
Uniswap v4 Hook Contract 0xb07382187852485d485a171dd87b100bf4f1a8cc on Robinhood Chain · Launchpad · Verified contract
- Volume (24h)
- $9.43K
- Value locked (TVL)
- $0
- All-time volume
- $171.29K
- Pools using this hook
- 1
- Swaps (24h)
- 383 (181 traders)
- Total swaps
- 4,627
What it does
A launch hook for the STAMP token that seeds a one-time single-sided liquidity position, takes a fixed 4% fee on every IMD-side swap for the protocol, and blocks outside liquidity additions.
How it works step by step
- Opens one STAMP/IMD v4 pool exactly once, with the starting price set by startTick and launchSupply STAMP placed single-sided above it.
- Keeps the launch liquidity locked forever: the hook has no path to remove that position.
- Takes a fixed 4% fee on the IMD side of every swap, accrues it as protocol claims, and lets anyone push it to feeRecipient.
- Reverts partial fills so the fee cannot be underpaid by swaps stopping early at a price limit.
- Blocks external pool initialization and liquidity additions via beforeInitialize and beforeAddLiquidity.
- Deploys a buy/sell router and an ETH router that route through the STAMP pool and an IMD/ETH pool.
- Swap behaviour
- Every swap in the STAMP/IMD pool is charged a 4% fee on the IMD side, taken in beforeSwap or afterSwap depending on swap direction; partial fills revert and each swap emits a Trade event.
- Liquidity behaviour
- Only the hook itself adds liquidity, once, during openPool: launchSupply STAMP is placed single-sided above the starting price and the position is never removed (no beforeRemoveLiquidity path; that hook is disabled). Unused STAMP on the contract is burned to 0xdead. External liquidity adds are rejected via beforeAddLiquidity revert.
- Fee behaviour
- A fixed 4% fee (FEE_BPS = 400) is charged on the IMD side of every swap in the STAMP/IMD pool and credited to the hook as a protocol claim balance; pool LP fee is set to 0. Accumulated fees are minted as ERC-6909 claims and can be withdrawn to feeRecipient by anyone via collectProtocolFees.
- Owner & admin controls
- Owner (two-step transfer via transferOwnership/acceptOwnership) can call openPool once to launch the token pool, and can renounce ownership only after openPool. Owner or the current feeRecipient can change feeRecipient via setFeeRecipient. No pausing, no upgrade mechanism, no fee-rate changes (FEE_BPS is a constant at 4%).
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize and beforeAddLiquidity revert to block any external pool initialization or liquidity addition. beforeSwap charges the 4% fee via return delta and records it in transient storage. afterSwap verifies full fills (reverts on partial fills), settles the fee on the unspecified side via afterSwapReturnDelta, and emits the Trade event with the trader address.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: The owner controls only the one-time pool opening and the fee recipient address. Whoever controls the feeRecipient receives all protocol fees; the owner or current recipient can redirect all future fee collection to any address. Ownership can be permanently renounced after launch, which then leaves only the fee recipient able to change its own address. No ability to pause swaps, change fee rates, or move the locked liquidity.
Risk to user funds: The hook holds protocol fee claims (ERC-6909) and an owned, locked liquidity position but no user deposits. Traders' IMD and STAMP move through the PoolManager and routers; swaps are reverted rather than partially filled. The hook cannot move user funds outside normal swaps, and the only fund-redirecting power is the fee recipient setting, which affects protocol fees only.
Security findings
- [low] Fee recipient can be changed at any time: The owner or current feeRecipient can redirect all future protocol fees to an arbitrary address via setFeeRecipient, with no timelock.
- [info] Launch liquidity is permanently locked: The launch position is single-sided liquidity owned by the hook with no removal path, so the launch STAMP is permanently locked, which benefits holders but means no LP exit exists.
- [info] Partial fills are rejected: The afterSwap check reverts any swap that does not fully fill, so swaps that hit a price limit or run out of liquidity fail rather than partially executing.
- [info] Chain-specific block number lookup: Hook depends on the arbBlockNumber precompile at address 100 for L2 block numbers, with a fallback to block.number when unavailable; this is informational for chain-specific behaviour.
Contract details
- Verified source
- Yes (StampHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 10,886 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, launchpad, moves-currency, ownable, return-delta, self-unlock
Pools using StampHook
- IMD / STAMP (0.00% fee) — 24h volume $9.43K, TVL $0, 383 swaps today