AlphaHook3Pct on BNB Chain
Uniswap v4 Hook Contract 0x10d46c0ea45c5257a1e29c8dced7ede70125e0c4 on BNB Chain · Dynamic fee · Verified contract
- Volume (24h)
- $0.05
- Value locked (TVL)
- $1.18
- All-time volume
- $87.93K
- Pools using this hook
- 6
- Swaps (24h)
- 1 (1 traders)
- Total swaps
- 1,742
What it does
A dynamic-fee hook for BSC tokens quoted in USDT, USDC or USD1 that starts new pools at a 3% fee and lowers it toward 0.30% as volatility and trade size settle, while taking a 20% protocol share of the LP fee from swappers.
How it works step by step
- Requires dynamic-fee pools with exactly one USDT, USDC or USD1 side and rejects other pairs at initialisation
- Seeds new pools with maximum volatility and volume state so the opening trade pays the cap
- Computes the swap fee each trade from a 60-second volatility window EMA plus an in-progress tick move
- Adds a volume component from an EMA of stable-side swap size, capped at 0.10%
- Takes 20% of the LP fee amount from swappers via afterSwap return delta and holds it in the hook
- Lets anyone call claimFees to send held balances to the fixed fee recipient
- Swap behaviour
- On every swap, beforeSwap sets the LP fee from the current volatility and size estimates. afterSwap updates the stable-side size EMA and takes 20% of the LP fee amount from the unspecified currency as a protocol fee.
- Liquidity behaviour
- No liquidity callbacks. Add and remove liquidity hooks revert with DisabledHook.
- Fee behaviour
- Dynamic LP fee set in beforeSwap as BASE 0.30% plus a volatility component (up to 2.60%) plus a volume component (up to 0.10%), capped at 3.00%. A protocol share of 20% of the LP fee amount is taken from the swapper in afterSwap via the return delta, on top of the LP fee. Newly initialised pools are seeded to the maximum fee and decay over roughly 10 to 15 minutes.
- Owner & admin controls
- No admin or owner role in the source. Fee parameters are compile-time constants pinned by the AlphaHook3Pct subclass. claimFees and claimFeesBatch are permissionless but can only send balances to the hardcoded FEE_RECIPIENT. No pause, upgrade proxy, or parameter setter was found.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, afterSwapReturnDelta
beforeInitialize: validates the pool is dynamic-fee, has exactly one accepted USD stable quote (USDT, USDC or USD1), and seeds the per-pool volatility and volume state. beforeSwap: computes and overrides the LP fee for each swap. afterSwap: updates the volume EMA and takes the protocol fee as a return delta. afterSwapReturnDelta: allows the hook to claim a share of the swap output.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: No privileged key exists. The only privileged caller is the PoolManager, which is the required msg.sender for swap and initialize callbacks. Fee recipient is immutable in code, so no key can redirect fees.
Risk to user funds: The hook can take a protocol share of swap output via the return delta and holds those tokens until claimFees is called. It cannot block swaps, move LP liquidity, or redirect funds because recipient and fee parameters are immutable. Permissionless claims send balances only to the fixed recipient.
Security findings
- [info] Protocol fee is charged to swappers via return delta: afterSwap takes a 20% share of the LP fee amount through a return delta, which increases the effective price paid by traders above the nominal pool fee. A launch-window trade can pay up to about 3.6% total.
- [info] Hook holds accrued protocol fees: The hook calls poolManager.take to hold the protocol fee in its own balance, and claimFees can sweep any currency it holds to FEE_RECIPIENT. Balances can therefore accumulate in the hook contract until claimed.
- [low] Fee signals are influenced by trade flow: The volatility and volume EMAs are updated by ordinary swaps and can be pushed up by a trader moving price or size, raising fees for subsequent swappers. This is intended behaviour but means fees are manipulable by large trades.
- [info] USD calibration depends on accepted quote set: Only one stable quote is accepted per pool, and the volume component assumes 18-decimal USD-pegged tokens. Pools paired with a differently denominated quote would be mispriced, but pool registration rejects non-stable quotes.
Contract details
- Verified source
- Yes (AlphaHook3Pct)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 8,996 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, launchpad, moves-currency, return-delta
Pools using AlphaHook3Pct
- USDT / DOS (Dynamic fee) — 24h volume $0.05, TVL $1.18, 1 swaps today
- USDT / DJTB (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDT / 我的女友景甜 (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDT / DEBIT (Dynamic fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- MarsCoin / USDT (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- TMX / USDT (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today