SHROUDHook on Ethereum
Uniswap v4 Hook Contract 0x285288314d9de1dad4b02a9cce1d14ac0ba860cc on Ethereum · Fee sharing · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 1 (1 traders)
- Total swaps
- 1
What it does
SHROUD's hook charges an ETH fee on swaps of the token, with buys starting high at launch and decaying to a lower rate while sells pay a flat rate, and the fees go directly to the project wallet.
How it works step by step
- Takes a buy fee and a sell fee in native ETH on swaps involving the SHROUD token and forwards it immediately to a fixed fee recipient via poolManager.take
- Buy fee starts at antiSniperBps at launch and decays linearly to buyBps over antiSniperSeconds, acting as an anti-sniper mechanism
- Sell fee is a flat sellBps applied to the ETH leaving the pool on exact-input token sells
- Only one pool can be opened, locked to the configured opener address and the agreed sqrtPriceX96 open price
- Owner can lower fees via setFees but never above the immutable maxBps cap (at most 25%)
- Hook address must encode the expected permission flags, and the fee recipient must be a non-contract address
- Swap behaviour
- Buys using exact-output of ETH (zeroForOne with negative amountSpecified) are not taxed in this branch; buys with exact-input of ETH pay the decaying buy fee taken from the ETH input via beforeSwap return delta. Exact-output token buys pay the buy fee on the ETH input amount in afterSwap. Sells of exact-input token pay the flat sell fee on the ETH output in afterSwap. Early buys pay up to antiSniperBps, later buys pay buyBps, and sells always pay sellBps.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- Dynamic hook fee in ETH: buy fee currentBuyBps() decays from antiSniperBps to buyBps over antiSniperSeconds after launch; sell fee is sellBps. Fees are sent directly to feeRecipient through poolManager.take and are not shared with LPs. The pool's static fee is not changed by this hook.
- Owner & admin controls
- Owner (single EOA or multisig) can change buyBps and sellBps up to maxBps, change feeRecipient to a non-contract address, transfer ownership, or renounce ownership. maxBps, antiSniperBps, antiSniperSeconds, token, opener and poolManager are immutable. No pause, no upgradeability, no withdrawal function.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize restricts pool opening to the configured opener at the agreed price and records launch time. beforeSwap takes the buy fee via return delta on exact-input ETH buys. afterSwap takes buy and sell fees on the ETH side via return delta and sends them to the fee recipient. beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to take a share of swap amounts.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: The owner can lower or raise fees within the immutable cap and redirect all future fee revenue by changing feeRecipient. The owner cannot pause swaps, move pool liquidity, or touch user balances directly.
Risk to user funds: The hook can take ETH from swaps as fees, bounded by maxBps and the decaying anti-sniper schedule, and sends it to feeRecipient. It does not hold user funds and cannot block swaps.
Security findings
- [medium] Owner can raise fees up to a cap: setFees lets the owner set buyBps and sellBps up to maxBps, which is capped at 2500 bps (25%) in the constructor, so users face at most a 25% tax if the owner acts maliciously.
- [low] Fee recipient is a single address: All fees are sent to feeRecipient via poolManager.take; compromise of the owner key lets an attacker redirect future fees to an address they control.
- [info] Hook takes currency via return deltas: beforeSwap and afterSwap return deltas that let the hook take ETH from swaps; this is the intended fee mechanism and is bounded by the fee rates.
- [info] Ownership can be renounced: renounceOwnership sets owner to zero, after which fees can no longer be changed.
Contract details
- Verified source
- Yes (SHROUDHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 4,627 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, fee-sharing, launchpad, mev-protection, moves-currency, ownable, return-delta
Pools using SHROUDHook
- ETH / SHROUD (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today