This proposal describes a shileded-first ZecWallet desktop light client. It will have the exact same functionality of the desktop ZecWallet UI, except it uses the light client protocol to avoid downloading the entire blockchain.
A desktop lightwallet will dramatically improve usability. It will cut the amount of download needed by over 90%, making it much easier to get started with Zcash and send/receive transparent and shielded ZEC easily.
The core of the client will be a light client library that is written in Rust. It will implement the light client protocol, that
Users will be able to choose whether to run their Desktop ZecWallet UI in "full-node" mode or "light-client" mode.
In addition, we'll also build a simple command-line interface to the library so the light client wallet will be useable via the command line. This will be written in Rust as well, which will allow zcash light wallets to run on devices like the Raspberry Pi via just the command line. Extending to mobile via companion App
This will allow running the light wallet on headless devices like servers/Raspberry Pi devices etc…, which will additionally allow users to use the light client via the companion app on Android.
I estimate this project will take ~10 weeks of work.
|Build Light Client Rust library that talks to lightwalletd||3 weeks|
|Add support for transparent addresses to library||2 weeks|
|Build CLI wallet that can use the library||1 week|
|ZecWallet UI support||3 weeks|
The library will be written in Rust, so that it can be used by multiple wallets, like ZecWallet and Zepio. Rust can be:
My experience with ZecWallet is that most users critically need t-address support for on-boarding to the wallet. For most users, the first 2 transactions are always t-address transactions.
Without support for t-addresses in the wallet, users need too much effort to on-board to the app. They'll need to install another wallet (like the full-node desktop ZecWallet) to withdraw from an exchange and then send it to their light wallet, which will be too much friction