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.
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.
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 — the passphrase is what proves ownership when the app unlocks. Refunds and renewals are authorised by the license's wallet, so neither needs the passphrase.
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 service 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.
Yes — by default, 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. This is intentional: the proof is a bearer credential and the public output doesn't reveal the buyer's wallet.
Vendors can optionally set a concurrent-device cap at registration (e.g. 3 devices). When a cap is set, each device that proves ownership receives a short-lived activation token from the verifier, and older devices are evicted once the cap is exceeded — you can also log a device out from the SDK. This cap is enforced by a hosted verifier round-trip on every session, so licenses under a cap don't get the fully-offline post-refund path that uncapped licenses do (the anchor still handles validity/expiry offline, but session tokens always round-trip).
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.
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, pick the license, and sign — no passphrase needed. 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.
Open the Renew page, connect your wallet, paste in your existing proof.json, and pay the vendor's renewal price. The service 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 embedded in 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.
Your license keeps working until its expiry, regardless of what the vendor does. The proof is verified locally against a public verification key embedded in 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.
It depends on which verification path your app uses and when the outage hits:
New purchases, renewals, and refunds always pause during Mina downtime, since they all write on-chain.
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.
You don't have to trust us — you can verify. An independent security audit of the zkApp circuit is planned (work-in-progress), and the SDK source is available for review today. On mainnet, buy / renew / refund all happen on the vendor's own branded page rather than here, so the visual polish of the site you're on doesn't tell you much. What does: before signing a purchase, copy the destination address from your wallet popup, open a public Mina explorer (minascan.io), and check its verification-key hash against the value on our Trust anchor page. A match proves the on-chain contract holding your funds is the genuine zkLicensing circuit and not a lookalike — no matter what the vendor's page claims. The proof file you receive can also 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.