adityapk00 / zecwallet-light-cli

Zecwallet Lightclient Library and CLI interface
MIT License
69 stars 65 forks source link

Allow disabling requesting all transactions in block #35

Open NorbertBodziony opened 4 years ago

NorbertBodziony commented 4 years ago

Right now when cli downloads all transactions from block that includes our transaction. User should be able to disable it. It will improve sync time but of course reduce anonymity.

holmesworcester commented 4 years ago

To add more context, querying transactions is a bottleneck in some cases.

There is a large set of transactions that every Zbay user will have, e.g. transactions sent to included-by-default viewing keys (default channels, identity "channels", etc.)

According to the published threat model for Zcash light wallets there are known attacks that can reveal to some adversaries what wallet someone is using, and protecting against an adversary learning that a Zcash user is using Zbay is not (yet at least) part of our threat model.

Given this, fetching only the transactions we're interested in from these channels does not significantly impact user privacy and could provide a ~2x or greater reduction in syncing time, or more as blocks become more full. It will also put less load on a given lightwalletd.

adityapk00 commented 4 years ago

This is unlikely to cause any significant performance improvements. You can follow along the sync progress in the log, and you'll see that fetching the transactions / memos only takes the last few seconds/minutes of the sync. The vast majority of time is spent (1) attempted decrypting of sapling spends and outputs and (2) Updating the witnesses for all notes in the wallet