Likely custom pricing hook on Robinhood Chain
Uniswap v4 Hook Contract 0x9d353e296b0217403d8403a21b292dafc3388088 on Robinhood Chain · Custom pricing
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 0
What it does
This hook runs a custom check before each swap and can adjust the amounts settled through a return delta and move currency, but the exact pricing rule and which trades pay more or less cannot be determined from the decoded bytecode.
How it works step by step
- beforeSwap is the only swap callback; it reads and writes several storage slots on every swap
- Uses beforeSwapReturnDelta, so the hook can return a delta that changes the amounts settled for the swap
- Calls take(address,address,uint256) on the PoolManager, which means the hook moves pool currency to its own address during swaps
- Storage slot 0 holds a uint16 that is written by selector 0xa72308c4 and read by beforeSwap and 0xb10176d1, suggesting a stored parameter or state flag
- Slot 1 and slot 2 are uint256 values, slot 3 is a bytes28 value; their exact meaning cannot be determined without source
- Contains a Panic(uint256) selector, indicating arithmetic or bounds checks that can revert
- Swap behaviour
- beforeSwap runs before each swap, reads stored state and may return a delta and take currency through the PoolManager, so the amounts a swapper receives or pays can differ from the standard pool curve; the exact pricing rule cannot be determined from the decoded bytecode.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- Fee logic cannot be determined from the decoded bytecode; the hook does not expose a dynamic fee callback, and any fee effect would come through the return delta in beforeSwap.
- Owner & admin controls
- No admin controls found in the decoded selectors; no owner, pause or upgrade functions were identified, but this is not conclusive without source.
Enabled Uniswap v4 callbacks
beforeSwap, beforeSwapReturnDelta
beforeSwap is used to inspect the swap parameters and state and to decide the delta and currency movement for the swap; beforeSwapReturnDelta lets the returned delta alter the swap settlement.
Security & trust assessment
Risk level: high, estimated (decoded bytecode, low confidence).
Who controls it: If the function 0xa72308c4 is access-controlled only by a key, that key could change the stored parameter in slot 0 and alter swap outcomes for all users; access control cannot be confirmed from bytecode alone.
Risk to user funds: The hook can move pool currency via take and change settlement amounts through its return delta, so user and LP funds are exposed to the hook's pricing logic.
Security findings
- [high] Return delta with currency movement: The hook has beforeSwapReturnDelta and calls take on the PoolManager, so it can alter and settle amounts that pool participants receive or pay.
- [medium] Unverified source: No verified source is available, so the pricing logic, the meaning of storage slots and any owner paths cannot be confirmed.
- [medium] Writable state read during swaps: Slot 0 is written by selector 0xa72308c4, a non-view function, and read during beforeSwap, so an external caller of that function may be able to change swap outcomes.
- [info] Revert paths present: The Panic(uint256) selector indicates the code can revert on arithmetic or bounds failures, which may block swaps in some states.
Contract details
- Verified source
- No
- Bytecode size
- 1,279 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, return-delta