FablesRWA on Robinhood Chain
Uniswap v4 Hook Contract 0x70a9a88402989226847ec122043ce5e7ff462080 on Robinhood Chain · Dynamic fee · Verified contract
- Volume (24h)
- $300.18K
- Value locked (TVL)
- $281.17K
- All-time volume
- $29.31M
- Pools using this hook
- 1
- Swaps (24h)
- 798 (299 traders)
- Total swaps
- 77,089
What it does
A session-aware dynamic-fee hook for tokenized equity pools that charges different fees during market open, overnight and closed hours and also holds per-range LP liquidity with ERC-6909 receipts.
How it works step by step
- Sets the swap fee from a session schedule (open, overnight, closed) driven by block timestamp and an ET market calendar
- Applies an opening descent and closing ramp around the market bells to raise fees where LP loss concentrates
- Allows a bounded, expiring operator fee poke that cannot exceed the pool cap or drop below a configured floor
- Accepts concentrated LP deposits per tick range and mints 1:1 ERC-6909 receipts, with slippage bounds
- Accrues LP fees per range, with an optional claim fee capped at 20% and a staking switch that routes fees to a distributor
- Lets admins pause deposits, claims and transfers for up to 7 days while withdrawals remain available
- Swap behaviour
- Overrides the swap fee in beforeSwap based on the session floor for the current time, optionally replaced by a time-limited operator poke, and clamped to the pool cap. Does not modify swap deltas.
- Liquidity behaviour
- Users deposit concentrated liquidity into hook-owned per-range PoolManager positions and receive 1:1 ERC-6909 receipts; deposit and withdraw take amount bounds for slippage protection; withdrawals are unconditional and do not read admin state. Staked receipts route fee accrual to a distributor, and transfers are limited to unstaked balances.
- Fee behaviour
- Fee is the session floor (open, overnight, closed tiers with an opening descent and closing ramp) driven by block.timestamp, optionally replaced by a time-limited poke bounded to the pool cap and a floor, and clamped to the per-pool cap. Claim fees (default 0, max 20%) apply to LP fee revenue only, not principal.
- Owner & admin controls
- Owner-restricted (AccessManaged authority): setPoolConfig, pokeFee/clearPoke (hot key, 72h max TTL, floor-bounded), setClaimFee (max 20%), setDistributor, setFFFeeSink, setBallotGate, pause (7 day max, one-way extension), setPaused (can lift), setAuthority, setDayOverrides (calendar, validated), setSessionHours (bounded 1-12h), setDstMode. Withdrawals and unstaking are deliberately not pausable.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap
beforeInitialize: requires dynamic-fee pool, configured bounds, and blocks native currency0 pools unless enabled. beforeSwap: returns a fee override only, with no delta flags, so it never takes or moves swap funds.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: A restricted admin can set fee floors and caps (within absolute bounds), pause deposits/claims/staking/transfers for up to 7 days at a time, redirect claim-fee and distributor revenue destinations, and steer fees via pokes and calendar overrides. The poke key has no execution delay, but its effect is bounded by floor, cap and TTL. Principal exits cannot be blocked.
Risk to user funds: Hook holds LP principal and fee claims inside the PoolManager on behalf of depositors. Principal withdrawal is unconditional and cannot be frozen by admin; fee claims and transfers can be paused temporarily. No token transfers occur on the hook's own behalf for fee settlement, and an admin cannot take user principal.
Security findings
- [info] Hook custodies LP positions via PoolManager: The hook calls the PoolManager unlock and settles liquidity and fee claims, so it does hold pool-related balances for LPs. Principal is withdrawn via PoolManager ERC-6909 claims and direct payment to the withdrawer, and no admin path can seize it.
- [medium] Hot-key fee poke can lower fees: A poke can lower the fee within a 50% cut of the live autonomous fee and above the configured pool floor, for up to 72 hours and renewable. This is bounded but can subsidize swappers if misused.
- [medium] Calendar overrides can cut fees sharply: Calendar overrides can force days to the closed floor (about 92 to 95 percent cut in tested configs) and session hours can be moved within 1 to 12 hours. Validation prevents malformed bitmaps but not a legitimate-looking but harmful day classification.
- [low] Admin pause can delay fee claims and transfers: Pause can freeze deposits, claims, staking, transfers and sweeps for up to 7 days, renewable by the admin, and pausing via the fast key can only extend a freeze. Users with unclaimed fees may be delayed; principal withdrawal stays available.
- [info] Privileged roles managed by one authority: Uses a single access authority with multiple roles, and upgradability is not indicated (immutable singleton). Centralization is in the authority's role assignments and execution delays, which are not visible in the source here.
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
- USDG / AAPL (Dynamic fee) — 24h volume $300.18K, TVL $281.17K, 798 swaps today