ClaudiusHook on Ethereum
Uniswap v4 Hook Contract 0x03094f9459488cde6652d084e86d4c78d6b1aacc on Ethereum · Token · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 64 (28 traders)
- Total swaps
- 64
What it does
Every swap of the ETH/CLAUDIUS pool pays a tax of 3% of the ETH side, starting at 35% and falling to 3% over the first 10 minutes, so early buys and sells pay far more than later ones.
How it works step by step
- Charges a trading tax on every swap of the native ETH / CLAUDIUS pool, taken as a hook return delta on the ETH side of the trade
- Starts the tax at 35% at launch and decays linearly to 3% over the first 10 minutes (anti-sniper), with the excess above 3% going 80% to the treasury and 20% to the team
- Splits the 2% community share through the court contract's currentSplit into treasury, buyback-and-burn, holder cashback and an event purse; the 1% team share goes to the team wallet
- Holds the pool liquidity directly inside PoolManager (no position NFT), seeded once via openCourt by the team wallet
- Lets only lpAdmin withdraw that liquidity via sealVault, emitting VaultSealed each time
- Accumulates pending ETH in storage and distributes it permissionlessly through collectTribute
- Swap behaviour
- Every swap pays a tax on its ETH side: beforeSwap takes the tax when ETH is the specified side, afterSwap takes it when ETH is the unspecified side. The tax is taxBps() of the ETH amount, which is 35% at launch falling linearly to 3% after 10 minutes. Buys and sells are taxed by the same rate; the code does not distinguish direction for the rate.
- Liquidity behaviour
- beforeAddLiquidity and beforeRemoveLiquidity revert unless the sender is the hook itself, so only the hook's own vault position can be modified. External LPs cannot add or remove liquidity through this pool.
- Fee behaviour
- The pool LP fee is 0; the hook tax is the only fee. The tax is taken as a hook return delta and accrued into pending buckets: 1% of trade to team, 2% community split by the court's current decree, and any anti-sniper excess split 80% treasury and 20% team.
- Owner & admin controls
- No pause or upgrade mechanism is visible; the contract is not a proxy and the tax parameters are constants or immutables. lpAdmin (immutable) alone can withdraw vault liquidity via sealVault, and team (immutable) alone can open the court once. The court contract address is immutable but the court itself, which decides the community split via currentSplit, is an external contract whose logic was not provided.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize restricts the pool to native ETH / CLAUDIUS with fee 0 and tickSpacing 60 and records its poolId and launch time. beforeSwap and afterSwap take the tax as return deltas and accrue it. beforeAddLiquidity and beforeRemoveLiquidity gate liquidity so only the hook can modify it. beforeSwapReturnDelta and afterSwapReturnDelta let the hook take tokens from swaps.
Security & trust assessment
Risk level: medium (verified source, medium confidence).
Who controls it: lpAdmin can withdraw all hook-owned pool liquidity at any moment; team can seed the pool once and receives the 1% team share. Neither key can change the tax rate or the team share, which are constants.
Risk to user funds: The hook itself holds ETH and tokens pending distribution and the hook-owned LP; traders' swap amounts are subject to the tax taken by the hook, and lpAdmin can drain pool liquidity, which would leave trades executing at worse depth.
Security findings
- [medium] Liquidity withdrawal by a single key: lpAdmin can call sealVault at any time to remove all hook-owned liquidity and send the ETH and tokens to any recipient; this is a single-key ability over pool depth, though each call emits VaultSealed.
- [medium] Hook takes swap value via return deltas: beforeSwapReturnDelta and afterSwapReturnDelta let the hook take up to 35% of the ETH side of every swap at launch, and the tax rate is computed from block timestamp.
- [low] External court controls the community split: collectTribute trusts court.currentSplit() to return bps summing to 10000 and court.fundPurse() to accept ETH; a malicious or buggy court could misroute the community share, though the court address is immutable.
- [low] Unbounded ETH send to court and team: _send uses a raw call forwarding all gas, and a revert in the court or team receiver makes collectTribute revert, blocking distribution until fixed.
- [info] Incomplete source coverage: The court and token contracts are referenced but not provided, so the behaviour of burn, distribute and currentSplit could not be verified.
Contract details
- Verified source
- Yes (ClaudiusHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 10,057 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc20, launchpad, liquidity-management, moves-currency, return-delta, self-unlock, tax