RwaOrariHook on Arc
Uniswap v4 Hook Contract 0xccb4490c06212626d70ebd2cd72c0e8d1c456080 on Arc · Dynamic fee · Verified contract
- Volume (24h)
- $1.69
- Value locked (TVL)
- <$0.01
- All-time volume
- $92.42K
- Pools using this hook
- 1
- Swaps (24h)
- 1 (1 traders)
- Total swaps
- 764
What it does
A Uniswap v4 hook for real-world asset pools that raises the swap fee while the underlying stock or metal market is closed, and lowers it when the market reopens.
How it works step by step
- Reads block.timestamp and computes whether the chosen market calendar (US equities or gold) is open, closed or in its reopening window.
- Applies a time-dependent swap fee through the beforeSwap callback with the override flag set.
- Uses a three-tier fee curve: open, closed and reopening, with the curve enforced to be non-decreasing and the top fee capped at 5%.
- Marks listed holiday dates as closed regardless of time of day, using a holiday list fixed at construction.
- Rejects pool initialization for any pool that does not use the dynamic fee flag, so the fee override always takes effect.
- Requires the hook address to carry the correct permission bits, so deployment fails at the wrong address.
- Swap behaviour
- On every swap beforeSwap returns the fee for the current moment: feeChiuso on holidays and closed hours, feeRiapertura for the reopening window after the bell, and feeAperto while the market is open. The fee is applied with the override flag, so the pool uses it instead of its static value.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- Overrides the pool fee on every swap via beforeSwap with the OVERRIDE flag. Fee is feeAperto when the underlying market is open, feeChiuso when closed or on a listed holiday, and feeRiapertura during the reopening window after the bell. Pools must be initialized with the dynamic fee flag (0x800000) or beforeInitialize reverts.
- Owner & admin controls
- No admin controls found. The owner-less design means no owner, no pausing, no upgrades and no parameter changes after construction; the fee curve and holiday list are immutable/fixed at deployment.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap
beforeInitialize restricts pool creation to dynamic-fee pools only. beforeSwap returns the time-dependent fee with the override flag set so the PoolManager applies it.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: None. There is no owner or privileged key; the hook has no function that changes fees, holidays or calendar after deployment.
Risk to user funds: The hook holds no tokens, keeps no balances and returns no balance deltas, so it cannot hold, move or block pool funds. The only effect on users is the swap fee level, which is capped at 5% and retained inside the pool for liquidity providers.
Security findings
- [info] Fee capped at 5%: Fee ceiling is hardcoded at 5% (TETTO = 50_000) and enforced in the constructor, bounding the maximum fee a swapper can pay.
- [low] Static holiday calendar: Holiday list is passed at construction and only expires toward the normal schedule; there is no way to update it, so market holidays not listed will be priced as trading days.
- [low] Calendar logic can drift from real market schedule: Market hours are computed on-chain with a hand-rolled DST rule for US time zones; if the rules or the holiday list drift from the real exchange schedule, fees will be applied at the wrong times.
- [info] No token custody: beforeSwap is view-like and returns only a fee override; it does not take or hold tokens, and the pool's own fee is what liquidity providers earn.
Contract details
- Verified source
- Yes (RwaOrariHook)
- Compiler
- solc 0.8.24+commit.e11b9ed9
- Bytecode size
- 2,903 bytes
- Upgradeable proxy
- No
Pools using RwaOrariHook
- USDC / bCRCL (Dynamic fee) — 24h volume $1.69, TVL <$0.01, 1 swaps today