Creator guide
This guide walks through the launch wizard and what you can do after launch.
- Launching a coin named after a real person or organisation does not make it endorsed by them. Do not imply endorsement you do not have.
1. Metadata
- Name and ticker. Fixed forever.
- Image (URL or IPFS upload), description and socials. These are cosmetic and can be updated later by the token admin.
- Token admin. By default, your address. It can update the image and metadata, and lower
the fee. Set it to
address(0)to renounce both powers at launch.
Remember that metadata is public. If you want the beneficiary's identity to stay private, do not name them in it.
2. Quote token
Pick the token the coin is paired with: WBNB (default), USDT or another stable, BTCB, ETH, CAKE, an RWA such as XAUt, or an admitted Tier 2 token. The wizard shows an FDV preview in the quote token and in USD. See quote tokens.
- Prefer WBNB or USDT. They have the deepest liquidity, and USDT needs no swap before shielding.
- The picker lists every quote the factory accepts. Quotes without a registered route to USDT can still be launched, but their fees cannot be consolidated into USDT (only claimed as they are), and quotes without a price feed cannot be consolidated by you, only by the beneficiary.
- Freeze-capable quotes can be frozen by their issuer, which would halt trading in your coin forever. The wizard warns you.
3. Liquidity preset and starting price
- Fair (default, and recommended for donation and social-escrow coins): a thin launch band that makes sniping expensive.
- Standard: one wide position.
The starting market cap defaults to about $7.5k and must stay within the quote token's bounds. See single-sided liquidity.
4. Fee
Move the slider between 1% and 5%. The live preview shows the 25% protocol / 75% beneficiary split and reminds you that PancakeSwap adds about 0.03%. You can set different fees for buys and sells. After launch the fee can only be lowered, never raised.
Fee asset. By default the beneficiary is paid in the quote token: fees earned in your coin on
sells are converted when collected (FeeIn.Paired). You can instead keep the coin side
unconverted (Both or Token), but relayers cannot price your coin and consolidation cannot
route it, so the beneficiary would need BNB for a self-funded claim of that balance. The
wizard asks you to acknowledge this before it allows it.
5. Anti-snipe
Optionally enable the descending fee: choose a starting fee (up to 80%) and a decay time (up to 120 seconds).
6. Beneficiary
This is the most important choice. You cannot change it after launch.
| Type | Choose it when | What you get | Privacy notes |
|---|---|---|---|
| Private: payout code (recommended when you can reach the beneficiary before launch) | The beneficiary can open zk-pad once before launch | You paste their payout code; after launch you send them a launch receipt link | You never hold their key, so you can never claim or sign for them. |
| Private: claim link | You cannot reach the beneficiary before launch, or they will not use zk-pad until later | A claim link (key in the URL fragment) and a printable QR code | You generated the key. The claim portal rotates it before the beneficiary's first action, but until then whoever submits first wins. |
| Social-account escrow (coming soon: not available yet) | The beneficiary has an X, GitHub, Telegram, Farcaster or Discord account but has never used zk-pad | Nothing to hand over. The account owner claims through the bind portal once attestors are registered; until then nobody can claim. | Attestors learn which account the escrow is for. Read social escrows. |
| Myself | You want the fees yourself | A claim kit that you keep | Your stealth key is never funded, so claims are not linked to your wallet unless you link them. |
Payout code or claim link?
A private beneficiary gets a fresh stealth key either way. The difference is who generates it.
- Payout code (recommended). Ask the beneficiary to open
https://zkpad.family/receive, choose Generate my key, save their receive kit and send you the payout code (zkpay1.…). The code contains only a hash of their key and the network, so it is safe to send over any channel. On the beneficiary step, choose Paste a payout code and paste it. You still choose the fallback; the beneficiary id is computed from their key hash and your fallback. After launch, the success page shows a launch receipt link (…/receive#zkrcpt1.…). Send it to the beneficiary. It carries the token, their key hash and your fallback, but no key. They open it with their receive kit to claim. - Claim link. The wizard generates the key in your browser and you hand the beneficiary the link. Because you held the key, the claim portal moves the account to a new key generated in the beneficiary's browser before their first action (see rotate your key). Until they open the link, anyone holding it (you included) could act first. Tell them to open it promptly.
The payout code is checked as you paste it: a mistyped code fails its checksum, a code for another network is rejected, and a secret receive key pasted by mistake is refused.
A payout-code launch has one trade-off with a fallback: the fallback only takes effect once the account is registered, and registering needs the beneficiary's key (their first action does it). You cannot register it for them right after launch, so if they never show up, the fallback cannot sweep. With a claim link you can register immediately (see below).
Social-account escrow: what to enter
No attestors are registered on BSC mainnet yet, so the launch wizard shows social-account escrows as coming soon and nobody can bind or claim one. The steps below describe the flow once attestors are live. If an escrow created outside the app has a fallback and no bind is finalized before its fallback delay ends, anyone can sweep its balance to the fallback recipient. See social escrows.
The escrow commits to the account's permanent numeric user ID, never the handle. Pick the platform and then one of two options:
- Enter the numeric user ID (free). No lookup and no payment. The ID never changes, unlike the handle. Every platform supports this.
- Look it up for me ($0.03 USDT). Only where the platform has a public username lookup (X, GitHub, Farcaster fnames): the attestor resolves the handle for you. You pay from your connected wallet on BNB Smart Chain with x402: the first time, one on-chain approval of USDT to the Permit2 contract (needs a little BNB), then a gasless signature for each lookup. The price is shown before you sign and is the same on every platform. If the handle does not exist, you are not charged.
| Platform | Numeric user ID (free) | Paid handle lookup | How to find the ID |
|---|---|---|---|
| X | yes | the @handle | a third-party X user-ID lookup site, or the account's X data export (account.js → accountId) |
| GitHub | yes | the username | open https://api.github.com/users/<name> and copy the id field |
| Telegram | yes (only option) | no: Telegram has no public username lookup | the account owner can see theirs with a bot such as @userinfobot |
| Farcaster | yes: the fid | the username (fname), resolved through the Farcaster name registry | in the Farcaster app: profile → ⋯ → About. A .eth username cannot be looked up: enter the fid |
| Discord | yes (only option): 17–20 digits | no: Discord has no public username lookup | in Discord: Settings → Advanced → turn on Developer Mode, then right-click the user (long-press on mobile) → Copy User ID |
Double-check the ID: an escrow for the wrong ID can only ever be claimed by that account (or swept to the fallback).
The payment is an on-chain USDT transfer from your wallet. It shows that your wallet paid for a handle-based escrow lookup. It does not show the platform or the handle. If you do not want that link, pay from a different wallet or enter the numeric ID.
Saving the claim kit
For a claim link or "myself", the wizard will not let you continue until you confirm that you saved the kit. Whoever has the link can claim. zk-pad cannot recover a lost link. Downloaded kit files get a random name and the optional encrypted copy in your browser uses a neutral label, so neither points to the beneficiary account. A payout-code launch has no kit to save on your side.
- Store it offline (printed QR, password manager).
- Send it to the beneficiary only over a private channel.
- Do not paste it into chats that sync to the cloud unless they are end-to-end encrypted.
Fallback NGO (optional)
You can name a fallback recipient, such as a charity's address, and a delay of at least 180 days. If the beneficiary never acts (no signed claim, consolidation, rotation, ping or template registration for the whole delay), anyone can sweep the balance to the fallback. The fallback is part of the beneficiary id and cannot be changed later.
For the sweep to work, the id must be registered on-chain. With a claim link, register it right after launch when the success page offers to (a relayed registration; it reveals only the throwaway stealth address). With a payout code, the beneficiary's first action registers it.
7. Dev buy (optional)
Buy some of your coin in the launch transaction at the starting price, before anyone else. Pay in BNB for WBNB-paired coins or in the quote token otherwise. The dev buy pays the normal fee and is fully public. Large dev buys can scare buyers off: the UI warns above 5% of supply.
8. Review and launch
Check everything, then submit. The app can send the transaction through a private RPC so bots cannot see it in the public mempool. After confirmation, the success page shows the share link and, if applicable, the claim kit download or the launch receipt link for a payout code.
After launch: the creator dashboard
| Action | What it does |
|---|---|
| Stats | Volume, holders, fees generated, beneficiary share |
| Update metadata | Change the image or metadata (token admin only) |
| Lower fee | Reduce F for buys and/or sells, never below 1% (token admin only) |
| Collect fees | Calls collectRewards(token). Normally unnecessary, because every swap collects automatically. |
| Consolidate to USDT & shield for beneficiary | Converts the fees your launch credited to the beneficiary into USDT, bounded by an oracle price, and shields them to one of the beneficiary's pre-registered templates. With no template, the USDT stays in the vault. You can never choose the destination, and you can never touch donations, other launches' fees, or anything the beneficiary already withdrew from (launch credit). Each swap must be worth at least 1 USDT (minCreatorShield) at the oracle price; the dialog offers no action while the oracle bound is unknown or below that. |
| Claim team fees | Anyone can forward accumulated protocol fees to the treasury with claimTeamFees(token). Creators do not receive these. |