NavJitHook on Robinhood Chain
Uniswap v4 Hook Contract 0x99a670d2103e1e4ebd53a483f725dd651a08eae0 on Robinhood Chain · Custom pricing · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $51
- All-time volume
- $2.90K
- Pools using this hook
- 22
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 411
What it does
A Uniswap v4 pool hook that quotes USDG-versus-tokenized-basket swaps at a NAV-based price, blocks outside liquidity, and uses just-in-time liquidity plus a standing position to fill trades, routing profit to a treasury.
How it works step by step
- Quotes swaps against NAV from an owner-set navGuard with 25 bps buy and 100 bps sell spreads.
- Adds a just-in-time liquidity position in beforeSwap and removes it in afterSwap.
- Mints basket tokens from underlying stock swaps for buys and redeems and sells constituents for sells.
- Reverts if the pool price drifts outside a 2 percent band around NAV or if the round trip loses money.
- Sends positive USDG proceeds to the owner-set treasury.
- Blocks third-party liquidity adds, removals and donations.
- Swap behaviour
- On each swap the hook reads a NAV price from navGuard, lifts the standing position, adds just-in-time liquidity sized from the NAV price and buy or sell spread, and after the swap removes the JIT position, checks the pool price stays within a band of NAV, restores the standing position and unwinds inventory via underlying stock pools, reverting if the trade is unprofitable.
- Liquidity behaviour
- Third-party liquidity adds and removals revert (NoThirdPartyLiquidity). Liquidity is only added by the hook itself during swaps as a just-in-time position that is removed in afterSwap, plus an owner-seeded standing position identified by a fixed salt.
- Fee behaviour
- Pool fee is fixed at 0. Pricing is set by a buy spread of 25 bps and a sell spread of 100 bps relative to a NAV price from navGuard; profit from the JIT round trip is sent to the treasury address.
- Owner & admin controls
- Owner (Ownable2Step, renounce disabled) can set spread, band, size buffer and width parameters via setParams (bounded by MAX_BAND_BPS 1000, MAX_SIZE_BUFFER_BPS 2000, MAX_WIDTH_TICKS 2000), change treasury, swap the navGuard contract, open venues for baskets, and seed or withdraw the standing liquidity position. Basket factory owner can set the recovery ledger that can halt issuance of baskets used by this hook.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeDonate
beforeInitialize reverts unless the owner-controlled openVenue path initiates the pool. beforeAddLiquidity and beforeRemoveLiquidity revert to block outside LPs. beforeDonate reverts. beforeSwap checks a reentrancy lock, reads a NAV price, mints or redeems basket tokens, and adds a JIT liquidity position. afterSwap removes the JIT position, checks the pool price is within a band of NAV, restores the standing position, unwinds inventory through the underlying stock venues and sends profit to the treasury.
Security & trust assessment
Risk level: high (verified source, high confidence).
Who controls it: The owner can change spreads, bands and width within bounds, redirect treasury proceeds, replace navGuard (which supplies the price used for every trade) with an arbitrary contract, and withdraw the standing liquidity to any address. A malicious navGuard or treasury change could extract value from the standing position or misprice swaps.
Risk to user funds: The hook holds the standing liquidity position and temporary balances during swaps and moves tokens to the pool manager, underlying venues and the treasury. Users swapping against the hook receive prices set by the owner-controlled navGuard, so funds are exposed to the owner's choice of oracle and treasury.
Security findings
- [high] Owner-replaceable price oracle: The navGuard address is set by the owner without timelock and is the sole source of the NAV price used in beforeSwap, openVenue and seedStanding. A replaced guard can return arbitrary prices.
- [medium] Owner can withdraw seeded liquidity and redirect proceeds: withdrawStanding and setTreasury allow the owner to remove the standing liquidity or redirect all profit to any address at any time.
- [medium] Swaps can revert from external dependencies: The hook calls out to external stock pools and basket contracts with a sell path that reverts with NotProfitable or SellExceedsFloat if conditions fail, so swaps can be blocked by external venue states or by the ledger halting issuance.
- [low] Dependence on external venue pricing: The hook executes swaps against stock venues and mints or redeems baskets while holding user-facing swap flow, relying on NAV and band checks for protection; mispricing of any constituent venue can lead to trades settled against the standing position.
- [info] Issuance halt via recovery ledger: Basket issuance is gated by a recovery ledger the factory owner can set, which can halt mints the hook depends on for buy-side trades.
Contract details
- Verified source
- Yes (NavJitHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 23,997 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, ownable, self-unlock
Pools using NavJitHook
- USDG / LOT-oldy (0.00% fee) — 24h volume $0, TVL $25, 0 swaps today
- USDG / LOT-NAVJIT2 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-eli (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-NAVJIT1 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-goldy (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-metal (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-test6 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-test2 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-test5 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-two (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-test7 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-test4 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-herro kitty (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-oct1 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-test1 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-RegOct (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-test3 (0.00% fee) — 24h volume $0, TVL $26, 0 swaps today
- USDG / LOT-999 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-test8 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / LOT-Mag 5 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today