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

It’s good Friday before the 4th of July my life change around this time 13 years ago. When, I became a dad now I’m a wallet developer ready for this new life, I vibe coded.

NozyWallet update:

We have started Ironwood / NU6.3 readiness work for NozyWallet and wanted to share where we are so everyone can know I can keep up with the changes taking place in this busy growing ecosystem and to give visibility for the work done.

Current status:

  • NU6.3 dependency stack is compiling against the current librustzcash / orchard pre-release APIs.
  • Nozy now has a ShieldedPool abstraction for Orchard vs Ironwood note tagging.
  • Ironwood wallet status / plan / migrate CLI scaffolding has been added.
  • ZIP 318 migration planning scaffolding is started, including canonical denomination planning and anchor bucket helpers.
  • Zebra RPC parsing is now pool-aware for z_gettreestate.
  • We added Ironwood treestate / tree-state accessors.
  • Scan plumbing now keeps orchard.actions and ironwood.actions separate.
  • Cached notes now have separate Orchard and Ironwood witness fields.

Validation so far:

  • cargo fmt --all passes
  • cargo test -p nozy --lib passes
  • cargo build passes

What is still pending:

  • Live NU6.3 testnet validation against an Ironwood-capable Zebra node.
  • Final transaction-builder routing for V3 / Ironwood spends and outputs.
  • Full ZIP 318 migration execution, including scheduled/pre-signed turnstile transactions.
  • Desktop/API migration UX.

We attempted local testnet setup today. The existing zebrad 4.3.1 install was not Ironwood-ready, so we started moving to a newer Ironwood-capable Zebra build. A power interruption stopped the final binary install, but our testnet config and Nozy-side code changes survived. We are restoring that setup next.

Hot Lemon Pepper Sprinkles
The post on X Nozy on X: "NozyWallet desktop is here & first public beta for Windows 🦓🔥🍋 Desktop v1.0.0-beta.1 “Hot Lemon Pepper Sprinkles” is a Tauri app with the same Orchard shielded core as the CLI: sync, send, history, and settings & built for your local Zebrad + lightwalletd stack. Download" / X
The ironwood not in this beta release but I do have a sreenshot of how it will look.

No Delays

2 Likes

NozyWallet update — July 2 post

Hello everyone,

It’s been a minute since, I posted a update here been working around the clock. Ironwood implementation really gave me a challenge with Nozy wallet for sure and I must say I’m happy about the process in this lately. Building Nozy wallet and making this for the community is a real milestone for me and the community. The way, I built Nozy really making Zcash the privacy leader in the world a self hosted wallet is the best way to give anyone max privacy to me.

Update

I’m still on Ironwood scaffolding: ShieldedPool, plan/migrate CLI stubs, pool-aware treestate, separate Orchard/Ironwood witnesses and we had not finished live NU6.3 validation or full ZIP 318 turnstile execution. Desktop beta.1 was out without Ironwood in the build.

That gap is closed for the CLI path. Here’s what landed.

Ironwood / ZIP 318 (the big one)

Releases

Surface Tag Notes
CLI v2.4.4 — Teriyaki Hot Production download path (Windows / Linux / macOS)
Desktop desktop-v1.0.0-beta.5 — Hot Lemon Pepper Sprinkles Ironwood UX in the GUI; still pre-release
Extension extension-v0.1.9 — Sweet Chili Companion + ZNS resolve on Send
Mobile mobile-v1.0.0-beta.Lemon Pepper First tagged companion beta (EAS / store path; not a GitHub APK yet)

CLI still needs your own Zebrad + lightwalletd. Prefer local loopback for migration broadcast.

Security — AI-assisted self-review

We ran a Least Authority–style AI-assisted self-review of CLI + shared core + Desktop, then fixed the findings in-tree. This is not “Least Authority audited NozyWallet.” Spirit of their ecosystem writeup: AI-Assisted Security Auditing in the Zcash Ecosystem - Least Authority

Pack: Nozy-wallet/docs/reference/security-audit at master · LEONINE-DAO/Nozy-wallet · GitHub

Short version: ~20 leads → F-01…F-14 elevated findings → all closed / hardened in #223#225. Highlights:

  • Migration submit client actually binds Tor/proxy/Nym (no clearnet submit after the privacy gate)
  • notes.json + migration schedule encrypted at rest; vault KDF → Argon2id
  • “Local” node for safer migration = loopback only
  • api-server defaults to 127.0.0.1; desktop migrate step-up + IPC hardening
  • ZIP 318 schedule rebuild / funding helper correctness fixes

Extension WASM and mobile FFI were out of scope for that pass.

Also shipped along the way

  • Sapling quiet-legacy (status / scan / shield) via companion API — less noisy legacy-funds UX
  • Zcash Names (ZNS) resolve across Send surfaces + merchant / business profile work
  • Desktop betas progressed beta.1 → beta.5 with Ironwood in the product (what the July screenshot was pointing at)

Still pending

  • Mobile store builds via EAS

  • Formal third-party review if the community wants it later

  • Broader community smoke on mainnet migrate (not just our operator path)

  • Desktop GA (still Hot Lemon beta)

Hope the pending work don’t slow my retroactive process down Nozy wallet is a working trusted privacy tool the Zcash community can depend on and I take my work serious 596 commits.

1 Like

Hello everyone,

Sorry I’m back so early @gilmore found a issue with the fee charge on the extension side of Nozy wallet.

NozyWallet extension update — v0.1.10 Sweet Chili

We just dropped a browser extension release to fix a real fee mismatch.

Release: Release Sweet Chili-v0.1.10 · LEONINE-DAO/Nozy-wallet · GitHub

Asset Use
nozy-extension-chromium-0.1.10.zip Chrome / Edge (load unpacked)
nozy-extension-firefox-0.1.10.zip Firefox (validate before AMO)

What was wrong

Nozy’s native surfaces (CLI, Desktop, companion api-server**) already use our ZIP-317 priority ×4** fee policy and typical send 40,000 zat (0.0004 ZEC).

The extension WASM / service-worker path did not. It still defaulted to ZIP-317 conventional fee (10,000 zat / 0.0001 ZEC) when priority wasn’t forced, and the WASM prove path had no ×4 floor. So extension (and anything proving through that path) could underpay vs CLI/Desktop

Into next time everyone.

1 Like

Tested this on the api-server side (nozywallet-api) and can confirm, pulled latest master, rebuilt, ran a real withdrawal through it, and the fee deducted correctly at 40,000 zat (0.0004 ZEC), matching the ZIP-317 ×4 policy exactly. Verified through actual balance delta math, not just the tx response

Nice fix @Lowo88, good to know this is confirmed working end-to-end now, not just on the extension sid

1 Like

NozyWallet update — Teriyaki Hot v2.4.5 + Mango Habanero v2.4.6 + Hot Lemon Pepper Sprinkles beta.6

Short follow-up on what we cut fresh CLI, Desktop, and now localhost companion API builds so the security / supply-chain work and the companion packaging are what people actually download.

What we fixed

Rust / wallet binaries (shipped on v2.4.5 / desktop beta.6; carried forward on v2.4.6)

  • RUSTSEC-2026-0204crossbeam-epoch0.9.20 (CLI + desktop locks)
  • RUSTSEC-2026-0194 / 0195 — desktop plist1.10.0quick-xml 0.41
  • Broader cargo-audit cleanup: dropped yanked core2, bumped anyhow / spin / getset; remaining UniFFI/Tauri/ark noise is documented ignore-only
  • GitHub Dependabot security alerts for those crates are cleared on master

Companion API (new on v2.4.6)

  • First GitHub Release attach of nozywallet-api-* as a localhost companion beta (http://127.0.0.1:3000 by default)
  • Seed policy documented honestly — not a public hosted wallet API

Releases

Surface Tag Notes
CLI v2.4.5 — Teriyaki Hot Supply-chain clears
CLI + companion API v2.4.6 — Mango Habanero Latest CLI; adds nozywallet-api-
Desktop desktop-v1.0.0-beta.6 — Hot Lemon Pepper Sprinkles

If you’re on v2.4.4 / desktop beta.5, please upgrade older installers won’t pick up these lockfile fixes by themselves. Prefer v2.4.6 for CLI.

Big thanks to @gilmore hope everyone like this new update.

2 Likes

Appreciate the shoutout, It was great working together on this.

Thanks for being so responsive to the reports and getting the fixes out quickly. Looking forward to what’s next for Nozy.

2 Likes

Yes, you a stakeholder have to respond this shows me the power be hide teamwork just woke up out my sleep to write thus.

1 Like

Thanks, I appreciate that. Happy to contribute wherever I can.

It’s been great working together, and I’m looking forward to helping make Nozy and the wider Zcash ecosystem even stronger.

1 Like