> For the complete documentation index, see [llms.txt](https://docs.nulth.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nulth.xyz/getting-started/quickstart.md).

# Quickstart

Create your own proof-authorized account and make a payment that only a zero-knowledge proof can authorize. Everything here runs on **Stellar testnet** — no real funds at risk.

## Before you start

* **Freighter** browser extension, switched to **Testnet**. The wallet you connect becomes your account's **admin** (governance) — it is never turned into a spending key.
* A couple of minutes.

## 1 · Open the app

Go to [nulth.xyz](https://nulth.xyz) and launch the demo. In the left sidebar, choose **Create account**.

## 2 · Connect your wallet

Click **Connect Freighter** and approve the connection. The connecting account becomes the **admin** of the account you're about to create: it can later rotate the policy or freeze the account, but it can **never** move funds.

## 3 · Define your policy — it stays in your browser

Set:

* a **per-payment cap** (for example, 50 USDC), and
* an **allowlist** of one or more destination addresses.

When you deploy, your browser generates a random **salt** and computes the **Poseidon commitment** `Poseidon(cap, salt)` and the **DEPTH-16 Merkle root** over your allowlist — entirely locally. The cap, the salt, and the allowlist entries **never leave your device**; only the commitment and the root are written on-chain.

## 4 · Deploy

Click **Create**. Freighter asks you to sign the deploy transaction. Under the hood this instantiates *your own* account via `createContractV2` against Nulth's **shared account wasm** and **shared BN254 verifier** — you are not redeploying the verifier, you are creating an account whose stored policy is *your* commitment and root, with *your* wallet as admin.

A **keystore** downloads and is saved (encrypted with a passphrase) in your browser. It is the only copy of your policy secret — keep it somewhere safe. See [Proving](/how-nulth-works/proving.md) for how the keystore is protected.

## 5 · Fund it

Send **testnet USDC** to your new account address (the dashboard shows the address and its live balance). Any account holding testnet USDC can fund it.

## 6 · Make a proof-authorized payment

Open **Send payment**, choose an **allowlisted destination** and an amount **within your cap**, then **Generate proof & pay**. Your browser builds a Groth16 proof in about a second — that proof *is* the signature on the `token.transfer`. Watch the payment settle on-chain, with the transaction hash linked to the explorer.

## 7 · Try to break it

Change the destination to one that is **not** in your allowlist and pay again. The prover cannot build a proof — the circuit is unsatisfiable for an out-of-policy payment — so **no transaction is ever formed**. That is the core guarantee: an account that cannot be drained outside the rules it committed to.

## Where to next

* [**Core concepts**](/getting-started/concepts.md) — the mental model behind what you just did.
* [**Give an AI agent a spend-safe account**](/guides/agent-spending-account.md) — the same guarantee, applied to autonomous agents.
* [**Security model**](/trust-and-security/security-model.md) — exactly what is and isn't private, and the trust boundaries.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.nulth.xyz/getting-started/quickstart.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
