launchonzec.comlaunchexplore[docs]feestwitterwallet: …
// launchonzec.com — docsthe first zcash launchpad on solana

launchonzec.com

A launchpad for pump.fun tokens where the launch is paid for in Zcash. You send ZEC, from a shielded address if you want, to a one-time deposit address. A NEAR Intent converts it into exactly the SOL a launch needs and delivers that SOL to a Solana wallet that did not exist a minute earlier. That wallet mints your coin on pump.fun's bonding curve and becomes its creator. You never connect a Solana wallet, you never sign a Solana transaction, and nothing on Solana points back to you.

// What this is

pump.fun is the largest memecoin factory on Solana: one transaction creates a mint, a bonding curve and metadata, and the coin trades immediately. Every launch there is signed by the launcher's own Solana wallet, which is public forever and tied to every other thing that wallet has done.

launchonzec.com replaces that wallet with two things: a payment in ZEC, and a fresh Solana keypair that is created for your launch alone. The payment is made on Zcash. The mint is made on Solana. The only thing that joins them is an intent settled by solvers, and the intent is the product.

It is, as far as we know, the first launchpad that lets you pay for a Solana token launch with Zcash, and the first that lets a Zcash user create something on Solana without ever holding SOL.

// Why Zcash, why Solana

Zcash is the only widely held asset with a shielded pool: a transaction from a z-address reveals neither the sender nor the amount to the chain. A deposit that starts shielded has no origin anyone can read. Every other chain we could accept is pseudonymous at best; ZEC is the one that makes the "nothing points back" claim true from the very first hop.

Solana is where pump.fun lives, and pump.fun is where memecoins get their liquidity, their traders and their graduation to an AMM without anyone setting up a pool. Launching anywhere else would mean launching into nothing.

NEAR Intents is the bridge between the two that is not a bridge. Instead of wrapping ZEC, you state an outcome, exactly N SOL delivered to this address, and a network of solvers competes to make it happen. The ZEC you send is bought by whichever solver fills fastest; the SOL they deliver is theirs, not a wrapped representation of yours. See the NEAR Intents documentation.

// Architecture

Four parties touch a launch. None of them is your wallet.

PartyHoldsDoes
YouZECfills the form, sends one deposit, keeps a claim secret or connects a wallet to own the launch
launchonzec.comthe keeper key, the launch rowsderives launch wallets, pins metadata, asks for quotes, submits the mint, exports keys on proof
NEAR Intents (1Click)the intentquotes, issues the one-time deposit address, matches solvers, reports status
Solverstheir own SOL and ZECtake your ZEC on Zcash, deliver exact SOL on Solana
pump.funthe bonding curvemints the coin from create_v2, pays the creator 30 bps of every trade

The data model is one row per launch: what the coin is, the quote (asset, amount, deposit address, deadline), the launch wallet, and what happened. Two columns never leave the server: the salt the wallet is derived from, and the hash of the claim secret. The public site reads a column list that excludes both, plus the deposit and refund details.

The engine is three functions. createLaunch pins metadata, derives the wallet and takes the quote. refreshLaunch reads the intent and the wallet balance and advances the status; it runs every time the session page polls and every time the keeper passes. executeLaunch takes a row lock, builds create_v2 with the optional buy, signs with the launch wallet and the mint keypair, and broadcasts. The lock means two workers can never mint the same launch twice.

// A launch, step by step

  1. 1.Fill the document: name, ticker, image, an optional dev buy typed in ZEC, optional description, twitter and website. The image is pinned to IPFS through Pinata as soon as you pick it.
  2. 2.Press launch. The server derives a fresh keypair from the keeper key and a random salt, pins the metadata JSON, and asks 1Click for an EXACT_OUTPUT quote: deliver exactly the SOL this launch needs, paid in ZEC. The quote returns a one-time Zcash deposit address, the exact ZEC amount, and a 45-minute window.
  3. 3.The session page shows the amount, the address and a QR. Send exactly that amount from any Zcash wallet or exchange. The page polls and shows elapsed time, time left in the window, the number of checks and a log.
  4. 4.Zcash confirms. 1Click marks the deposit seen; solvers compete and one delivers the SOL to the launch wallet on Solana, typically eight minutes after confirmation.
  5. 5.The server sees SOL in the wallet and executes the mint: one versioned transaction against pump's lookup tables containing create_v2 (mint, curve, metadata) and, if you set one, the buy at the opening price. The launch wallet is fee payer, signer and creator.
  6. 6.The coin is live on pump.fun and appears in the launches array. You are shown a claim secret once, or, if a wallet was connected, that wallet owns the launch.

If you close the tab, nothing stops. A keeper process runs the same refresh on every open launch and mints the moment a wallet is funded. The session link is the only key to the session; its id is unguessable.

// Zcash specifics

Shielded or transparent. 1Click's deposit address is a transparent t-address. Sending to it from a z-address (Sapling or Orchard) works and leaves no visible sender; sending from a t-address works and is pseudonymous like any other chain. Use a shielded address if privacy is the point.

Confirmations. Zcash blocks are 75 seconds; solvers wait for a handful before filling. Expect the fill roughly eight minutes after you send. Exchanges add their own withdrawal time.

No memo, no refund address. Nothing is required beyond the amount and the address. The form does not collect a refund address: by design, a deposit that does not match the quote is not recoverable, so send exactly the amount shown. The quote allows a small tolerance and slippage either side.

Amounts. A bare launch is about 0.02604 SOL worth of ZEC; a launch with a dev buy is that plus the buy plus pump's buy fee. Prices are live from the solver quote; the form's estimate uses spot and the binding number is on the session page.

// The launch wallet

Every launch gets a Solana keypair derived as sha256(domain ‖ keeper_secret ‖ salt) where the salt is 16 random bytes stored on the launch row. The private key is never written anywhere; it is recomputed whenever the server has to sign for that launch. The public key is the address you see on the session page, and it is the recipient of the funding intent.

The launch wallet plays every role a launcher's wallet would:

RoleHeld by
recipient of the funding intentlaunch wallet
fee payer and signer of create_v2launch wallet
creator, earning 30 bps of every tradelaunch wallet
holder of the dev buylaunch wallet
signer of fee collections and payoutslaunch wallet, on presentation of the claim secret

Because the creator is the launch wallet and not you, the dev buy stays there too. Moving it to a wallet of yours would recreate the link the intent removed. Export the key when you want it, or route it out through another intent.

// Ownership and keys

Two ways to prove a launch is yours. If a Solana wallet was connected when you launched, that wallet is recorded as the owner; signing a short message on the session or coin page exports the launch wallet's private key to you, shown once behind an eye toggle. If no wallet was connected, you are shown a claim secret once, an nl_… string whose hash is stored; presenting it does the same.

Import the key into Phantom or any Solana wallet and the dev buy and creator fees are yours to move directly. Exporting is the one point where you choose to link yourself to the launch; nothing on chain changes until you move funds out.

// Creator fees

pump.fun pays the creator 30 basis points of every buy and sell, on the curve and on the AMM after migration. The creator is the launch wallet, so the fees accumulate in a vault only it can claim. Either export the key and collect them yourself, or use the fees page: paste the claim secret, name any asset on any chain, and the fees are collected on Solana and routed out through another intent to that address. Zcash is one of the destinations, so ZEC in, ZEC out is possible end to end.

// Costs and minimums

ItemSOLNotes
mint, curve, metadata accounts0.022rent set by Solana
priority fee0.00004so the mint lands first try
reserve0.004left in the wallet for later fee collection
fixed total0.02604a launch with no dev buy
dev buyyour choicetyped in ZEC · up to 50 SOL
pump buy fee1.25%of the dev buy
intent~1%solver fee, 1% slippage, 0.1% to 1Click unless keyed

The funding quote is exact-output on the total, so the launch wallet receives precisely what it needs. If marginally less lands, the dev buy shrinks to fit rather than failing the launch.

// Security model

Be precise about what is hidden, what is visible, and who is trusted.

Visible on SolanaVisible nowhere
the coin, its mint transactionwho paid
the launch wallet, funded by a solverthe Zcash address that paid, if shielded
the creator: the launch walleta Solana wallet of yours: there is none in the flow
metadata naming this site and the paying chainwhere fees go when routed out

Trust in the operator. The keeper key derives every launch wallet. Until you export a key, the operator can sign for that wallet, which is what lets the mint and the fee payouts happen without you. Export the key and the operator can still derive it; move the funds and the question is moot. The operator sees the launch row, which does not identify you.

Trust in 1Click and solvers. They see the deposit and the delivery. A shielded deposit shows them a transparent address receiving ZEC and nothing about the sender. Solvers deliver from their own inventory; a fill that fails is refunded by 1Click to the quote's refund address, which on this site is a throwaway, so a failed fill is a loss. In practice fills succeed; the window is generous.

Trust in the session link. Whoever has the link can see the deposit address and, once live, export the key if they also hold the claim secret or the owner wallet. Do not share it.

// Statuses

statusmeaning
awaiting_depositquote open, nothing received
processing1Click saw the deposit; solvers are delivering
fundedSOL is in the launch wallet; mint not yet sent
launchingcreate_v2 in flight
livethe coin exists on pump.fun
failedthe mint failed; the SOL is still in the launch wallet and is retried
refundedthe intent refunded the deposit
expired45 minutes passed with no deposit

// API

Everything the site does goes through these routes. All JSON.

routedoes
POST /api/uploadpins an image to IPFS; returns its URL
GET /api/intents/assetsthe pay-with catalogue with live prices, SOL/USD and the cost model
POST /api/launchopens a launch: pins metadata, derives the wallet, takes the quote; returns the session and the claim secret once
GET /api/launch/:idthe session poll: reads the intent and the wallet, advances the status, mints when funded
POST /api/launch/:idtells 1Click about a deposit tx hash so it is picked up at once
POST /api/launch/:id/ownerwhether a wallet owns the launch: yes or no only
POST /api/launch/:id/keyexports the launch wallet's key on a signed message from the owner or the claim secret
POST /api/feeswhat a launch has earned, by claim secret
PUT /api/feesroutes the fees out: collect, quote, deposit into an intent
GET /api/coinslive coins with market data, plus the in-flight feed

// Running it

A Next.js app and one keeper process. Copy .env.example, run supabase/schema.sql, generate a keeper key with pnpm keeper:init, run pnpm keeper next to the site. The keeper key is the root of custody: every launch wallet, every funded-but-unlaunched balance and every coin's creator fees derive from it. Back it up before the first launch and never reuse it across deployments. /admin lists every launch in every status with wallet balances and unclaimed fees, and can retry a failed mint, hide a coin, sweep a wallet or remove a row.

// FAQ

Do I need a Solana wallet?

No. Not to launch, not to collect fees. Connecting one is optional and only makes owning the launch wallet easier.

Do I need SOL at all?

No. The solver brings the SOL. You only ever hold ZEC.

Can I pay from an exchange?

Yes. Withdraw the exact quoted amount of ZEC to the one-time address. Exchanges are slower; the window allows for it.

What if I send the wrong amount?

By design there is no refund path on this site. Send exactly the amount shown.

Where does my dev buy go?

The launch wallet holds it. Export the key to move it, or route it out with the claim secret.

What happens after the coin migrates to the AMM?

Nothing changes. Fees keep accruing to the launch wallet.

Is this custodial?

Between deposit and mint, and for fees you have not exported, the keeper key can derive the launch wallet. Export the key and it is entirely yours.