# The launch proof

> Nine checks your browser runs on every token’s launch transactions.

Every token page has a **Proof** tab. Your browser downloads the token’s launch transactions and re-checks them with the same verifier the indexer runs, trusting only the reference KCC-20 program bundled with the app, never the copy served with the proof.

| Step | What it checks |
| --- | --- |
| 1. Lineage T | The token’s covenant id is recomputed from its genesis transaction, with no extra cells of that id. |
| 2. Token program | Each genesis cell runs the byte-exact reference KCC-20 program. |
| 3. Genesis state | Both cells are owned by the curve and their amounts add up to the total supply. |
| 4. Sealing argument | The reference program can only transfer, never mint, so the supply stays sealed. |
| 5. Lineage C (curve) | The curve’s id and program are recomputed and match its published template. |
| 6. Custody argument | Curve-owned tokens move only through the curve’s own entries, at the coded price. |
| 7. Metadata (KCC-23) | The name, ticker and image declaration is bound to the token’s id. |
| 8. R recovery | The program recovered from spent cells is the one that actually executed. |
| 9. Graduation group integrity | The graduation created exactly one pool cell and one reserve cell. Before graduation this step is not applicable. |

For a graduated token, your browser also asks the **public Kaspa API** (api.kaspa.org, not run by Kasseal) whether the graduation transaction it checked is the one accepted on chain, with the same signature scripts. If the public API shows another transaction, the proof is invalid. If it has not found the transaction yet (in the first seconds after a graduation), the pool is not yet proven and the app asks again. If the public API cannot be reached, the proof stands as checked from Kasseal’s data, so an outage elsewhere never blocks trading.

When all applicable steps pass, the tab says **Verified in your browser**. The tab also lists the curve’s constants (price, fee, curve tokens, reserve) and the genesis transactions with links to kascov.

## What the app does with it

- Buying, on the curve or on the pool, and adding liquidity need the proof **bound** in your browser. Until then buys and deposits are paused, and selling or withdrawing liquidity is a separate **Exit anyway** action that you confirm after a warning: the app cannot verify where the exit goes, so check the amounts in your wallet before you sign.
- Every curve trade is built only on the curve the proof names, and every pool swap, deposit and withdrawal only on the pool the proof shows the graduation created. If the app were pointed at another curve or pool, even one running the same contract, it refuses to build the trade and your wallet is never asked.

Source: https://app.kasseal.com/docs/launch-proof
