Grant Application - Kestrel: Native Mobile WalletConnect for Zcash

Hi everyone, Aderemi from Kuvarpay here. We have submitted a grant application to Zcash Community Grants and would really value the community’s feedback before the committee reviews it.

GitHub application: Grant Application - {Application Name} · Issue #532 · ZcashCommunityGrants/zcashcommunitygrants · GitHub

Funding requested: $20,000 ($3,000 startup + three milestones)
Timeline: 12 weeks
License: MIT

This replaces our earlier application, Kestrel + ZecAuth (#421), which was declined in September. The scope has changed substantially, as explained below.

Overview

Kestrel is an open-source, self-custodial Zcash wallet for iOS and Android. It will be the first native mobile implementation of the shared Zcash WalletConnect standard that @noir_wallet published under grant #391. Alongside the wallet, we will release a reusable wallet-side module and an integration guide so other mobile Zcash wallets can add WalletConnect without building it from scratch.

The problem

Zcash mobile users can’t use WalletConnect. A shared Zcash WalletConnect spec now exists, and Noir is implementing it in a browser wallet. But no mobile wallet offers WalletConnect for Zcash today. We checked the source of Zodl (iOS and Android) and Zingo mobile and found no WalletConnect dependency. Most Zcash users hold ZEC on their phones, so dApps that adopt the standard still can’t reach them.

Every mobile wallet would have to build the same thing. Pairing, session handling, a permission manager, approval screens, and mapping requests onto the Zcash SDK. Without a reusable implementation, each team repeats this work and makes its own privacy decisions.

Some privacy questions are still open. The v1 spec deliberately defers balance and history methods, and it allows but doesn’t require a different address per app. There’s also a format limit: CAIP-10 caps an account address at 128 characters. A Unified Address with Orchard, Sapling and transparent receivers is about 213 characters, and only an Orchard-only one (about 106) fits.

What we will deliver

  1. Kestrel for iOS and Android. Shielded send and receive, Unified Addresses, Ironwood support with the ZIP-318 Orchard to Ironwood migration, on-device keys, PIN and biometrics, built on the current Zcash mobile SDKs (4.x).
  2. The shared spec, implemented natively on mobile. zcash_requestAccounts, zcash_getAccounts, zcash_sendTransaction and the account and chain events, as published. Any dApp built for the standard works with Kestrel unchanged. Each connected app gets its own fresh Orchard-only address, so apps can’t link your activity across sites. We are not implementing zcash_signTransaction, for the privacy reasons the spec itself gives.
  3. A reusable React Native module with the session layer, permission manager, Zcash method handlers and approval screens. React Native wallets can adopt it directly, and native wallets can follow the same structure.
  4. Contributions to the shared spec, plus a public integration guide and a lessons-learned report on what was hard and what would make the next integration easier. The spec contributions are proposals for balance and history consent, per-app addresses, the CAIP-10 account format, and a candidate scheme for the optional zcash_signMessage. That scheme uses per-app sign-in keys that are not linked to your addresses or your transactions.

How this relates to Noir’s work

This is meant to complement grant #391, not compete with it. Noir defined the standard and is shipping it on the browser. Kestrel brings the same standard to native mobile and feeds what we learn back into the shared spec. We will coordinate with the Noir team on our proposals and on one shared namespace registry entry, so the ecosystem has a single standard.

What changed since our previous application

The feedback on #421, from the committee and here on the forum, was consistent. People asked why we weren’t using WalletConnect instead of our own transport. They said work that mainly helps one company or one service isn’t a good fit for ZCG. And they said documentation and practical guidance for the next teams would be valuable. This application is built around that feedback. It uses WalletConnect and the shared spec, every company-specific part is removed (no KuvarSend or fiat ramps), and the guide and lessons-learned report are funded deliverables.

Budget

Item Amount
Compensation (3 people, 12 weeks, part-time) $15,000
Independent security review $3,000
Light-client infrastructure $1,000
CI and crash monitoring $600
Reference dApp hosting and test infrastructure $400
Total $20,000

Milestones

Due Amount Main deliverables
Startup On approval $3,000 SDK 4.x upgrade, infrastructure, security review scoping
1 2026-12-29 $5,500 Kestrel core wallet on iOS and Android, WalletConnect pairing and sessions
2 2027-01-26 $5,500 Spec methods, per-app addresses, payment approval, reusable module on npm, reference dApp, ZIP-318 migration
3 2027-02-23 $6,000 Security review, store releases, integration guide, lessons-learned report, spec proposals, mainnet demo

Dates assume a December 1 start and shift if approval comes later.

Team

  • Aderemi Azeez, Project Lead. Built ZecAuth and the ZecWallet prototype at ZecHub Hackathon 3.0.
  • Abdulhammed Abdulazeez, Mobile Engineer (iOS / Android).
  • Abdulazeez Jubril Kolawole, Backend / Infrastructure. Built Z3 Launcher at ZecHub Hackathon 3.0.

Feedback we would especially value

  • Mobile wallet teams: would a reusable WalletConnect module be useful to you? What would make it easy to adopt?
  • dApp developers: what do you need from a mobile Zcash wallet over WalletConnect?
  • Privacy: does a fresh address per connected app feel like the right default? How should balance and history access be consented to?

Full details, including user stories and acceptance criteria for each milestone, are in the application:

Thank you for reading. We will answer questions here and post monthly updates in this thread if the grant is approved.

1 Like