Anti-snipe protection
DegenX applies a short, decaying tax to early curve buys. It discourages racing the opening transaction; it does not guarantee that bots cannot trade or that an early buyer will make a loss.
Creators choose the duration
Section titled “Creators choose the duration”- Select 1–60 seconds when creating a launch.
- The current protocol default is 5 seconds.
- In the ABI,
LaunchConfig.snipeTaxSeconds = 0means inherit the factory default. It does not request a zero-second window. - Values above 60 seconds revert.
- The chosen duration is copied into the new gauge. It cannot be changed for that launch later.
Read gauge.snipeTaxSeconds() to find a token’s actual duration. A 5-second assumption is incorrect for a creator who selected 30 or 60 seconds. The owner may change factory defaults for future launches, including disabling the default tax; that does not rewrite an existing gauge.
How the tax decays
Section titled “How the tax decays”The configured starting rate is currently 9,900 basis points (99%). Before the window ends:
elapsed = block.timestamp − launchTimerawBps = startBps >> floor(elapsed × 14 / windowSeconds)effectiveRate = min(rawRate, 100% − buyFee − creatorTax − 1%)The right shift halves the integer rate at each step. Once elapsed >= windowSeconds, the tax is zero. The cap leaves room for the regular fees and at least 1% of the gross input to reach the curve.
For a 5-second window, 1% buy fee, 0% creator tax, and a non-exempt buyer:
| Elapsed seconds | Effective anti-snipe tax |
|---|---|
| 0 | 98% (99% starting setting, clamped) |
| 1 | 24.75% |
| 2 | 3.09% |
| 3 | 0.38% |
| 4 | 0.04% |
| 5 or later | 0% |
This is additional to the regular buy fee. The contract uses block timestamps and integer rounding, so do not interpolate it as a smooth linear countdown.
Exemptions and distribution
Section titled “Exemptions and distribution”The original creator and initial fee recipient are exempted at initialization. A creator may also supply up to 32 additional exemption entries. The exemption mapping is fixed at creation; changing the fee recipient later does not rewrite it.
The tax applies to buys, not sells. Collected anti-snipe tax enters the standard fee-distribution bucket; it is not a token burn.
Integration rules
Section titled “Integration rules”Read snipeTaxRate(buyer) on the gauge. It returns a 1e18-scaled fraction, not basis points. quoteBuyExactQuote(quoteIn, buyer) already includes this rate.
The deployed launchpad uses msg.sender as the buyer and recipient. A custom intermediary router becomes that caller; do not assume passing an end-user address to an off-chain quote makes execution use that user’s exemption. There is no generic recipient argument in the deployed curve-buy entry point.
Buy, sell and quote examples use direct wallet calls and match these semantics.