Open NorbertBodziony opened 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.
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
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.