Birchwood on Robinhood Chain

Uniswap v4 Hook Contract 0xc9b19df1415856c7eb45b51f10bab6c7778f60cc on Robinhood Chain · Launchpad · Verified contract

Volume (24h)
$918
Value locked (TVL)
$0
All-time volume
$918
Pools using this hook
1
Swaps (24h)
19 (14 traders)
Total swaps
19

What it does

A launchpad-style hook that combines an ERC20 token with swap callbacks and return-delta settlement on a Uniswap v4 pool.

How it works step by step

  • Runs logic in beforeInitialize to set pool configuration and storage state
  • Intercepts swaps in beforeSwap and afterSwap with return-delta permissions
  • Settles currency against the PoolManager via take() and self-unlock
  • Exposes ERC20 token functions (transfer, approve, transferFrom, totalSupply)
  • Carries Ownable ownership controls for transfer and renouncement
Swap behaviour
beforeSwap and afterSwap are enabled and can alter swap deltas through return-delta permissions, with the hook settling tokens via take() and unlock().
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity selectors are present in the dispatch table but not enabled in the hook permissions, so they are not called by the PoolManager.
Fee behaviour
Uses the pool's static fee; no fee-setting function identified in the decoded selectors.
Owner & admin controls
Owner (Ownable) can renounce ownership and transfer ownership; no pause or upgrade functions identified in dispatch table. Owner-only parameter setters not confirmed from decoded selectors.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize: pool setup and storage writes on initialization. beforeSwap: swap-time logic that reads and writes state. afterSwap: post-swap accounting. beforeSwapReturnDelta and afterSwapReturnDelta: the hook can take or grant swap deltas, so it can move pool value during swaps.

Security & trust assessment

Risk level: medium (decoded bytecode, low confidence).

Who controls it: The owner key controls ownership transfer and renouncement; the decoded functions do not show a confirmed fee or pause control, but without source this cannot be ruled out.

Risk to user funds: Because return-delta permissions and take()/unlock() are present, the hook can hold and move pool tokens during swaps; the owner cannot be confirmed to have a direct withdrawal path from the decoded selectors.

Security findings

  • [high] Hook moves currency via return deltas: Return-delta permissions let the hook alter the amounts settled during swaps, and the bytecode calls take() and unlock(), so the hook moves currency directly.
  • [medium] Self-unlock and direct currency settlement: Bytecode includes self-unlock and take() calls, so the hook can settle tokens against the PoolManager during swap flows.
  • [medium] Single owner key: Ownable pattern is present with transferOwnership and renounceOwnership; a single owner key can reassign privileges.
  • [info] Token functionality embedded in hook: The contract is an ERC20-like token with its own balances, allowances and transfers, and it also appears to manage pool state.
  • [info] Unverified source: No source is available, so behaviour is inferred from selectors and storage slots and may be incomplete.

Contract details

Verified source
Yes (Birchwood)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
8,085 bytes
Upgradeable proxy
No
Detected patterns
erc20, moves-currency, ownable, return-delta, self-unlock

Pools using Birchwood