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