Reference
CLI reference
Three binaries, one per role: pof-prove for holders, pof-verify for anyone checking, pof-anchor for whoever publishes anchors. Each release ships all three.
On this page
#Install
curl -fL https://github.com/SATISH-JALAN/Vouch/releases/latest/download/vouch-linux-x86_64.tar.gz | tar xz # or vouch-macos-arm64.tar.gz, vouch-windows-x86_64.zip
# or build from source (Rust 1.91+)
git clone https://github.com/SATISH-JALAN/Vouch && cd Vouch/backend && cargo build --release -p pof-prove -p pof-verify -p pof-anchor#pof-prove
The holder’s CLI. Keys stay in this process, it links no network client, and nothing is broadcast.
pof-prove prove --request <encoded> --snapshot <file.vsnp> --seed-file <path> --out proof.pof [options]| Option | Meaning |
|---|---|
--request | The encoded request from a /prove link (the r= value, or the whole link). |
--snapshot | A snapshot written by pof-anchor scan. Its anchor must be published. |
--seed-file | A BIP 39 mnemonic or a hex seed. Read locally; never leaves the process. |
--account | ZIP 32 account. Default 0. |
--network | mainnet or testnet. Default: the snapshot’s. |
--bind-solana | Bind the proof to a Solana account (base58), for on-chain audiences. |
--since | Prove the notes were in the chain at this checkpoint (a multiple of 1,000) and unmoved since. |
--batch-size | 1–5. A reserves batch: every usable note, in proofs of up to N notes. Default 5 for reserves requests. |
--exit | An exit certificate (circuit 2) that names the notes. Implied by an exit request. |
--intent | With --exit: the deposit or quote id it is for. Default: the request id. |
--yes | Skip the confirmation prompt. |
| Command | Does |
|---|---|
pof-prove history [--secrets] | Proofs you have made: claim, audience, expiry, status. --secrets also prints revocation secrets. |
pof-prove revoke <id> --endpoint <url> | Publish a proof’s revocation secret to the list your verifiers check. |
pof-prove demo prove --world … --request … | Answer a request as the demo holder, against the published demo ledger. Takes the same --since, --batch-size and --exit options. |
pof-prove demo init | pool | fixtures | Make a demo world, the single-use proof pool for /demo, or every committed test vector. |
#pof-verify
The reference verifier. Reads local files only, so it can gate CI or a batch job.
pof-verify check <file.pof | file.pofb> --audience <id> --anchors anchors.json [options]
pof-verify match --cert certificate.pof --deposit deposit.json| Option | Meaning |
|---|---|
--audience | Your verifier identifier. Only its hash is compared with the proof. |
--anchors | The anchor table: a JSON array of {network, height, ncRoot, nfRoot}. |
--revocations | The revocation list: {"secrets": [hex…]} or a bare array. |
--now | Evaluate as of this unix time instead of now. |
--dormant-since | Require the notes to be unmoved since this block or earlier. |
--tip-height, --max-anchor-age | Together: refuse a proof whose spent set is more than N blocks below the tip you know. |
--epoch | Require the period your request named, so reuse within it is visible. |
--seen | With --epoch: your reuse registry, a JSON array of hex tags already accepted. |
--json | Print the full JSON result (the schema at /schema/pof-v1.json). |
| Exit code | Meaning |
|---|---|
| 0 | Valid (match: matched) |
| 1 | Invalid (match: mismatch) |
| 2 | Expired |
| 3 | Malformed |
| 4 | Could not run: a usage error, an unreadable file, bad JSON |
#pof-anchor
Rebuilds and publishes anchors from public chain data, and reads a deposit’s nullifiers for exit matching.
| Command | Does |
|---|---|
pof-anchor scan [--network mainnet|testnet] [--to H] [--also-at H,…] | Stream every Ironwood action since activation, rebuild both trees, check the tree root, size and block hash against lightwalletd, write the snapshot and merge the anchor into the table. --to defaults to tip − 100, rounded down to 1,000. |
pof-anchor tx --txid <hex> [--network …] | The Ironwood nullifiers a mined transaction reveals, as JSON: the input to pof-verify match. |
pof-anchor check --snapshot <file> [--at H] | Re-derive a snapshot’s roots and compare them with lightwalletd. |
Every command takes --server to choose the lightwalletd; the defaults are zec.rocks:443 and testnet.zec.rocks:443. The server must report the same chain as --network, so a testnet anchor can never be published as mainnet.