Address engine
Primary path: @elemental-zcash/zaddr_wasm_parser (Rust zcash_address → WASM). Heuristic fallback
if WASM fails — always shown on the ticket.
Workflow
A merchant-facing desk that encodes ZIP-321, validates addresses with maintained libraries, prints a thermal-style ticket, and exports data a BTCPay companion can ingest.
Enter receive address, amount, memo, label, and message — or paste an existing zcash: URI. The
desk supports unified, Sapling, and transparent addresses with explicit network selection.
Structured checks produce a PASS or FAIL ticket with a checklist. Warnings (e.g. transparent receive, no memo) do not fail preflight; hard errors (memo on t-addr, network mismatch) do.
On PASS, copy the URI, open the customer pay page with QR, or print the ticket. The pay page is a read-only view of the same validated payload.
Download handoff JSON matching handoff-v1 schema: preflight checks, payment URI, invoice fields,
and explicit ownership disclaimer (compose-time vs settlement).
Advance unpaid → detected → confirmed locally to demo a merchant workflow. This lane is MOCK — NOT CHAIN. Real detection belongs in BTCPay / zkool integration.
Primary path: @elemental-zcash/zaddr_wasm_parser (Rust zcash_address → WASM). Heuristic fallback
if WASM fails — always shown on the ticket.
Single-payment URIs only. Multi-pay query keys are rejected loudly. Memo encoding respects shielded rules.
Same checks headless: node bin/doctor.js --file fixtures/good-ua.json exits 0 on pass, 1 on fail.
Used in CI and merchant scripts.
Follow the four-step path on the merchant desk (sample buttons + handoff export), then use the reviewer guide on GitHub.