A lightweight web wallet for Zcash

Zecwallet built a full implementation of this last year. You can find all the code and instructions here:

I’ll only comment on the technical aspects of this:

  • The web version of the lightwallet was live for about 6 months, but was deprecated after that. Primarily because (1) no one was using it and (2) It was slow.
  • I surveyed people who tried it out, and the main feedback was that
    1. They’d rather use the desktop app or the mobile app, and they didn’t “trust the web browser to keep my private transactions private”.
    2. They were also very hesitant to keep their wallets in the web browser or enter their seed phrases into the browser.
  • The second factor was that it was very slow. The WASM sync is excruciatingly slow because
    1. WASM is inherently slower than running native code
    2. WASM is single threaded, so it is not very efficient. This is particularly visible when constructing the zkproof for outgoing transactions, which was very very slow in the browser or WASM.
    3. WASM doesn’t have access to the network, so it has to jump context to Javascript to fetch blocks, transactions, memos etc…, and the context switch adds a lot of latency
    4. The browser doesn’t support gRPC streaming, so it has to use HTTP/JSON to fetch blocks, which adds another layer of latency.

Note that this was 6 months ago, so things might have changed now. At the time, there was no obvious way to overcome these limitations and the desktop/mobile wallets seemed to be working fine, so I ended up deprecating it.

12 Likes