FablesRWA on Robinhood Chain

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

Volume (24h)
$1.20K
Value locked (TVL)
$9.51K
All-time volume
$880.41K
Pools using this hook
1
Swaps (24h)
57 (39 traders)
Total swaps
9,880

What it does

A session-aware dynamic-fee hook for tokenized equity pools that raises swap fees during opening and closing auction windows and at the overnight and closed sessions, while letting LPs deposit liquidity into per-range positions with tradable receipts.

How it works step by step

  • Charges a time-of-day fee floor from the market calendar, with higher tiers in the open and close windows and a closed-market tier
  • Applies a linear opening descent and a closing ramp around the auction bells
  • Supports a per-pool directional premium on one swap direction and TTL-bounded directional pokes from an operator
  • Lets users deposit concentrated liquidity into per-range v4 positions and mint 1:1 ERC-6909 receipts
  • Accrues fees per range, splitting staked shares' fees to a distributor and charging an optional claim fee on fees only
  • Keeps principal withdrawals unconditional and unpausable
Swap behaviour
On every swap beforeSwap returns a dynamic fee override computed from the market calendar at block.timestamp, plus any directional premium, replaced by a live poke if one is active, and capped at the pool maximum. No swap deltas are modified.
Liquidity behaviour
Users deposit concentrated liquidity into hook-owned v4 positions per tick range and receive ERC-6909 receipts 1:1 with liquidity units. Deposits and withdrawals enforce caller-supplied token amount bounds and a deadline. Withdrawals read no admin state and cannot be paused. Receipts can be staked to route fee accrual to the distributor, and staked shares are non-transferable beyond the unstaked balance.
Fee behaviour
Per-swap fee is the session floor from the calendar (open/overnight/closed tiers, opening descent and closing ramp), plus an optional directional premium on one swap direction, optionally overridden per direction by a TTL-bounded poke (at least 50% discount vs premium-free curve and not below pool floor), always clamped to the pool cap. Fees on LP positions accrue via Uniswap v4 and are split between unstaked holders and a staked share routed to a distributor and claim-fee recipient (claim fee up to 20%, rate snapshotted per range).
Owner & admin controls
Owner-style admin via AccessManaged: restricted setters (setPoolConfig, setPoolAsymmetry, pokeFee, clearPoke, setPaused, pause, setClaimFee, setDistributor, setFFFeeSink, setBallotGate, setAuthority, setOperator, setDayOverrides, setDstMode, setSessionHours, setPoolConfig) are gated by the authority. A hot poke role can set per-direction fees within a floor/cap band with a 72h TTL and can be cleared instantly. Ledger pause lasts at most 7 days per call and can be set by a zero-delay pause key that can only extend freezes. Withdrawals, unstaking and principal exits are deliberately not pausable. Fee caps are bounded by an immutable ABSOLUTE_MAX_FEE.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap

beforeInitialize: enforces dynamic-fee pools, a configured pool, and blocks native currency0 pools. beforeSwap: returns the per-swap dynamic fee override only; no delta modification.

Security & trust assessment

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

Who controls it: A poke key can set any configured pool's per-direction fee down to the floor (and renew for 72h), disrupting LP economics or subsidising toxic flow within the bounds. The pause key can freeze deposits, claims, staking, transfers and sweeps for up to 7 days at a time. The admin can change pool floors, caps, calendar overlays, claim-fee rate and recipients, distributor and sinks, and the ballot gate, subject to the authority's execution delays. Withdrawals stay open regardless.

Risk to user funds: Principal is not held by the hook for transfer on withdrawal, and withdrawals are unconditional and unpausable. Fees and staked-fee revenue can be redirected or skimmed by admin-set parameters (claim fee up to 20%, sink and distributor destinations), and trader fees can be temporarily raised or lowered within bounds by the poke key. Deposit and claim paths can be paused or blocked by the admin.

Security findings

  • [medium] Zero-delay poke key controls live swap fees: A poke role with no execution delay can set per-direction fees between the pool floor and cap for up to 72 hours and renew indefinitely, bounded by the 50% discount guard against the premium-free curve.
  • [low] Pausable ledger functions: The ledger can be paused for up to 7 days per call, and the zero-delay pause key can extend freezes; pausing blocks deposits, claims, staking, transfers and sweeps but not withdrawals or unstaking.
  • [low] Admin-adjustable fee skim and sinks: Claim-fee rate is capped at 20% and snapshotted per range, while the recipient, distributor and sinks are changeable by admin; a retroactive minimum-rate rule applies to backlogs.
  • [info] Authority contract not reviewed: Access control, upgrade behaviour and any proxy pattern depend on the authority contract, which is not part of the provided input; cannot be fully verified here.

Contract details

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

Pools using FablesRWA