MECHANICS / ANTI-SNIPE

Snipe tax

Model V2's answer to bots buying the first block. A tax on the quote leg of a buy, at its maximum in the launch second, decaying to nothing within seconds. Model V1 solves the same problem differently, with wallet and transaction caps in the token itself.

snipeBps(t) = snipeTaxStartBps >> floor(t × 14 / snipeTaxSeconds)

Fourteen successive halvings spread evenly across the window, done with right shifts so it stays in integer arithmetic. Fourteen because 214 exceeds the maximum 9,900 starting tax, which means the tax always reaches zero inside the window instead of cutting off while it is still meaningful. t is measured from launchedAt, set inside the launch transaction itself, so second zero is the first second the token is publicly buyable.

  • Both terms are snapshotted by the curve when it initializes, in the launch transaction. Retuning the factory afterwards governs later launches only; a curve already trading keeps the terms it opened under.
  • The factory's constructor sets snipeTaxStartBps = 9900 and snipeTaxSeconds = 15; the AGI deployment runs at 9900 and 5 seconds, set by the owner after deploy. The ceilings are 99% and 60 seconds.
  • The snipe tax is measured on the recipient, not on the signer. buy(quoteIn, minTokensOut, recipient) evaluates the rate and the exemption list against recipient — the address that receives the tokens — whoever sends the transaction. currentSnipeTaxBps(recipient) returns the rate that address would pay right now; query it with the recipient, not with the signing account.
  • A non-zero starting tax must also exceed the 20% combined-fee ceiling, so the launch-window tax always dominates the ordinary fee take. Setting it to zero is how the mechanism is switched off; a zero window is rejected rather than overloaded to mean the same thing.
  • Inside buy the applied rate is clamped so that feeBps + creatorTaxBps + snipeBps can never reach 100%: a taxed buy always returns something.
  • Exempt by default: the launching account and the creator fee recipient. Exempt by declaration: up to 32 addresses passed at launch, visible in the launch transaction.
  • The snipe tax is not burned and does not go to a separate address. It joins the base fee bucket and is split by the launch's frozen policy — protocol share to the protocol, the rest to the creator.
Read the exemption list before you buy

A creator can legitimately exempt up to 32 wallets so a team's opening buys clear at the untaxed price. That is the same mechanism as a bundle, and it is on chain in the launch transaction. The contract makes it visible; it does not make it fair.