<oembed><type>rich</type><version>1.0</version><author_name>npub17ty4mumkv43w8wtt0xsz2jypck0gvw0j8xrcg6tpea25z2nh7meqf4qgyd</author_name><author_url>https://nostr.ae/npub17ty4mumkv43w8wtt0xsz2jypck0gvw0j8xrcg6tpea25z2nh7meqf4qgyd</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2015-08-24&#xA;📝 Original message:NACK: stated rationales are invalid: both privacy and DoS (see below for&#xA;experimental data).&#xA;&#xA;&#xA;1 - Bloom filtering doesn&#39;t add privacy for node operators, it adds privacy&#xA;for lightweight wallets. And in fact, with a high FP rate it does do that.&#xA;Most users want both low bandwidth usage *and* query scrambling, which is&#xA;harder to do but not impossible. There is a clear roadmap for how to&#xA;implement that with smarter clients: no protocol changes are needed.&#xA;&#xA;So the first stated rationale is spurious: disabling Bloom filtering&#xA;doesn&#39;t improve privacy for anyone. It can only hurt.&#xA;&#xA;&#xA;&#xA;2 - SPV usage is rising, not falling.&#xA;&#xA;Peter&#39;s data is flawed because he ignored the fact that SPV clients tend to&#xA;connect, sync, then disconnect. They don&#39;t remain connected all the time.&#xA;So merely examining a random snapshot of what&#39;s connected at a single point&#xA;in time will give wildly varying and almost random results.&#xA;&#xA;A more scientifically valid approach is to check the number of actual&#xA;connections over a long span of time. Here&#39;s the data from my node:&#xA;&#xA;mike at plan99:~/.bitcoin$ grep -Po &#39;receive version message: ([^:]*):&#39;&#xA;debug.log |sort |uniq -c|sort -n|tac|head -n 10&#xA;  11027 receive version message: /getaddr.bitnodes.io:&#xA;   6264 receive version message: /bitcoinseeder:&#xA;   4944 receive version message: /bitcoinj:&#xA;   2531 receive version message: /Snoopy:&#xA;   2362 receive version message: /breadwallet:&#xA;   1127 receive version message: /Satoshi:&#xA;    204 receive version message: /Bitcoin XT:&#xA;    128 receive version message: /BitCoinJ:&#xA;     97 receive version message: /Bither1.3.8/:&#xA;     82 receive version message: /Bitaps:&#xA;&#xA;Once crawlers are removed, SPV wallets (bitcoinj, breadwallet) make up the&#xA;bulk of all P2P clients. This is very far from 1% and falling, as Todd&#xA;wrongly suggests.&#xA;&#xA;&#xA;&#xA;3 - It is said that there is a DoS attack possible. This claim does not&#xA;seem to have been researched.&#xA;&#xA;I decided to test it out for real, so I implemented a DoS attack similar to&#xA;the one we&#39;ve seen against XT nodes: it sends getdata for large (1mb)&#xA;filtered blocks over and over again as fast as possible.&#xA;&#xA;As was reported and makes sense, CPU usage goes to 100%. However I couldn&#39;t&#xA;see any other effects. RPCs still react immediately, the Qt GUI is fully&#xA;responsive, I was even able to sync another SPV client to that node and it&#xA;proceeded at full speed. It&#39;s actually pretty nice to see how well it held&#xA;up.&#xA;&#xA;Most importantly transactions and blocks continued to be relayed without&#xA;delay. I saw my VPS node receive a block only eight seconds after my local&#xA;node, which is well within normal propagation delays.&#xA;&#xA;There&#39;s another very important point here: I profiled my local node whilst&#xA;it was under this attack. It turns out that Bloom filtering is extremely&#xA;fast. 90% of the CPU time is spent on loading and deserializing the data&#xA;from disk. Only 10% of the CPU time was spent actually filtering.&#xA;&#xA;Thus you can easily trigger exactly the same DoS attack by just using&#xA;regular getdata requests on large blocks over and over. You don&#39;t need&#xA;Bloom filtering. If you don&#39;t want to actually download the blocks just&#xA;don&#39;t TCP ACK the packets and then FIN after a few seconds .... the data&#xA;will all have been loaded and be sitting in the send buffers.&#xA;&#xA;So even if I refine the attack and find a way to actually deny service to&#xA;someone, the fix would have to apply to regular non-filtered block fetches&#xA;too, which cannot be disabled.&#xA;&#xA;&#xA;In summary: this BIP doesn&#39;t solve anything, but does create a big upgrade&#xA;headache.&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150824/ece22a74/attachment.html&gt;</html></oembed>