NozyWallet Development Roadmap

Hello everyone,

Following up since the v2.3.4 “Send Select” post (June 11): we kept shipping on mainnet, hardening the api-server + VPS operator path, and closing gaps the dynamic-fee pilot and compact-sync roadmap called out. Latest tagged CLI release: v2.3.6.5 — Teriyaki Hot.

Big thanks to @gilmore for running Nozy against a self-hosted Zebrad stack on a VPS — that testing surfaced two real companion-API bugs we fixed on master (details below).


What shipped since v2.3.4

Teriyaki Hot patch series (v2.3.5 → v2.3.6.5)

Release Focus
v2.3.5 api-server rejected valid long mainnet unified addresses (u1… > 100 chars). Validation now matches core wallet (up to 256 chars).
v2.3.6 Release policy: GitHub release assets are CLI binaries only for production today. Desktop, extension, and api-server stay in-repo for contributors until we promote them on release pages.
v2.3.6.1 Send checks cached notes.json balance before rescan; /api/balance excludes spent notes.
v2.3.6.2 Unified nozy::wallet_sync orchestrator; structured /api/sync errors (503 ZEBRA_UNAVAILABLE); “already synced” fast path; send marks notes spent in cache; speed-up after expiry (rebuild at priority ×4, not rebroadcast); desktop + extension pilot speed-up wiring; quieter Orchard scan logging by default.
v2.3.6.3 trusted_zebra_urls for operator VPS nodes when privacy-network policy is on; structured connect errors; POST /api/config/test-zebra matches real sync path; history confirmations fix.
v2.3.6.4 Remote VPS Zebra connect: configured zebra_url treated as trusted operator endpoint; http/https normalization on same host:port.
v2.3.6.5 Balance stayed 0 when cache was empty but sync thought it was caught up. Empty cache now triggers historical rescan to tip.

Changelog: CHANGELOG.md


Dynamic-fee pilot — Phase A items that landed after v2.3.0

Item Status
Extension / WASM fee_policy alignment Shipped in 2.3.x stack alignment
Speed-up after expiry (rebuild at ×4 fee) api-server + desktop + extension
Expired tx detection + note release Pending txs past expiry_height marked expired
Structured sync/send errors /api/sync phase + code JSON

Typical Orchard send fees (1 spend + change, no memo):

  • Standard: 10,000 zats
  • Priority (opt-in ×4): 40,000 zats
  • Expiry: tip + 5 blocks

VPS / companion API fixes (community-driven)

After @gilmore’s VPS + Zebrad setup, two companion issues showed up on synced wallets:

  1. Send rescanned ~50k blocks despite healthy sync — Send now reuses notes.json spendable notes + incremental witness catch-up; no fixed 50k rewind.

  2. Transaction history empty despite correct balance — History merges sent broadcasts with received deposits from notes.json (Received / Sent types).

These are on master (unreleased tag at time of writing).


New surface: mobile companion (in development)

nozy-mobile — Expo app → nozywallet-api → Zebrad + lightwalletd. Operator VPS guide: VPS-DEPLOY.md. Not production-ready yet.


New product lane: Business + Zcash Names (ZNS)

ZEC-first vendor path:

Phase Focus
0 (now) GitHub issue #85
1 Personal vs Business profile (Orchard account 0 vs 1)
2 Send to name.zcash via ZNS resolve
3 Mobile Sell mode — QR POS

Goal: vendor shows hotwing.zcash on QR; customer pays; vendor sees balance after sync. ZcashNames docs


Viewing keys & books (Phase 5 — planned)

Books, not identity: ZNS is how customers pay hotwing.zcash. Viewing keys are how you optionally give an accountant read-only access to Business activity — export a UFVK, never the seed or spending key.

Layer Role Viewing key?
ZNS hotwing.zcash → your receive unified address No — public name resolution
Business wallet Stall income & spend (Orchard account 1, same seed as Personal) Used internally to scan; export is optional
Personal wallet Day-to-day ZEC (account 0) Stays private unless you explicitly opt in

One mnemonic, two Orchard accounts:

Same seed

├── Personal → account 0 → your private spending

└── Business → account 1 → hotwing stand (Sell mode, receive, send)

Near term (Phases 1–3): you run the stall with full wallet access — Sell QR, sync, history on device/API. No viewing key leaves the wallet unless you choose to share books.

Phase 5 (after Sell mode + ZNS resolve are stable):

  • CSV export — business ledger (date, type, amount, txid, memo) for spreadsheets / tax prep
  • UFVK export — Business account only; accountant imports into a compatible scanner and sees shielded inflows/outflows without spend authority
  • Disclosure grant log — who you shared with, scope, expiry (audit trail)

Not the same as ZNS keys: claiming/updating hotwing.zcash uses a separate ZNS identity key (Ed25519, on-chain memos). That signs name registration — it does not reveal transaction history and does not spend ZEC.

Today: wallet scanning already uses Orchard viewing material internally; Keystone UFVK export exists for hardware pairing (account 0). Business disclosure export is on the roadmap, not shipped yet — we’ll stop for a security review before Phase 5 lands


Product pivot: pure Zcash stack (ZNS, POS, mobile)

For now we’re pausing active roadmap work on the Secret / Shade / XMR multichain lane and concentrating on a pure Zcash stack — Zebrad + lightwalletd, Orchard shielded sends, compact sync (Zeaking), mobile companion, and Zcash Names (ZNS) for identity and pay UX. That’s the story we want to ship and demo: one privacy-first ZEC wallet, human-readable names like hotwing.zcash, and a vendor Sell mode on mobile — not cross-chain DeFi as the headline.

Multichain code may remain in the repo for contributors, but near-term priorities are Zcash-native only. Planning: GitHub issue #85.


What’s next (near term)

  1. Tag release with history merge + send cache fixes.
  2. Mobile: profile → ZNS resolve → Sell mode QR.
  3. Zeaking witness from compact store (compact-first send path).
  4. More VPS operator testing — GitHub Issues welcome.

Honest notes

  • Still client-side ZIP-317 + opt-in 4× — not mempool congestion pricing.
  • GitHub releases = CLI only until other surfaces are promoted.
  • Business/ZNS is planned, not shipped yet.

Feedback welcome — especially on payment with ZNS.

3 Likes

Kudos to @Lowo88 and NozyWallet for being the first wallet to implement both Dynamic Fees features!

3 Likes

Thanks, it was an honor @shieldedmark! :partying_face:

3 Likes

This is a great writeup :fire: Glad the VPS testing actually helped surface real bugs that made it into the fixes, the send rescan and history merge fixes especially.

Keep shipping, you have my support all the way. Excited to see ZNS + mobile Sell mode come together too.

2 Likes

Happy Father’s Day to all the dad’s in the Zcash community.

I just updated my landing page.
NozyWallet - Privacy by Default | Monero-Level Privacy, Zcash Speed

5 Likes