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