How ZeroTrace works.
ZeroTrace is a launchpad on Solana built around two problems: launches are traced back to the people behind them, and launches are sniped before retail can buy. Every part below exists to fix one of the two.
Deposits
You connect Phantom (or any wallet that exposes window.solana) and sign one free message. That signature opens a seven-day session and is checked with ed25519 on the server; nothing that moves SOL works without it.
A deposit is a plain SOL transfer that your wallet signs and sends. ZeroTrace reads the confirmed transaction from Solana and only credits it when your wallet signed it, the ZeroTrace deposit account received the SOL, and the transaction succeeded. Each signature is credited once. The minimum is 0.1 SOL.
The Vault
The Vault breaks the line between the wallet you deposit from and the account you launch or trade from.
Shielding
Pick a note size: 0.1, 0.5, 1, 5 or 10 SOL. Your browser makes a random 32-byte secret and sends only a commitment:
commitment = sha256("zt|" + size + "|" + secret)
The pool stores the commitment, the size and the time, with no wallet. Your browser shows you the note, zt-<size>-<secret>. That note is the only copy; ZeroTrace never sees the secret until you claim.
Why fixed sizes
Every 1 SOL note looks like every other 1 SOL note. The anonymity set for a note is every unspent note of the same size, shown live on the Vault page. The bigger the set, the less a claim says about who shielded it.
Mixing time
A note has to sit in the pool for 2 minutes before it can be claimed, so a shield and a claim can't be paired by timing alone. Waiting longer, while more notes of your size arrive, makes the link weaker still.
Claiming
Claiming sends the note and a ghost key. The server recomputes the commitment, checks it is in the pool, and records a nullifier, sha256("nf|" + secret), so the note can never be claimed twice. The SOL lands in the ghost. The claim request carries no wallet at all.
Ghosts
A ghost is an account controlled by a 32-byte key that lives in your browser. The server stores only an id derived from the key, "zt" + base58(sha256("ghost|" + key)), never the key itself. Whoever holds the key controls the ghost, so back it up from the Vault page. You can import it on another device, or start a fresh ghost per launch.
Ghosts can claim notes, launch, buy, sell and withdraw. A ghost withdrawal goes to any Solana address you paste and leaves after a random delay of 10 to 60 minutes, so the time you clicked doesn't match the time SOL arrives.
Launching
A launch needs a name, a ticker and one line about the coin. It costs 0.02 SOL. There is no dev allocation: the creator starts with nothing and buys in the Fair Window like everyone else.
- Stealth launch, from a ghost: the coin page shows the creator as
ghost. No wallet is attached. - Wallet launch: the coin page shows your shortened wallet. $ZERO pass holders pay half the fee.
Every coin trades on a constant-product curve with 1,000,000,000 supply and a 30 SOL virtual reserve: price = reserve / supply, and every buy and sell keeps reserve × supply constant.
The Fair Window
Every launch opens with a sealed window of 60 seconds. During it:
- Buys are escrowed. The coin page shows how many bids are in, never the amounts.
- Each buyer can put at most 2 SOL in.
- Nobody can sell.
When the window closes, all bids are added up and bought from the curve in one fill. That one fill has one average price, and every bidder gets tokens in proportion to their SOL. A bid placed in the first second and a bid placed in the last second get exactly the same price. There is no first block to win, so there is nothing to snipe or bundle.
The guard
For 10 minutes after the window, every coin is guarded:
- No single holder can pass 2% of the supply.
- Each holder waits 3 seconds between trades.
Holders are tracked per wallet and per ghost. Every trade the guard refuses is counted in the public "snipes blocked" figure.
Trading
Trades fill against the curve in the order they arrive. There is no public pending pool, so there is nothing for a bot to see before your trade lands and nothing to sandwich. Every trade carries your price limit (1%, 3% or 10%); if the curve has moved past it, nothing fills and nothing is charged. The trading fee is 1%.
Trades show a holder tag, a short hash that stays the same for one holder on one coin. You can see that the same holder traded twice; you can't see the wallet or ghost.
Trace scanner
The scanner reads any Solana address straight from Solana RPC: recent signatures, balance, the first transaction (to find who funded it), and SOL transfers in the most recent transactions (to find the wallets it deals with). It turns that into an exposure score from 0 to 100:
| Signal | Max |
|---|---|
| Activity (transaction count) | 30 |
| Counterparties | 25 |
| A visible funding source | 25 |
| History older than 30 days | 10 |
| Visible balance | 10 |
It's the view any onlooker, copy-trader or sniper bot already has. Run your deployer through it before you launch from it.
$ZERO
$ZERO is the access pass to the private side of ZeroTrace. Holding 1,000,000 $ZERO in a connected wallet gives you:
- Fee-free shielding (others pay 0.5% per note).
- Half-price wallet launches.
Balances are read from Solana with getTokenAccountsByOwner and cached for a minute. The pass applies to wallets, because shielding is where a wallet meets the Vault. Launch, trading and Vault fees fund the protocol and the tools that come next.
Parameters
| Name | Value |
|---|---|
| Note sizes | 0.1 · 0.5 · 1 · 5 · 10 SOL |
| Vault fee | 0.5% (0 with the pass) |
| Mixing time | 2 minutes |
| Launch fee | 0.02 SOL (0.01 with the pass) |
| Trading fee | 1% |
| Curve | 1B supply, 30 SOL virtual reserve |
| Fair Window | 60 s, 2 SOL per buyer |
| Guard | 10 min, 2% max per holder, 3 s cooldown |
| Ghost withdrawal delay | 10 to 60 minutes, random |
| Minimum deposit | 0.1 SOL |
API
GET /api/state coins, pool sets, counters, parameters
GET /api/coin/:id one coin with trades and price curve
GET /api/trace?addr= Trace scanner
GET /api/session?wallet= message to sign for a session
POST /api/account { wallet }
POST /api/deposit { wallet, tx }
POST /api/shield { wallet, auth, size, commitment }
POST /api/launch | buy | sell { wallet, auth, ... }
POST /api/claim { note, key }
POST /api/g/account { key }
POST /api/g/launch | buy | sell { key, ... }
POST /api/g/withdraw { key, to, amount }
Buys and sells take { id, amount, minOut }. Launches take { name, ticker, desc }.
FAQ
Can ZeroTrace see who launched a stealth coin?
The server sees a shield come from a wallet and, later, a claim into a ghost, with no shared field between them. The pool keeps commitments and nullifiers, which are different hashes of the secret, so the server can't match a claim to a shield either. What links them is timing and size, which is why notes have fixed sizes and a mixing time, and why waiting longer helps.
What if I lose my note?
The note is the only copy of the secret. If it's lost before you claim it, the SOL in it can't be claimed. Copy it the moment you shield, or press "Put it in the claim box" and claim it from the same browser.
What if I lose my ghost key?
The ghost and everything in it go with the key. Back it up from the Vault page, and use the import button to restore it on another device.
How does the Fair Window stop snipers?
A sniper wins by buying before everyone else at a lower price. In the window there is no "before": every bid fills in one batch at one price, and each buyer is capped at 2 SOL. After the window, the guard caps holders at 2% and spaces their trades 3 seconds apart, which breaks the rapid buy loops bundlers use.
Can a bot just use lots of wallets?
It can split across wallets, and each wallet is capped. Splitting doesn't buy a better price, though, because everyone in the window gets the same one. The cap makes a large position cost more wallets and more SOL with no price edge.
Where do my deposits sit?
Deposits are SOL transfers to the ZeroTrace deposit account on Solana, checked on-chain before they're credited. Balances, notes, ghosts and coins are tracked in the ZeroTrace ledger. Withdrawals are queued and sent from the deposit account to the address you choose.
Why do ghost withdrawals take 10 to 60 minutes?
If SOL arrived the second you clicked, the arrival time would link the ghost to whoever was online at that moment. A random delay removes that link.
What does the Trace scanner score mean?
It's how easy the wallet is to follow. Above 70, its funding, counterparties and history are all visible. Below 15, there's very little to go on. A wallet you plan to launch from should score low, or not be used at all: launch from a ghost instead.
What does $ZERO do?
It's the pass. Holders shield fee-free and launch at half price, and protocol fees fund new privacy and anti-MEV tools.
Risks
Memecoins are volatile and most go to zero. Privacy depends on how you use it: shielding and claiming within seconds, or using odd amounts, makes links easier to guess. Keep your notes and ghost keys safe; nobody can recover them for you.