LoomHook on Robinhood Chain

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

Volume (24h)
$0
Value locked (TVL)
$36.16K
All-time volume
$623.39K
Pools using this hook
1
Swaps (24h)
0 (0 traders)
Total swaps
2,943

What it does

A launch-window hook that charges a decaying tax (starting around 6%, falling 1% every 3 minutes to zero) on the ETH side of every swap in its ETH/token pool and forwards it to a fixed dev wallet.

How it works step by step

  • Anchors a 0-to-6% decaying tax schedule to the pool initialization timestamp, stepping down 100 bps every stepDuration seconds
  • Taxes ETH on buys and sells in both exact-input and exact-output modes so the tax is always a fraction of the swapper's ETH leg
  • Takes the tax as native ETH from the PoolManager into the hook and pushes it to an immutable dev wallet with a 30,000 gas cap
  • Parks the tax in the hook if the dev wallet push fails and lets anyone call sweep() to forward it
  • Restricts pool initialization to the token contract and enforces that the pool is ETH (currency0) against the token (currency1)
Swap behaviour
On each swap the hook checks whether ETH is the specified or unspecified currency. For buys it taxes ETH paid in, and for sells it taxes ETH paid out, at the current decayed rate. The tax is taken from the PoolManager as native ETH and sent to devWallet, with the swap amounts adjusted through the return deltas.
Liquidity behaviour
No liquidity callbacks. Add and remove liquidity hooks are unset and revert if called.
Fee behaviour
Applies a time-decaying tax on the ETH leg of every swap: buys start at 6% (600 bps) and sells at a configured starting rate, each stepping down 1% every 180 seconds to 0% after the decay window. The tax is taken as native ETH via poolManager.take and pushed to devWallet with a 30,000 gas stipend, falling back to the hook balance (recoverable via sweep) if the push fails. The pool's own LP fee is separate.
Owner & admin controls
No owner or admin role. devWallet, token, tax rates and step duration are immutable and set at construction; launchTime and poolId are set once on pool initialization. Anyone can call sweep(), which only forwards stranded ETH to the immutable devWallet. Only the token contract (sender of beforeInitialize) can open the pool.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize anchors the launch timestamp and locks the hook to one ETH/token pool initialized by the token contract. beforeSwap takes the tax when ETH is the specified currency (exact-input buys and exact-output sells) and returns a positive specified delta. afterSwap takes the tax when ETH is the unspecified currency and returns a positive unspecified delta. beforeSwapReturnDelta and afterSwapReturnDelta let the hook claim these deltas.

Security & trust assessment

Risk level: medium (verified source, high confidence).

Who controls it: No privileged key exists in the contract. Tax parameters and recipient cannot be changed after deployment, so centralization risk sits with the token contract that calls start() and with whoever controls the devWallet address.

Risk to user funds: The hook holds ETH only transiently during a swap and any tax that failed to forward; it never holds token balances or LP positions. It can take ETH from the pool on every taxed swap, reducing what swappers receive by up to the configured rate. Because sweep() is permissionless and the recipient is immutable, stranded funds cannot be redirected.

Security findings

  • [info] Heavy launch-window tax paid to a single wallet: Swaps are taxed at up to 6% on the ETH leg during the first 18 minutes, with decay to zero, and the tax is paid to devWallet. Traders pay this by design, which is an intentional fee and not a bug.
  • [low] Tax forwarding can fail and be parked in the hook: If the dev wallet push fails or runs out of the 30,000 gas stipend, the tax stays in the hook and a TaxForwardFailed event is emitted. Anyone can then call sweep() to forward the balance, so a reverting receiver does not block swaps.
  • [medium] Hook alters swap amounts through return deltas: The hook can take ETH from the PoolManager and returns positive specified and unspecified deltas, so it directly alters swap amounts and credits itself with ETH. Users receive less than the pool quote during the tax window.
  • [info] Tax rate depends on block timestamp at step boundaries: Tax is computed from block.timestamp with 180-second steps, so ordering of transactions around step boundaries can change the rate applied, but the effect is bounded to one percentage point per step.

Contract details

Verified source
Yes (LoomHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
5,403 bytes
Upgradeable proxy
No
Detected patterns
launchpad, moves-currency, return-delta, tax

Pools using LoomHook