CrossrateTaxHook on Arc
Uniswap v4 Hook Contract 0xb37b3d46b89b6d135e70763697f2f2c6dbaaa0cc on Arc · Launchpad · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $66
- All-time volume
- $7.31K
- Pools using this hook
- 6
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 502
What it does
Charges a fixed 3% to 10% tax on swaps priced in the paired currency of a crossrate.market pool, accrues it in the hook, and lets anyone trigger payout that sends most of it to the coin creator and 2% of the rate to the platform.
How it works step by step
- Rejects initialization of any pool not registered by the launcher, with a rate between 3% and 10%
- Carves a fixed percentage of paired-currency swap flow into the hook as a return delta
- Splits each accrued amount into a 2% platform share and a remainder for the coin creator
- Accrues balances as pending amounts that anyone can pay out via distribute
- Converts payouts to native ETH through a configured bridge route, or pays native-quoted pools directly
- Swap behaviour
- On exact-input swaps where the paired currency is the input, the tax is carved out of the input in beforeSwap; on other swaps where the paired currency is the unspecified side, the tax is carved out in afterSwap. Accrued amounts are minted as claim tokens to the hook.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- Charges a per-pool tax of 3% to 10% (set at registration, immutable afterwards) on swaps in the paired quote currency, carved out of the swap delta via beforeSwap or afterSwap return delta. Of each carved amount 2% of the rate (PROTOCOL_TAX_BPS share of the rate) goes to the platform wallet and the rest to the coin creator. The pool's own LP fee is unchanged.
- Owner & admin controls
- No pause, owner or upgrade path. The binder address can bind the launcher once, set payout routes (V4 bridge or V3 direct) and set default payout routes; the launcher can register pool rates once per pool via registerRate. Tax rates are fixed per pool between 3% and 10% and the protocol share is a constant 2% of the rate.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize requires the pool to be registered by the launcher before it can be initialized. beforeSwap and afterSwap take the tax from the swap as return deltas on the quote currency and mint claim tokens to the hook so the delta settles. beforeSwapReturnDelta and afterSwapReturnDelta are enabled so those deltas are honoured.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The binder can redirect payout routes for quote currencies and choose the bridge pool and fees used to convert accrued tax to ETH, which can make payouts revert or route through thin liquidity. The binder can also set the default route used for future pools. The platform recipient address is immutable. No key can change an existing pool's tax rate or the protocol share.
Risk to user funds: Traders pay the tax on swaps in the quote currency, which the hook holds as claim tokens until distribute converts it to ETH and pays the creator and platform. The hook can take up to 10% of quote-side swap volume by design. Pool liquidity itself is not controlled by the hook.
Security findings
- [medium] Binder controls payout routes and bridge pools: A binder-controlled payout route determines which hookless pool is used to convert accrued tax. A bad or illiquid route makes distribute revert and leaves funds pending rather than lost, but a manipulated route can extract value from the converted amount.
- [medium] Payout conversion has no slippage protection: distribute and unlockCallback are permissionless to trigger; the callback swaps through hookless pools with sqrtPriceLimit set to the extremes and amountOutMinimum of 1 on the V3 leg, so the conversion is not protected against sandwiching or slippage.
- [low] Accrued tax held in the hook until distributed: The contract holds pool claim tokens and pending balances accrued from swaps; if distribution is never called, tax balances remain stuck in the hook until the keeper or anyone calls distribute.
- [info] Tax parameters are immutable per pool: Tax is charged on a fixed rate in the quote currency only, and rates are immutable after registration, which limits how a privileged key can change trader costs.
- [info] No pause or upgrade path: The contract has no pause and no upgrade mechanism, and the launcher can only register rates, not change them.
Contract details
- Verified source
- Yes (CrossrateTaxHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 11,459 bytes
- Upgradeable proxy
- No
- Detected patterns
- launchpad, moves-currency, return-delta, self-unlock, tax
Pools using CrossrateTaxHook
- NVDA / STOCKDOG (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / ARCFROG (1.00% fee) — 24h volume $0, TVL $36, 0 swaps today
- CRCL / ARC (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / ASTROARC (1.00% fee) — 24h volume $0, TVL $1.43, 0 swaps today
- APPLE / AAPL (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / SUNNY (1.00% fee) — 24h volume $0, TVL $29, 0 swaps today