Retroactive Grant Application: Zallet deadlock fix, wallet bug fixes, new features and zcashd RPC parity

Overview
Zallet ( https://github.com/zcash/zallet ) is the new Zcash full-node wallet, developed by ZODL. It is the successor to the wallet that used to be built into zcashd, rebuilt as a standalone Rust application. It is how node operators, exchanges, and mining pools will interact with Zcash, so its reliability and zcashd parity are what decide whether people can actually move over. My work was fixing some critical bugs, along with implementing RPC methods for zcashd parity and improving security of the wallet.

About me: I’m Mohak, an independent Rust engineer with a cryptography and low-latency systems (HFT) background. I co-authored the original proposal to cut Zcash’s block time from 75s to 25s (link), and I post about technical Zcash topics on X and contribute across the Zcash GitHub repos. That block-time work is not part of this request; this application only covers merged code.

What’s in it: 13 merged PRs across Zallet, integration-tests, and lightwalletd, from March to November 2026.

Ask: $47,200

Bug fixes:

  • Wallets no longer silently freeze under load. 14 wallet RPCs could deadlock on the shared connection pool, so a wallet could stop answering forever, and a fresh one could hang on its first z_getnewaccount. Fixed so no RPC holds a connection while acquiring another, with a Clippy lint blocking regressions. (zallet#914, fixes #708)
  • One bad memo no longer hides a wallet’s funds. A single undecodable memo used to make z_listunspent fail outright, dropping every spendable note; it now skips just that memo. (zallet#866)
  • Wallet teams can test reorgs again. A darkside reorg-testing path in lightwalletd could spin forever. (lightwalletd#553)
  • Exchanges aren’t told RPCs are missing when they aren’t. The zcashd RPC-status table marked implemented methods absent; corrected, with a test that keeps it accurate. (zallet#885)

Then wallet safety and zcashd parity:

  • A zallet backup command that works on a live wallet (zallet#906)
  • Owner-only file protection on Unix and Windows (zallet#913)
  • Owner-only, crash-safe writes across the whole wallet (zallet#936)
  • Viewing-key import/export (zallet#431, zallet#614)
  • RPC cookie authentication (zallet#502)
  • Mining pools can see when coinbase funds unlock (zallet#789)
  • Consistent account birthdays across creation and recovery (zallet#760)
  • End-to-end regression coverage for viewing-key import (integration-tests#181)

How I priced it: 300 hours at $150/hour, broken down per PR in the issue, plus $2,200 for the AWS nodes I have run since March for testing and infra.

Everything is merged and linked in the GitHub issue ( Retroactive Grant Application - Zallet: deadlock fix, wallet reliability bug fixes, new features and zcashd RPC parity · Issue #96 · Financial-Privacy-Foundation/ZcashCoinholderGrantsProgram · GitHub ). Happy to answer questions during the review period. Thanks for reading.

Mohak

2 Likes

Glad to see you apply for funding @Mohak! Your contributions have been very helpful :flexed_biceps:

3 Likes

Thanks John! Been a pleasure collaborating with you

1 Like