OGHook on Ethereum

Uniswap v4 Hook Contract 0x22fded8abce0d93979ebb2a04cfc37c110abe0cc on Ethereum · Launchpad · Verified contract

Volume (24h)
$1.22K
Value locked (TVL)
$7.89K
All-time volume
$512.97K
Pools using this hook
1
Swaps (24h)
9 (8 traders)
Total swaps
2,486

What it does

An immutable ETH-to-OG launch pool hook that charges a launch-decaying fee on sells and distributes collected fees to activated NFT holders, a team cut and a surplus stream.

How it works step by step

  • Locks the pool to one ETH and OG pair with a 1.25% base fee and records the opening time at pool initialization
  • Applies a sell fee that starts at 50% and decays linearly to 3.5% over 60 minutes, and a fixed 3.5% fee otherwise
  • Splits each fee into 1% to the team address, a holder-reward share and a surplus stream scheduled over 30 days
  • Pays fees in ETH from the PoolManager, or mints ERC-6909 claims when ETH is short and lets anyone redeem them later
  • Lets NFT holders activate levels by burning OG or buying OG with ETH, earning a share of holder rewards
  • Lists exited NFTs in a permissionless Dutch auction whose proceeds for OG are burned
Swap behaviour
Sells of OG for ETH pay a fee starting near 50% and decaying to 3.5% over 60 minutes after opening; buys and later sells pay a fixed 3.5% fee. ETH-specified swaps are priced with a reverting self-quote so the fee applies only to the actual ETH moved, and fees are split between holder rewards, a surplus stream and a 1% team cut.
Liquidity behaviour
No liquidity callbacks. Liquidity is managed by the standard PoolManager flow; the hook does not add or remove liquidity.
Fee behaviour
Buys on a pool that trades ETH for the OG token (the hook has a fixed 1.25% pool fee) and sells pay a launch-decaying fee starting at 50% of the swap and decaying linearly to 3.5% over 60 minutes after pool opening; the 3.5% rate applies to all sells thereafter and to buys. Of each fee, 1% of gross goes to the TEAM address and the rest is split between holder rewards and a surplus stream routed to the distributor. Fees are taken as ETH via the PoolManager or, when the manager lacks ETH, minted as ERC-6909 claims and redeemed later.
Owner & admin controls
No owner or admin role. The hook is immutable: the team address, collection address, fee constants and pool parameters are constants, and the distributor and auction have no withdrawal or administrative roles. The only non-user action is payTeam, which can retry sending accrued team ETH to the fixed TEAM address.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize restricts pool creation to the factory with the expected currency pair, fee and tick spacing, and records the opening time. beforeSwap sets the dynamic launch fee for ETH-specified swaps by running a reverting self-quote to compute the exact ETH amount, and returns the fee as a before-swap delta. afterSwap computes and distributes fees (rewards, surplus, team), taking ETH from the manager or minting claims, and emits FeeSplit. beforeSwapReturnDelta and afterSwapReturnDelta let the hook take its fee from the swap amounts.

Security & trust assessment

Risk level: medium (verified source, high confidence).

Who controls it: No privileged key exists in the contracts as written, so no single party can change fees, pause swaps or move funds. Risk is concentrated in the immutable design rather than in an admin.

Risk to user funds: The hook itself holds only transient ETH and ERC-6909 claims during swaps and fee distribution; it does not custody user principal. Users' ETH and OG tokens are exposed to the 50% launch fee on sells in the first hour and the pool's fee routing, and the distributor holds accumulated reward ETH for activated NFT holders. Activation burns OG and exit moves the NFT to a public auction; no function lets an operator withdraw user funds.

Security findings

  • [info] Reentrant self-quote for ETH-specified swaps: The beforeSwap quote path performs a nested PoolManager swap inside a reverting self-call and relies on a busy flag and a stored quote; the design is intentionally reverted, but correctness depends on the manager behaving as expected and on the afterSwap check that the delta equals the quoted value.
  • [info] Hardcoded team fee recipient: Team fee of 1% of gross is sent to a fixed TEAM address by a low-level call; if the send fails it is retained in teamCredit and retried by payTeam, so payment cannot be blocked permanently but funds are paid to a hardcoded address.
  • [low] Deferred fee claims depend on redemption: Fees can be minted as ERC-6909 claims when the PoolManager lacks ETH, and holder rewards remain unfunded until redeemed via redeemFees; exit calls redeemFees only when unfundedFees is nonzero, so payouts depend on claim redemption succeeding.
  • [low] Exit value depends on the auction: The distributor and auction are deployed by the hook and have no admin roles, but exit lists the NFT into a permissionless Dutch auction whose sale price decays to a floor; the outcome for exiting holders depends on market demand.

Contract details

Verified source
Yes (OGHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
7,325 bytes
Upgradeable proxy
No
Detected patterns
launchpad, moves-currency, return-delta, rewards, self-unlock

Pools using OGHook