<oembed><type>rich</type><version>1.0</version><author_name>npub1ac86vemj7ce5z8jyxt39rna3tvwql6xd30ha3vxcd6esysp23d9qrlswfj</author_name><author_url>https://nostr.ae/npub1ac86vemj7ce5z8jyxt39rna3tvwql6xd30ha3vxcd6esysp23d9qrlswfj</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2015-02-20&#xA;📝 Original message:Mike Hearn wrote:&#xA;&gt; Adam Back wrote:&#xA;&gt; &gt; Its seems surprising no one thought of it&#xA;&gt; &gt; that way before (as it seems obvious when you hear it) but that seems&#xA;&gt; &gt; to address the privacy issues as the user can fetch the block bloom&#xA;&gt; &gt; filters and then scan it in complete privacy.&#xA;&gt;&#xA;&gt; And then what? So you know the block matches. But with reasonable FP&#xA;&gt; rates every block will match at least a few transactions (this is already the&#xA;&gt; case - the FP rate is low but high enough that we get back FPs on nearly&#xA; &gt; every block). So you end up downloading every block?&#xA;&#xA;I mean because the user is scanning he can binary search which set of&#xA;addresses from his wallet are possibly in the block and then request&#xA;the specific addresses and some will be false positives and some real,&#xA;but with the bloom commitment (and UTXO trie organised commitment) he&#xA;can verify that the positive hits are correct via the merkle path, and&#xA;that the false positives are not being wrongly withheld by obtaining&#xA;merkle path proof that they are not in the trie.&#xA;&#xA;Adam&#xA;&#xA;On 20 February 2015 at 16:54, Mike Hearn &lt;mike at plan99.net&gt; wrote:&#xA;&gt; Hey Adam,&#xA;&gt;&#xA;&gt;&gt;&#xA;&gt;&gt; Mike had posted a detailed response on the topic on why its complex&#xA;&gt;&gt; and becomes bandwidth inefficient to improve it usefully.&#xA;&gt;&#xA;&gt;&#xA;&gt; To clarify, we could improve privacy and still preserve usefully high&#xA;&gt; performance, it&#39;s just a lot of complicated programming work. You need to&#xA;&gt; find out from the OS how much bandwidth you have to play with, for example,&#xA;&gt; and do all the very complex tracking to surf the wave and keep yourself in&#xA;&gt; roughly the right place.&#xA;&gt;&#xA;&gt;&gt; The basic summary of which I think is that its not even intended to&#xA;&gt;&gt; provide any practical privacy protection, its just about compacting&#xA;&gt;&gt; the query for a set of addresses.&#xA;&gt;&#xA;&gt;&#xA;&gt; The original intent of Bloom filtering was to allow both. We want our cake&#xA;&gt; and we want to eat it.&#xA;&gt;&#xA;&gt; The protocol can still do that, with sufficiently smart clients. The problem&#xA;&gt; is that being sufficiently smart in this regard has never come to the top of&#xA;&gt; the TODO list - users are always complaining about other things, so those&#xA;&gt; things are what gets priority.&#xA;&gt;&#xA;&gt; It&#39;s not IMO a protocol issue per se. It&#39;s a code complexity and manpower&#xA;&gt; issue.&#xA;&gt;&#xA;&gt;&gt;&#xA;&gt;&gt; Its seems surprising no one thought of it&#xA;&gt;&gt; that way before (as it seems obvious when you hear it) but that seems&#xA;&gt;&gt; to address the privacy issues as the user can fetch the block bloom&#xA;&gt;&gt; filters and then scan it in complete privacy.&#xA;&gt;&#xA;&gt;&#xA;&gt; And then what? So you know the block matches. But with reasonable FP rates&#xA;&gt; every block will match at least a few transactions (this is already the case&#xA;&gt; - the FP rate is low but high enough that we get back FPs on nearly every&#xA;&gt; block). So you end up downloading every block? That won&#39;t work.&#xA;&gt;&#xA;&gt; Eventually, wallets need to stop doing linear scans of the entire block&#xA;&gt; chain to find tx data. That worked fine when blocks were 10kb, it&#39;s still&#xA;&gt; working OK even though we scaled through two orders of magnitude, but we can&#xA;&gt; imagine that if we reach 10mb blocks then this whole approach will just be&#xA;&gt; too slow.&#xA;&gt;&#xA;&gt; The main reason wallets are scanning the chain today (beyond lack of&#xA;&gt; protocol support for querying the UTXO set by script), is that they want to&#xA;&gt; show users time-ordered lists of transactions. Financial apps should show&#xA;&gt; you payment histories, everyone knows this, and without knowing roughly when&#xA;&gt; a tx happened and which inputs/outputs were mine, providing a useful&#xA;&gt; rendering is hard. Even with this data the UI is pretty useless, but at&#xA;&gt; least it&#39;s not actually missing.&#xA;&gt;&#xA;&gt; By combining Subspace and BIP70 we can finally replace the payments list UI&#xA;&gt; with actual proper metadata that isn&#39;t extracted from the block chain, and&#xA;&gt; at that point non-scanning architectures become a lot more deployable.</html></oembed>