Hook 0x6a28…0040 on Robinhood Chain
Uniswap v4 Hook Contract 0x6a289d1733f7028fc17f4d8e5d6a521c6d6e0040 on Robinhood Chain · Other
- Volume (24h)
- $3.01K
- Value locked (TVL)
- $3.52K
- All-time volume
- $11.20K
- Pools using this hook
- 1
- Swaps (24h)
- 99 (16 traders)
- Total swaps
- 300
What it does
An Ownable hook that runs after every swap and appears to sweep tokens to an owner-configured address, though the exact behaviour cannot be verified without source.
How it works step by step
- Runs afterSwap on every swap to perform post-swap token handling.
- Reads a sweeper address from storage slot 1 to decide where tokens are sent.
- Consults a mapping(address=>bool) in slot 3 that the owner can update.
- Keeps a uint256 in slot 2 that is updated by owner-only function 0x854e221c.
- Is Ownable, with owner-only setSweeper and allowlist updates.
- Swap behaviour
- afterSwap (0xb47b2fb1) executes after each swap and likely forwards tokens to the sweeper address based on the allowlist mapping; beforeSwap is a view stub with no state change.
- Liquidity behaviour
- Liquidity callbacks are present in the permissions list only as view stubs (beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity); no state-changing liquidity logic was identified from the decoded selectors.
- Fee behaviour
- No fee logic identified in the decoded functions; the hook does not appear to set or take fees directly. Fee behaviour cannot be fully determined from the decoded bytecode.
- Owner & admin controls
- Owner (slot 0) can transfer or renounce ownership, set the sweeper address (setSweeper, slot 1), call 0x854e221c with a uint256 that is stored in slot 2, and call 0xc5ac6725 with an address array and bool to update a mapping(address=>bool) in slot 3. The meaning of the uint256 and the address-list flags cannot be determined without source.
Enabled Uniswap v4 callbacks
afterSwap
afterSwap is the only enabled callback; it is the one state-changing entry point (0xb47b2fb1) and it reads slot 1 (sweeper address), slot 2 (uint256) and the slot 3 mapping, and writes nothing to them directly, suggesting it may forward or sweep tokens to the sweeper address when conditions in the mapping are met.
Security & trust assessment
Risk level: medium (decoded bytecode, low confidence).
Who controls it: The owner controls the sweeper address and the address allowlist/mapping in slot 3; a compromised owner could redirect swept proceeds to an address of their choosing and alter which addresses are treated specially in afterSwap.
Risk to user funds: The hook can likely move tokens out of the pool or from its own balance to the sweeper address inside afterSwap, so user or pool funds could be redirected; the exact amounts and conditions are not verifiable from the decoded bytecode.
Security findings
- [medium] Post-swap sweep to an owner-set address: afterSwap (0xb47b2fb1) is nonpayable and reads the sweeper address from slot 1 and a mapping from slot 3, which suggests it transfers pool-derived tokens to a privileged address after swaps.
- [medium] Owner can change sweep destination: setSweeper (0x23d4c2ba) is restricted to the owner, so the owner can point the sweep destination at any address.
- [low] Owner-managed address mapping: Owner can add or remove addresses in the mapping through 0xc5ac6725, which likely changes whether afterSwap acts for given addresses.
- [info] Ownable access control: The contract is Ownable with transferOwnership and renounceOwnership, so control can be transferred to a new key or abandoned.
- [info] Limited analysis from bytecode only: Without verified source, the exact transfer logic and the purpose of 0x854e221c cannot be confirmed.
Contract details
- Verified source
- No
- Bytecode size
- 7,333 bytes
- Upgradeable proxy
- No
- Detected patterns
- ownable
Pools using Hook 0x6a28…0040
- ETH / USDG (0.01% fee) — 24h volume $3.01K, TVL $3.52K, 99 swaps today