Zecwallet is a full node and lightclient wallet for Zcash. It has two components:
We propose to replace (1) with a new React-powered UI based on the open-source Zepio wallet.
Zecwallet was originally written, from scratch, a year ago. It was written in C++/Qt to be fast and responsive. However, over the last year, two issues have cropped up:
In the meanwhile, the Zcash Foundation also funded another wallet, Zepio, which has built a very user-friendly UI and wallet for a Zcash full node. React is a powerful and very flexible UI frontend tech that allows for very expressive UIs to be built easily. And since Zepio has already built one, we can reuse it and implement the UI on top of existing Zecwallet, and use that as a starting point for all the future Zecwallet features.
Building the UI in React will also help us down the road for a React-native based Lightwallet for iOS and Android (although the iOS and Android apps are not in scope for this project).
We will take the react-based Zepio UI and integrate it on top of the existing Zecwallet codebase. This includes:
Use the react frontend as the UI on top of the existing Zecwallet code base. The Zecwallet Lightclient library will be compiled into WASM and used in an electron app. This will be available as:
Use the react frontend as the UI on top of the existing Zecwallet full node app. This will be available as a electron App for MacOS, Windows and Linux.
Zecwallet Fullnode and Zecwallet Lite share a majority of their UI code already, and we will continue to be true to use the same UI for both apps.
Npm/electron based apps have suffered some high-profile hacks in the past due to supply-chain attacks on the npm packages. To limit these as much as possible, we will run all the critical code - Private key management, payment detection, tx signing etc… - inside WASM, which runs in a separate memory space, thus benefiting from the WASM's security model
There are two notable downsides:
This project will take 8 weeks.
The total funding requested for this project is USD 60,000.