BrownieHook on Ethereum
Uniswap v4 Hook Contract 0x1d41df4bbf9cae6a5f163d4792262ce1d9053fff on Ethereum · Launchpad · Verified contract
- Volume (24h)
- $5.36K
- Value locked (TVL)
- $304
- All-time volume
- $98.03K
- Pools using this hook
- 1
- Swaps (24h)
- 4 (2 traders)
- Total swaps
- 334
What it does
A launch hook for the ETH/BROWNIE pool that charges every buy and sell an ETH fee of 0.30% plus an owner-module-set project fee (capped, at most 20%), a launch tax of up to 30% for the first blocks, per-wallet buy caps during launch, and restricts liquidity to the launcher and owner, whose module can block withdrawals.
How it works step by step
- Charges a fee in ETH on every buy and sell of the BROWNIE token: a 0.30% platform fee plus a project fee that a replaceable module sets, capped at deployment (comments state 3%, hard code limit 20%).
- For the first few blocks after launch (at most 50 blocks) a fixed launch tax of up to 30% applies instead, with the excess over the base fee going to a fixed launch-tax wallet.
- During an initial launch window, each wallet can only buy up to a set share of supply and only through approved routers.
- Only the launcher and later the owner (via Uniswap's PositionManager, after the launch window) can add liquidity.
- Fees are held as claims and anyone can trigger payouts to the harvester, platform, and launch-tax wallet; the module can take its own capped share.
- Swap behaviour
- Each swap pays a fee on the ETH side, taken from ETH input on buys or from ETH output on sells; swaps that would only partially fill are refused. During the launch window buys are limited per wallet and must go through approved routers, and in the first launch blocks a launch tax of up to 30% applies.
- Liquidity behaviour
- Only the launcher and the owner (through the PositionManager after the launch window) can add liquidity. On withdrawals, the owner-installed module can be asked to approve and its revert blocks the removal, so the owner's module can gate LP withdrawals, including those of the owner's own position.
- Fee behaviour
- Fee = 0.30% platform fee plus a project fee chosen by the module within fixed ceilings (configured max, hard limit 20% per side; documented as 3%), or a fixed launch tax up to 30% for at most 50 blocks. The project fee goes mostly to the harvester (stakers/main wallet), with an optional capped module share, and launch-tax excess to a fixed wallet.
- Owner & admin controls
- The owner can propose and apply a new module (delay is zero for this deployment) or clear it instantly; the module sets the swap fee within fixed ceilings (max 20% hard cap) and its share up to a fixed cap, and can block liquidity removals and donations. Ownership transfers are two-step; no other setters exist.
Enabled Uniswap v4 callbacks
beforeInitialize, afterInitialize, beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity, beforeSwap, afterSwap, beforeDonate, afterDonate, beforeSwapReturnDelta, afterSwapReturnDelta, afterAddLiquidityReturnDelta, afterRemoveLiquidityReturnDelta
beforeInitialize: lets only the launcher open the single pool; afterInitialize: notifies module; beforeAddLiquidity: restricts who adds liquidity; afterAddLiquidity: no-op; beforeRemoveLiquidity: calls module, which can block withdrawal; afterRemoveLiquidity: notifies module, failures ignored; beforeSwap: sets fee and takes ETH-input fee; afterSwap: takes ETH-output fee, enforces wallet cap, notifies module; before/afterDonate: module hooks (before can block); return-delta flags: used to collect swap fees, liquidity deltas always zero.
Security & trust assessment
Risk level: high (verified source, high confidence).
Who controls it: The owner controls which module runs; the worst case is setting fees to the deployed ceiling (at most 20% plus 0.30%) and installing a module that blocks liquidity removal or donations.
Risk to user funds: Traders lose 0.30% plus the project fee (up to the ceiling, hard-capped at 20%) per swap, or up to 30% in the first launch blocks. LP principal (launcher/owner positions) can be locked by a module that reverts on removal, but cannot be drained by the hook.
Security findings
- [high] Module can block LP withdrawals: beforeRemoveLiquidity calls the owner-chosen module in blocking mode, so a module that reverts traps liquidity in the pool. Only the launcher and owner provide liquidity, limiting who is affected.
- [medium] Owner-replaceable fee module with no delay: The owner can swap in a new module immediately, changing the project fee anywhere up to the deployed ceiling (hard-coded max 20% per side, plus 0.30% platform).
- [medium] Launch tax up to 30%: For at most 50 blocks after opening, buys and sells pay a fixed launch fee of up to 30%; it can never be extended or reinstated.
- [info] Immutable hook core: Not a proxy; fee ceilings, recipients, and launch parameters are fixed at deployment.
Contract details
- Verified source
- Yes (BrownieHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 17,560 bytes
- Upgradeable proxy
- No
- Detected patterns
- launchpad, moves-currency, ownable, return-delta, self-unlock, tax
Pools using BrownieHook
- ETH / stick (0.00% fee) — 24h volume $5.36K, TVL $304, 4 swaps today