DaemonHook on Robinhood Chain
Uniswap v4 Hook Contract 0xc79df4190d14ea399001320b1607c36014056888 on Robinhood Chain · Custom pricing · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 80
What it does
A protocol-owned constant-product (x*y=k) pool for DAEMON/CREDIT where all liquidity is held by the hook itself, so traders swap against it with a 4% fee that stays in the reserves, and outside LPs can only add liquidity without any way to withdraw it.
How it works step by step
- Replaces core-pool pricing with an internal x*y=k curve between DAEMON and CREDIT reserves
- Charges a fixed 4% fee on input that remains in the reserves, deepening liquidity over time
- Holds reserves as ERC-6909 claims on the PoolManager, so swaps need no token transfers
- Permits permissionless addLiquidity at the current ratio; blocks all core-pool liquidity additions and removals
- Tracks a Uniswap v2 style cumulative price for use as a manipulation-resistant TWAP
- Swap behaviour
- Every swap is priced by the hook on x*y=k with a 4% input fee. beforeSwap mints ERC-6909 claims for the input, burns claims for the output, updates the stored reserves, emits HookSwap, and returns a delta so the core pool does no swap math.
- Liquidity behaviour
- Liquidity is never provided by the core pool. Reserves are tracked in storage and held as ERC-6909 claims on the PoolManager. Only the owner (seed) and public addLiquidity can add liquidity (addLiquidity is permissionless, pulling DAEMON and CREDIT at the current ratio and minting claims). beforeAddLiquidity reverts for any core-pool liquidity change, and beforeRemoveLiquidity reverts; there is no function that removes liquidity from the reserves.
- Fee behaviour
- Fixed 4% (400 bps) fee charged on the input amount inside getAmountOut/getAmountIn; the fee is left in the reserves and so accrues to protocol-owned liquidity. The core pool itself uses a zero LP fee.
- Owner & admin controls
- Owner (Ownable2Step) can call seed once (only before reserves are set), and can upgrade the implementation via UUPS _authorizeUpgrade (onlyOwner, no timelock visible). Owner can transfer or renounce ownership. No pause, no fee-setting, and no withdrawal function for liquidity; the owner cannot directly remove reserves through hook functions, but can upgrade the logic to anything.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeSwap, beforeSwapReturnDelta
beforeInitialize: restricts pool creation to the hook itself (sender must be this contract). beforeAddLiquidity: always reverts, so no external LP positions can be created in the core pool. beforeSwap: prices the swap on an x*y=k curve with a 4% input fee, mints claims for input and burns claims for output, updates reserves, emits HookSwap, and returns a BeforeSwapDelta so the core pool does no swapping. beforeSwapReturnDelta: enables the hook to take over the swap's delta, which is what lets it replace the core pool's pricing.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The owner can upgrade the implementation at any time through UUPS, with no timelock visible in the source. A malicious upgrade could drain the ERC-6909 claims the hook holds (via burn and then settle/take paths), change pricing, or lock the pool. The owner also controls initial seeding and ownership transfer.
Risk to user funds: The hook holds all DAEMON and CREDIT reserves as ERC-6909 claims on the PoolManager. Traders' input is taken into these reserves and output is paid from them. Liquidity providers via addLiquidity cannot withdraw. Funds are exposed to the owner's ability to upgrade the implementation, which could move or block them.
Security findings
- [high] Owner-controlled UUPS upgrade over all pool reserves: The owner can call upgradeToAndCall with arbitrary implementation logic (_authorizeUpgrade is onlyOwner with no delay). A single key compromise or malicious upgrade could move all reserves held by the hook.
- [medium] Hook fully overrides pool pricing via return delta: beforeSwap returns a BeforeSwapDelta that replaces the core pool's swap. The hook is the sole pricing and accounting authority, so any bug in _swap or the claim accounting directly affects reserves.
- [low] Internal spot price is a constant-product oracle: Swap pricing uses the internal reserves, not the core pool's price. Spot price is trivially movable by a large trade, and the cumulative price oracle is a plain TWAP over that spot price, so short-window manipulation via large swaps is possible within a block with sufficient capital.
- [info] No liquidity withdrawal path by design: Pool and state can be altered only through the owner-controlled upgrade or the seed function, which reverts once reserves are set; liquidity cannot be withdrawn by design, which removes LP exit risk for users but also means the owner cannot rescue funds without an upgrade.
Contract details
- Verified source
- Yes (DaemonHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 176 bytes
- Upgradeable proxy
- Yes
- Detected patterns
- erc20, erc6909-claims, moves-currency, ownable, return-delta, self-unlock, upgradeable
Pools using DaemonHook
- DAEMON / CREDIT (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today