FablesRWA on Robinhood Chain

Uniswap v4 Hook Contract 0x67d86050d22d574df046f3d90f722045f714e080 on Robinhood Chain · Dynamic fee · Verified contract

Volume (24h)
$323.44K
Value locked (TVL)
$159.63K
All-time volume
$28.31M
Pools using this hook
1
Swaps (24h)
2,468 (502 traders)
Total swaps
33,115

What it does

A session-aware dynamic-fee hook for tokenized equity pools that raises swap fees around market open, overnight and close and lets LPs deposit ERC-6909-receipted concentrated liquidity.

How it works step by step

  • Classifies the current time into open, overnight or closed sessions using a US Eastern calendar with DST handling and per-day overrides.
  • Charges a fee floor that descends from a spike at the open, sits at a configured overnight level, and ramps during the closing window.
  • Allows a restricted poke to replace the autonomous fee for up to 72 hours, bounded by a floor and the pool cap.
  • Holds concentrated LP positions per tick range in the PoolManager and mints ERC-6909 receipts 1:1 with liquidity units.
  • Splits accrued LP fees between unstaked holders and staked shares routed to a distributor, with an optional claim fee on fees only.
Swap behaviour
On each swap beforeSwap returns a fee override computed from the pool's session floor schedule or a valid admin poke, clamped to the pool cap. No swap deltas are changed.
Liquidity behaviour
Users deposit concentrated liquidity into hook-owned v4 positions per tick range, receiving ERC-6909 receipts 1:1 with liquidity units. Withdrawals are unconditional and do not read admin state; staked shares auto-unstake on withdraw. Deposits and withdrawals take caller-supplied amount bounds and deadlines.
Fee behaviour
Dynamic fee per pool from a session-based floor schedule (open descent, overnight, closed tiers, closing ramp) driven by block.timestamp through the ET market calendar, optionally replaced by a TTL-bounded admin poke clamped between the poke floor and the pool cap. Fees accrued from LP positions are split into staked (sent to distributor/voters) and unstaked (to holders) shares, with a claim fee of 0 to 20% taken on fees only.
Owner & admin controls
Owner-style control via AccessManaged authority. Restricted roles can set per-pool floor configs and fee caps (setPoolConfig), poke a temporary fee within a floor/cap bound (pokeFee, TTL up to 72h), clear pokes, set day overrides and session hours and DST mode (MarketCalendar), pause deposits/claims/stakes/transfers/sweeps for up to 7 days (setPaused, pause), set claim fee up to 20% and recipient, set distributor, FF fee sink, ballot gate, and operators. Principal withdrawal and unstaking are not pausable. Authority may be upgraded via setAuthority; contract itself is not upgradeable proxy.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap

beforeInitialize: enforces dynamic-fee pools, a configured pool, and no native currency0 unless the native variant is used. beforeSwap: returns a fee override only (no delta flags), so swaps are not altered beyond fee pricing.

Security & trust assessment

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

Who controls it: A restricted role can set fee floors and caps within absolute bounds, poke fees down to the pool's floor minus at most 50% of the autonomous fee for up to 72h, pause non-withdrawal flows for up to 7 days (renewable), change the claim fee up to 20%, and redirect fee sinks and the distributor. Calendar overrides can force a day to the closed floor within bounded counts. These powers bound fee pricing but can alter LP and protocol revenue.

Risk to user funds: The hook holds LP liquidity in PoolManager positions owned by the hook and custodies fee claim balances as ERC-6909 claims. Principal can be withdrawn without admin cooperation. Fee accruals (claims, staked-cut sweeps) can be paused or redirected by admin roles, and fee pricing can be steered within bounds that affect swappers and LPs.

Security findings

  • [medium] Calendar overrides can cut fees deeply: The calendar overlay can force any trading day to the closed floor, a deeper downward fee cut than the poke ceiling, and these are validated only against structural limits (day index, double bits, closure count).
  • [low] Pausable claims and transfers: The authority can pause deposits, claims, stakes, transfers and sweeps for up to 7 days and renew the pause, freezing fee claims and transfers while withdrawals stay open.
  • [low] Claim fee up to 20% on LP fees: Claim fee is taken from fees accrued by LPs and can be raised up to 20%; a range's rate is capped at the snapshot, but raises apply on the next sync and reductions bind immediately.
  • [info] Principal withdrawals are unconditional: Principal withdrawal does not depend on admin state, no token call on the ledger's behalf is made during withdraw, and fees settle as PoolManager claims, reducing custodial exposure of principal.

Contract details

Verified source
Yes (FablesRWA)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
34,388 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, erc6909-claims, moves-currency, pausable, self-unlock

Pools using FablesRWA