Home Apps My Licenses Buy FAQ Pricing Register App Get License

Frequently Asked Questions

Plain-English answers about zero-knowledge proofs, privacy, refunds, and what happens if things go wrong. If you're a developer integrating the SDK, the Docs have a separate technical FAQ.

What is a ZK Proof?

A zk proof — short for zero-knowledge proof — is a small piece of cryptographic data that proves a statement is true without revealing the underlying secret that makes it true. The classic analogy: imagine proving you know the password to a vault without ever saying the password.

For zkLicensing, the statement is: "a valid license purchase exists on Mina for this app, with this expiry." The proof file you give to the app reveals only the license's validity and expiry — not your passphrase, not your wallet address. The app verifies it in milliseconds against its public verification key, offline, and unlocks.

What is still public. Every on-chain transaction on Mina — including your license purchase, renewal, and refund — is visible to anyone who looks at the blockchain. The transaction shows your wallet address, the price you paid, and the license hash. The proof file itself doesn't expose any of that, but the underlying chain record does. If your wallet address is otherwise tied to your identity, that link is recoverable. Use a fresh wallet for stronger pseudonymity.

Why doesn't zkLicensing collect my email?

Because we don't need it. A license is a cryptographic object, not an account. The proof file itself is the license — there's nothing to "send to your inbox." No password reset flow, no marketing list, no off-chain user database to breach. What you should protect: your proof.json file and your license passphrase — those are everything you need to use, renew, or refund the license.

What if I lose my proof file?

As long as you still have the Mina wallet you used to buy the license and the passphrase you chose at purchase time, you can regenerate the proof. Open the My Licenses page, connect your wallet, find the license, and click "Re-download proof". The keeper will rebuild the proof from the on-chain record.

If you lose both the proof file and the passphrase, the license is unrecoverable. There is no recovery email or support flow that can bypass this — the passphrase is required by the zkApp circuit itself. Treat the passphrase like a wallet seed phrase.

Can I use my license on more than one machine?

Yes — the proof file is portable and works on any machine that has the app installed. Copy proof.json to your laptop, desktop, or another device you own and the app will accept it. There is no per-device activation step. This is intentional: the proof is a portable bearer credential and the public output doesn't reveal the buyer's wallet. If your business model requires stricter enforcement, the vendor can layer it on at the app level (e.g. per-install activation against their own backend after proof verification).

Can I use this with a mobile (Android / iOS) app?

Yes — the pattern is buy on the web, unlock in the app. The browser purchase flow works from both desktop and mobile (Auro on mobile connects through WalletConnect). Once paid, you transfer your proof.json file into the mobile app, and the app verifies it against the hosted verify endpoint. After the 14-day refund window closes, the app can cache the verification result and run fully offline from there.

Can I get a refund?

Within 14 days of purchase, yes — a full refund, no questions asked. Your MINA sits in the zkApp's escrow during this window, not in the vendor's wallet. Visit the Refund page, connect the same Auro wallet you used to buy, enter your passphrase, and the contract returns the funds to your address. After 14 days, the funds are released to the vendor and the license becomes non-refundable. Renewals are also non-refundable — they bypass escrow entirely. This is enforced by the smart contract, not by a policy we could choose to bend.

How does renewal work?

Open the Renew page, connect your wallet, paste in your existing proof.json, and pay the vendor's renewal price. The keeper generates a new proof with an extended expiry; you download it and replace your old proof.json. Apps will accept the new file automatically — the expiry is baked into the proof itself.

If you renew within 7 days of expiry, the new term extends from the original expiry date. After that, it extends from today.

What happens if the vendor disappears?

Your license keeps working until its expiry, regardless of what the vendor does. The proof is verified locally against a public verification key baked into the app — the vendor's servers aren't in the loop. Even if the vendor's company shuts down tomorrow, every already-purchased license continues to validate for its full term.

What you lose if the vendor disappears: the ability to renew at the end of the term and any support channel they provided. The app itself keeps running for paid users.

What if the Mina blockchain is down?

It depends on which verification path your app uses and when the outage hits:

  • SDK path — only the first ~14 days are exposed to Mina downtime. The SDK calls the keeper while the on-chain refund window is open; once it closes, the SDK anchors locally and stops touching the network. Buyers whose anchor has graduated are unaffected by any subsequent outage.
  • Embed-VK path — verifies the zk proof locally, but still needs a Mina RPC read on every check to confirm the license hasn't been refunded. The RPC call can go to any public Mina endpoint or the vendor's own node — but if the Mina chain itself is unreachable, the check fails.
  • Raw verify endpoint (no SDK caching) — fails during Mina downtime on every request.

New purchases, renewals, and refunds always pause during Mina downtime, since they all write on-chain.

Why do I need a Mina wallet?

Because payment, refund authorization, and renewal all happen as on-chain transactions signed by your wallet — there's no payment processor in the middle. The Mina blockchain is the system of record. We recommend Auro Wallet as a browser extension (Chrome / Firefox). Getting a Mina wallet and a small amount of MINA is a one-time setup.

Why should I trust this?

You don't have to trust us — you can verify. The zkApp circuit and the SDK are open source on GitHub. The verification key for every app is published on-chain. The proof file you receive can be inspected, verified by any independent tool that runs the Mina verifier, and re-checked against the on-chain Merkle root any time.

The pieces you'd need to trust to "fake" a license are: (a) the Mina blockchain itself (open, audited, ~100+ validators), and (b) the math of the underlying zero-knowledge proof system. Neither is something zkLicensing.com controls or could compromise unilaterally.

Integrating zkLicensing into your own app? The Docs cover the SDK, the zkApp circuit, the proof JSON format, and a separate developer FAQ (escrow accounting, self-hosting the verifier, the 2% platform fee).