Fee sharing hook on BNB Chain
Uniswap v4 Hook Contract 0x38c4a3d83b612a71578845e525f954b2ad276080 on BNB Chain · Fee sharing
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 2
- Swaps (24h)
- 4 (1 traders)
- Total swaps
- 4
What it does
This hook sets dynamic swap fees for its pools, takes a claim fee on fees owed to liquidity positions, and gives an authority the power to pause pools and adjust fee settings, though the exact direction of which trades pay more is not confirmed from the bytecode.
How it works step by step
- Enables dynamic fees on pools that use this hook (beforeInitialize checks the pool is a dynamic-fee pool and sets per-pool fee configuration such as min, max and flat fee values)
- Tracks a per-pool fee that is read by currentFee and autonomousFee, with pokeFee and clearPoke functions used to update or reset a poke-based fee for a pool
- Runs a deposit, withdraw and withdrawAndClaim flow that holds liquidity positions inside the hook and lets the hook settle with the pool manager through an unlock callback
- Accrues a claim fee on fees owed to positions and routes it to a claim fee recipient via claimFees, claimFeeFor, sweepClaimFee and setClaimFee
- Supports pausing the whole hook or individual pools (pause, setPaused, setPoolPaused, pausePool) with a pausedUntil timestamp
- Uses role-based authority checks through an authority address and operator approvals (setOperator, isOperator, canCall)
- Swap behaviour
- beforeSwap is enabled and returns a dynamic fee for the pool; the exact fee direction and amount depend on currentFee, autonomousFee and the pool's asymmetry setting (poolAsymmetry), which could not be fully resolved from decoded bytecode.
- Liquidity behaviour
- Liquidity add and remove hooks (beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity) are present as view-style selectors, and deposit, withdraw and withdrawAndClaim move liquidity through the hook using pool manager settlement and per-range accounting.
- Fee behaviour
- Fees are dynamic: the hook computes a fee per pool using poke state, flat fee, max fee and asymmetry settings, with a claim fee (claimFeeBps) taken on fees claimed by positions and sent to the claim fee recipient.
- Owner & admin controls
- An authority (setAuthority, owner-style role) can pause the hook and pools, change pool config and asymmetry, set claim fee and claim fee recipient, poke or clear fees, sweep claim fees and grant or revoke operator rights; the authority address is read from storage slot 0.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap
beforeInitialize validates the pool and sets its fee state; beforeSwap returns the dynamic fee for each swap; the hook is also expected to handle liquidity and donate callbacks through its selectors.
Security & trust assessment
Risk level: high, estimated (decoded bytecode, low confidence).
Who controls it: A single authority key controls fee configuration, claim fee destination, pausing and operator rights, and can sweep accrued claim fees.
Risk to user funds: The hook holds deposited liquidity and accrued fee balances and settles them with the pool manager, so a privileged or buggy path could affect user principal or claimable fees.
Security findings
- [high] Privileged fee and pause controls: Authority-gated functions such as setPoolConfig, setPoolAsymmetry, pokeFee, setClaimFeeBps and setPaused can change fees or halt pools, so a compromised authority could raise fees or block swaps for users.
- [medium] Hook moves currency: The bytecode contains take, transferFrom and unlock/settle paths along with the moves-currency tag, so the hook holds and moves pool tokens for deposits, withdrawals and claim fee payouts.
- [medium] Pausable swap path: The pausable tag and pause selectors indicate that beforeSwap can be blocked for a pool or globally, which could prevent trades.
- [info] Unverified source: No verified source is available, so the exact fee formulas, asymmetry direction and access checks were inferred from decoded selectors and storage only.
Contract details
- Verified source
- No
- Bytecode size
- 23,123 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, erc20, fee-sharing, moves-currency, pausable, self-unlock
Pools using Fee sharing hook
- tBNB / tUSDT (Dynamic fee) — 24h volume $0, TVL $0, 4 swaps today
- USDT / WBNB (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today