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 = 9900andsnipeTaxSeconds = 15; the AGI deployment runs at9900and 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 againstrecipient— 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
buythe applied rate is clamped so thatfeeBps + creatorTaxBps + snipeBpscan 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.
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.