NoCurveHook on Ethereum
Uniswap v4 Hook Contract 0x2f91037e3a518c8fca42a517333a1887ed96fec0 on Ethereum · Dynamic fee · Verified contract
- Volume (24h)
- $96
- Value locked (TVL)
- $2.06K
- All-time volume
- $719.10K
- Pools using this hook
- 1
- Swaps (24h)
- 1 (1 traders)
- Total swaps
- 3,426
What it does
A stair-step ETH/token pool where buys pay the base fee and sells pay a 3% fee that drops toward the base fee as price climbs above the seller's entry level, with all fees going to LPs, cooldown-locked LP withdrawals and permanently locked seeder liquidity.
How it works step by step
- Runs a single ETH/token pool where liquidity can only be placed in fixed 'stair-step' price bands, so price is flat within a level and jumps between levels.
- Buys (ETH to token) pay the pool's base fee set at deployment (described as 1%); sells pay an exit fee of 3% that drops by the base fee per level the price has climbed since the seller first bought, down to the base fee.
- Sell fees go to LPs as normal pool fees; the hook does not take any tokens itself.
- Tracks early buyers per level and records 'credits' and level founders on-chain for off-chain reward bookkeeping; no tokens are moved by the hook.
- Imposes an LP lock: the genesis seeder's liquidity can never be removed, and other LPs must wait a fixed cooldown after each add before withdrawing.
- Swap behaviour
- Buys pay the fixed base fee; sells pay 3% if the seller has no recorded entry or price is at/below their entry level, falling by the base fee per level climbed, floored at the base fee. The seller is identified from hookData or tx.origin, so sending a different address in hookData can change the fee charged.
- Liquidity behaviour
- Liquidity can only be added in canonical band ranges, and each add resets a fixed cooldown (set at deployment) before that position can be withdrawn. The seeder's genesis liquidity is permanently locked and can never be removed.
- Fee behaviour
- Dynamic LP fee: buys pay the immutable base pool fee (intended 1%); sells pay between the base fee and a hard cap of 3%, and all fees accrue to LPs in the pool.
- Owner & admin controls
- No admin controls found; all parameters including base fee, band sizes and cooldown are immutable constructor values.
Enabled Uniswap v4 callbacks
beforeInitialize, afterInitialize, beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap
beforeInitialize restricts the hook to one ETH/token dynamic-fee pool; afterInitialize sets the anchor tick and base fee; beforeAddLiquidity enforces band ranges and starts the LP cooldown; afterAddLiquidity records level founders; beforeRemoveLiquidity blocks seeder withdrawals and enforces the cooldown; beforeSwap sets the buy/sell fee; afterSwap tracks levels, entries and early credits.
Security & trust assessment
Risk level: high (verified source, high confidence).
Who controls it: There is no owner or admin; all settings are immutable. The only privileged role is the seeder, whose own liquidity is locked forever.
Risk to user funds: The hook never holds or moves user tokens; swaps pay between the base fee and 3% to LPs. LP principal is time-locked by the cooldown, and seeder liquidity is locked permanently.
Security findings
- [high] Seeder liquidity permanently locked: Any removal by the seeder address reverts forever, so the genesis liquidity can never be withdrawn by its owner.
- [medium] LP withdrawal cooldown: Non-seeder LPs cannot remove a position until a deployment-fixed cooldown has passed since their last add to that position; the length is set at deploy and not visible from source alone.
- [info] Sell fee capped at 3%: Sell fees range from the base fee up to 3% and buys pay the base fee; the hook takes no tokens via return deltas.
- [low] Fee tier depends on caller-supplied identity: The seller is taken from hookData, so a trader can name any address with a favorable entry level to get a lower sell fee, down to the base fee.
Contract details
- Verified source
- Yes (NoCurveHook)
- Compiler
- solc 0.8.30+commit.73712a01
- Bytecode size
- 17,442 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee
Pools using NoCurveHook
- ETH / NCRV (Dynamic fee) — 24h volume $96, TVL $2.06K, 1 swaps today