When a token opens, snipers take the bottom of the curve before a human finishes reading the ticker. Onset reshapes those opening blocks so being fast stops being worth anything.
A launch isn't unfair because people are greedy. It's unfair because the mechanism pays whoever has the lowest latency.
Change what the mechanism rewards and the outcome changes with it. That's the whole thesis — everything below is the engineering that follows from it.
Scroll to advance the opening. Orders enter a batch instead of executing on arrival — nothing settles yet, so nothing can be front-run.
None of these are exotic cryptography. They're auction design applied to the first sixty seconds of a token's life.
Orders in the window are collected and settled at a single uniform clearing price rather than in arrival order. Everyone in the batch pays the same. Being first buys you nothing, so the latency race loses its prize.
Each address is capped for the duration of the window. A bot operator can still split across a hundred wallets, but the cost of doing so scales linearly while the advantage gained does not.
The deployer signs the parameters — caps, window length, liquidity lock, allocation — before the pool opens. The commitment is public and verifiable, so terms can't quietly shift once buying starts.
Two dials decide almost everything. Widen the window and tighten the cap and bot share collapses — but the launch takes longer and price discovery slows. No setting wins on every axis.
How long orders are batched before settling at one clearing price.
Maximum share of opening supply a single address can take.
Share of incoming order flow coming from automated snipers.
Hover any block to inspect how it filled. These values also flow into the terms sheet you sign further down.
An illustrative model, not measured network data. Bot share decays as the window widens and the cap tightens, since neither speed nor size converts into advantage.
Price is a function of supply sold. The left edge is cheap by construction — which is exactly what makes the opening blocks worth attacking.
Move across the curve. The shaded band shows how far price can run inside the opening window at your current cap.
// commit launch terms, then open under them import { Onset } from "@onset/launch"; const launch = await Onset.prepare({ curve: { type: "exponential", reserve: "native" }, window: { blocks: 6, settlement: "uniform-price" }, perWallet: { capBps: 2000 }, liquidity: { lock: "180d", burnLp: true }, deployer: { allocationBps: 0 }, }); // terms are public before anyone can buy await launch.commit(signer); await launch.open();
Terms are only worth something if they're fixed in public beforehand. This sheet is generated from the simulator above — sign it and it becomes a commitment anyone can check.
Reads your public address, network, and balance. Nothing else is requested.
Your wallet shows the exact terms as plain text. Read them there — never trust what a website claims it's asking for.
The signature recovers to an address. If it matches the deployer, the terms are provably theirs — no trust in Onset required.
Wallet extensions can't inject into an embedded preview frame — open the deployed page in a real tab, or walk through the flow above.