NavJitHookV17 on Robinhood Chain
Uniswap v4 Hook Contract 0xb672a5d825f82dea8574711d1da696fcc48d2ae0 on Robinhood Chain · Liquidity management · Verified contract
- Volume (24h)
- $55.83K
- Value locked (TVL)
- $128
- All-time volume
- $56.52K
- Pools using this hook
- 7
- Swaps (24h)
- 1,755 (179 traders)
- Total swaps
- 1,904
What it does
A Uniswap v4 hook that makes a USDG pool for a tokenized stock basket by quoting swaps at NAV and just-in-time providing liquidity, so traders trade against NAV while only the owner can supply standing liquidity.
How it works step by step
- Keeps a zero-fee USDG/basket pool whose effective price tracks NAV plus configured spreads
- Places just-in-time liquidity inside beforeSwap and removes it in afterSwap within the same transaction
- Mints or redeems basket tokens and routes underlying stock legs through external v4 or v3 venues
- Reverts swaps when pool price deviates from NAV beyond the band or the trade is unprofitable
- Sends profit in USDG to a treasury address
- Owner can seed and withdraw a standing liquidity position for the pool
- Swap behaviour
- beforeSwap reads NAV from the navGuard, quotes buy or sell price with spreads, sizes inventory, mints or sources basket units and places JIT liquidity; afterSwap removes JIT liquidity, verifies pool price is within bandBps of NAV, restores the standing position, redeems and sells underlying stocks, and sends USDG profit to treasury.
- Liquidity behaviour
- Third-party addLiquidity and removeLiquidity revert; the hook alone adds just-in-time liquidity around NAV during swaps and removes it afterwards, plus an owner-seeded standing position.
- Fee behaviour
- Pool fee is 0; economics come from buy and sell spreads (default 25 bps buy, 100 bps sell) applied to NAV, with profit taken as USDG delta and sent to treasury.
- Owner & admin controls
- Owner (Ownable2Step, renounce disabled) can set params (spreads up to bandBps, band up to 10%, size buffer up to 20%, width up to 2000 ticks), set treasury, set navGuard, open venues, seed and withdraw the standing liquidity position, and sweep funds via withdrawStanding. Owner can also change the basket registry dependencies through the factory and registry contracts.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeDonate
beforeInitialize blocks external pool creation except via openVenue; beforeAddLiquidity and beforeRemoveLiquidity block third-party LPs; beforeDonate is disabled; beforeSwap quotes NAV-based price, mints basket units and places JIT liquidity; afterSwap removes JIT liquidity, checks the pool price is within band of NAV, restores standing liquidity, redeems basket and sells constituents, and pays profit to treasury.
Security & trust assessment
Risk level: medium (verified source, medium confidence).
Who controls it: The owner can withdraw the standing liquidity position, change treasury and navGuard (which gates pricing via checkedNavPerUnit18), and adjust spreads; a malicious or compromised navGuard could misprice swaps and drain value. Ownership transfer is two-step but there is no timelock.
Risk to user funds: The hook holds USDG and basket tokens during swaps and the owner-seeded standing position. Swaps revert if the price is outside the band or profit is negative, so users are not forced into losing trades, but the owner controls the funds in the standing position and the NAV source.
Security findings
- [high] Owner-replaceable NAV oracle guard: Pricing, swap execution and profit accounting depend on the owner-settable navGuard contract; a compromised or buggy guard can set NAV arbitrarily.
- [medium] Owner can withdraw standing liquidity: withdrawStanding lets the owner remove the standing liquidity and send the tokens to any address, and treasury can be redirected by the owner.
- [medium] Dependence on external pools and registries: The hook calls out to external v3-family pools and routers via fallback and probe functions; these depend on factory and registry configuration that can be changed by the owner.
- [info] Complex transient-state execution flow: beforeSwap and afterSwap rely on transient storage locks and cached state; reentrancy is guarded but the flow is complex and only partly verified from the provided excerpt.
Contract details
- Verified source
- Yes (NavJitHookV17)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 24,322 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, ownable, self-unlock
Pools using NavJitHookV17
- USDG / LOT-Lotty (0.00% fee) — 24h volume $33.75K, TVL $26, 897 swaps today
- USDG / LOT-Super Inu (0.00% fee) — 24h volume $22.08K, TVL $0, 858 swaps today
- USDG / LOT-V17 Review (0.00% fee) — 24h volume $0, TVL $25, 0 swaps today
- USDG / LOT-LotFlow Canary (0.00% fee) — 24h volume $0, TVL $26, 0 swaps today
- USDG / LOT-mag 5 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-LF1 (0.00% fee) — 24h volume $0, TVL $26, 0 swaps today
- USDG / LOT-LF2 (0.00% fee) — 24h volume $0, TVL $26, 0 swaps today