ContentCoinHook on Base
Uniswap v4 Hook Contract 0xff74be9d3596ea7a33bb4983dd7906fb34135040 on Base · Rewards · Verified contract
- Volume (24h)
- $0.10
- Value locked (TVL)
- $226
- All-time volume
- $195.84K
- Pools using this hook
- 122,319
- Swaps (24h)
- 4 (2 traders)
- Total swaps
- 81,386
What it does
Hook for Zora content coin pools that, on every swap, collects LP fees, reinvests 20% as single-sided liquidity, converts the rest to a backing currency and pays it out to the creator, referrers, protocol and Doppler.
How it works step by step
- On pool initialization, verifies the caller is a registered V4 coin and mints the coin's multi-curve (Doppler-style) liquidity positions from the hook itself.
- After every swap, collects accrued fees from all hook-owned positions via zero-liquidity modifyLiquidity calls.
- Reinvests 20% of the collected fees as a new single-sided LP position placed two tick spacings away from the current tick.
- Swaps the remaining 80% through the coin's payout swap path (possibly multi-hop) into a backing currency and takes it to the hook.
- Splits the payout: 62.5% creator, 25% platform referrer, 5% trade referrer (read from hookData), 1.25% Doppler, remainder to protocol. Amounts for a missing referrer fall into the protocol remainder.
- Supports migrating all liquidity to a new hook through an upgrade-gate-approved path, callable only by the coin.
- Swap behaviour
- The afterSwap callback runs the fee-harvest and reward flow. It looks up the coin for the pool (reverting with NoCoinForHook if none), collects fees, mints the LP reward, swaps the rest into the payout currency, transfers rewards to recipients and emits a Swapped event with the sender, original msg.sender (if the router exposes it), deltas and price. It returns a zero hook delta, so the trader's swap amounts are not changed.
- Liquidity behaviour
- No liquidity callbacks. The hook itself owns and manages the pool's liquidity positions: it mints them at initialization, adds LP-reward positions after swaps, and can burn them all during migration.
- Fee behaviour
- The pool uses a static 1% LP fee (10000 in MarketConstants; tick spacing 200). The hook does not override the fee. Fees accrue to the hook-owned positions and are split on each swap: 20% re-added as LP liquidity and 80% paid out as market rewards (creator 62.5% of that, platform referrer 25%, trade referrer 5%, Doppler 1.25%, protocol remainder).
- Owner & admin controls
- No owner, pause or fee-setting functions in the hook. Parameters such as the coin version lookup, upgrade gate and trusted message senders are immutable or constructor-set. Reward recipients are read from the coin contract at swap time. The only privileged paths are migrateLiquidity (callable only by the pool's coin, and only to a destination registered in the external upgrade gate) and initializeFromMigration (callable only by a registered old hook). Whoever controls the upgrade gate and the coin contracts controls these paths; that code was not provided. Part of the source (ContractVersionBase and some utility libraries) was omitted from the input.
Enabled Uniswap v4 callbacks
afterInitialize, afterSwap
afterInitialize registers the coin for the pool and mints the initial liquidity positions (or returns early when the hook itself initializes a migrated pool). afterSwap harvests fees, compounds an LP reward, converts and distributes market rewards, and emits the Swapped event.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The hook has no owner. Control rests with the coin contracts (reward recipients, swap path, pool config, who may trigger migration) and with the upgrade gate (which migration paths are allowed). A compromised gate or coin could move the pool's liquidity to a different hook.
Risk to user funds: Traders' funds are not held by the hook. The hook owns the pool's LP positions and temporarily holds fee tokens it takes from the PoolManager before paying them out in the same swap. It can burn all positions and transfer the proceeds during an approved migration. A receive function accepts ETH only from the PoolManager. Swaps can be blocked if the reward-distribution calls revert.
Security findings
- [medium] Swaps depend on external coin contract calls: afterSwap calls getPayoutSwapPath, payoutRecipient, platformReferrer, protocolRewardRecipient and dopplerFeeRecipient on the coin. A coin that reverts or returns bad data, or a payout transfer to a ETH-rejecting recipient (EthTransferFailed), would revert the swap.
- [low] Hook swaps fees inside the swap callback: Fee conversion uses poolManager.swap with the full price range limit and no slippage protection, so conversion can be sandwiched or can execute at poor prices. Each swap also costs extra gas for multiple modifyLiquidity and swap calls.
- [medium] Liquidity migration to another hook: migrateLiquidity burns every position and sends all resulting tokens to a new hook that must be registered in the upgrade gate and support the destination interface. Pool liquidity is therefore only as safe as the coin and the upgrade gate's registration controls.
- [info] Rewards routed to externally defined recipients: Recipients come from the coin contract, and the trade referrer is taken from the first 20 bytes of caller-supplied hookData. Referral share goes to whichever address the trader or router specifies.
- [info] No return deltas and no hook-level admin keys: Permissions enable only afterInitialize and afterSwap, with no return-delta flags, so the hook cannot alter swap pricing or take swap proceeds through deltas. It has no owner-settable fee.
Contract details
- Verified source
- Yes (ContentCoinHook)
- Compiler
- solc 0.8.28+commit.7893614a
- Bytecode size
- 21,123 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, rewards, self-unlock
Pools using ContentCoinHook
- MarketStructureDC / WETH (1.00% fee) — 24h volume $0.10, TVL $4.34, 2 swaps today
- CDB / coinology (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- janicemascarenhas / prescription (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- ZORA / Monkey1 (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- she got her own 🔮 / grassyrui (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- gloriasanz / zora (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- bc04bkk / CableCar (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- I have often heard people say if you take a decision and you can / USDC (1.00% fee) — 24h volume $0, TVL $0.20, 0 swaps today
- FENVAULT / fenandfriends (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- Fly at your own risk! 😂 shoutout to seecomedylive #seecomedylive#comedyshow#comedy#standupcomedy #funny / reggie_kush (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- BASECAMP / USDC (1.00% fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- -TheStoryofMarvelCollectible / thestoryofmarvel (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- Tomorrow is weekend I'm happy 😁 / USDC (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- cz37813 / ZoraPEPEHope (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- 🇺🇸 NEW: President Trump posts to Truth Social showing the mark / USDC (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- China invented the first paper money around the 7th century Tang / USDC (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- sriana / FXX (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- babydogetop / ZoraBabyDogeTrendy (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- SKY / thetamela (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / Tup (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today