What links a launch to a person
On a normal launchpad the token’s creator is a wallet, and that wallet was funded by another wallet, which was funded by an exchange. Anyone can walk that chain back in a minute. Shade is built to cut it: the creator of a Shade token is a fresh address that nobody ever sent SOL to, and the launch is paid for by a pass that can’t be tied to the payment that bought it.
Cutting the funding chain is not the same as being invisible. These are the links Shade removes, and the ones it can’t:
Put plainly: an observer can see that you use Shade, and roughly when. What Shade is built to stop is anyone, Shade included, proving which token is yours.
The vault: one signature, local keys
When you connect a wallet, Shade asks you to sign one message. It is not a transaction and costs nothing. The signature is fed through HKDF-SHA256 to derive a seed, and from that seed come every key Shade uses for you: the vault, each stealth deployer (deployer #0, #1, …), each pass, and a key that encrypts what Shade stores in your browser.
- Everything is derived in your browser. No key, seed or signature is sent to Shade.
- The seed lives in
sessionStorage, so it is gone when you close the tab. Locking the vault clears it at once. - Ed25519 signatures are deterministic: signing the same message with the same wallet gives the same seed, so your vault, deployers and passes come back on any device.
- The vault is an ordinary Solana keypair. You fund it from your wallet and it holds your Privacy Rings balance.
Privacy Rings
Helius Privacy Rings is a shielded pool on Solana mainnet. Your vault deposits SOL into its own private balance, and from there it can pay other ring members with confidential transfers. Shade uses the Default Ring.
So a ring transfer hides how much, not who to whom. Deposits and withdrawals are public in full. That is why Shade doesn’t rely on the ring alone: the pass and the relay (below) are what break the link between payer and launch.
Passes: blind signatures
A pass is a bearer credit for exactly one launch. Your vault buys it with a confidential ring transfer to Shade’s relay, and Shade signs it using David Chaum’s RSA blind signatures, so Shade never sees the pass it signs.
- Your browser makes a random-looking pass token from your seed, hashes it to the full width of the RSA modulus (2048-bit RSA-FDH with MGF1-SHA256), and multiplies it by a blinding factor only you know.
- The vault pays the relay through Privacy Rings. The payment carries an encrypted memo with the tier and the blinded value, readable only by the relay.
- The relay checks the payment and signs the blinded value with that tier’s key. It never sees the token underneath.
- Your browser removes the blinding factor and holds a valid signature on a token Shade has never seen. Shade can check it later but can’t say which payment it came from.
Each tier has its own signing key and a fixed price, so every pass of a tier is interchangeable. A launch reveals its tier (the dev buy shows on chain), never its buyer: it could have come from anyone who bought that tier.
When a pass is redeemed the relay creates a small spent-marker account whose address comes from a hash of the pass token. A second launch with the same pass fails because the marker already exists. Anyone can see that a pass was used; nobody can see who bought it.
The relay pays, so nobody funds the deployer
The relay is Shade’s platform wallet. When you launch, your browser sends it the pass, the token details and the address of a fresh stealth deployer. The relay checks the pass, then builds one transaction in which it:
- creates the pass’s spent-marker, so the pass can’t be used again;
- pays the rent for the mint, the pool and its vaults, and the network fee;
- makes the dev buy with its own SOL, with the tokens delivered straight to the deployer;
- is the fee payer, while the deployer signs as the pool’s creator.
Creation and dev buy are atomic, so nobody can trade in between. When the relay runs low it withdraws several pass payments from its ring balance at once, so its top-ups don’t line up with individual purchases. Token images and metadata are uploaded to Arweave by the relay too, so the uploader on Arweave is Shade and your IP never reaches it.
Stealth deployers
Deployer #n is derived from your seed, used for one launch and never funded. It is the on-chain creator of your token, so it earns the creator’s share of trading fees and holds the dev-buy tokens.
Because it holds no SOL, the relay sponsors what a creator usually does: it pays the fees for sponsored sells of the dev bag and for claims of creator fees, while the deployer signs as owner. To keep the relay from being drained by dust, a sponsored sell must return at least 0.002 SOL and a claim must be worth at least 0.0001 SOL.
The explorer checks every deployer’s history: Funded by: nobody means no SOL reached the address before its launch transaction.
Trust assumptions
Shade removes the on-chain links it can. A few parties still see something, and it is better to know exactly what.
- Use a VPN or Tor. The simplest way to correlate a pass purchase with a launch is the IP address they came from. With a VPN or Tor, what the relay sees is not you, and you don’t have to trust how Shade handles its logs.
- The prover runs in an attested enclave. Helius publishes a signed policy of the enclave builds it runs, and the Rings client checks the prover’s attestation against it before sending proof inputs.
- Shade holds pass value until you launch. A pass payment sits in the relay’s ring balance until the pass is redeemed. If Shade stopped operating, unredeemed passes would be lost, so buy passes close to when you’ll use them.
Fees and the curve
Every Shade token is a Token-2022 mint with a fixed supply of one billion, six decimals, its mint authority revoked and its metadata immutable. It trades on a Meteora Dynamic Bonding Curve that points at Shade’s config, which fixes the same rules for every launch.
Before that, a launch costs its pass: 0.02 SOL for rent, the spent-marker and network fees, plus the dev buy you chose. Privacy Rings adds 5,000 lamports per deposit and 10,000 per transfer, and each of your own transactions pays the usual Solana network fee.
Timing advice
The cryptography hides amounts and breaks the pass link. Timing is what’s left. If your vault deposits, buys a pass and launches within two minutes, and nobody else used Shade that hour, an observer can guess. Space things out and blend in:
- The larger the crowd of vaults buying the same tier, the better each pass hides. Early on, that crowd is small; keep that in mind.
- Announce your token from accounts that aren’t tied to the wallet that funded your vault, and not the moment it goes live.
Anonymous Custom Rings
Everything above describes the Default Ring, where transfers hide the amount but show sender and recipient. Helius has announced Anonymous Custom Rings, targeted for the fourth quarter of 2026, in which transfers hide the parties as well.
When they ship, Shade plans to use them to remove the relay hop: a launch could be paid for straight from an anonymous ring, without a public record that your vault paid Shade’s relay. Until then, Shade runs on the Default Ring as described here, and this page will change when that does.
Check it yourself
Nothing here asks for your trust where the chain can answer instead. The explorer reads Solana directly: open any launch to see the relay paying, the spent-marker being written and the stealth deployer signing; open any deployer to see that no SOL reached it before its launch.
- Every Shade pool points at the same Meteora DBC config, so the full list of launches is one on-chain query.
- Pass verification uses public RSA keys, one per tier, published with the app.
- Token metadata is stored on Arweave, uploaded by Shade, and can’t be changed afterwards.