As previously discussed[0][1][2] on the mailing list, github issue commentary, 
and IRC channels, there's substantial reason to disable BIP37 in network nodes 
which are getting stronger as the size of the chain increases. BIP37 has 
significant denial of service issues which are unsolvable in the design, it 
introduces undue load on the bitcoin network  by default, and doesn't provide 
an acceptable amount of security and reliability to "lightweight wallets" as 
originally intended. 

BIP37 allows "lightweight wallets" to connect to nodes in the network, and 
request that they load, deseralize, and expensively apply an arbitrary bloom 
filter to their block files and mempool. This should never have been the role 
of nodes in the network, rather it should have been opt-in, or performed by a 
different piece of software entirely. The inability of the nodes to cache the 
responses or meaningfully rate limit them makes it detrimental to serve these 
requests. 

BIP37 was intended to have stronger privacy than it does in reality[3][4], 
where effectively any node that can capture `filterload` and `filteradd` 
responses can trivially de-anonymize an entire wallet that has connected 
irrespective of the amount of noise they add to their filters. The connected 
node lying by omission is undetectable by any wallet software, where they will 
be lead to believe that there are no matching responses; this is counter-able 
by further destroying privacy and loading down the network by having multiple 
peers simultaneously return filter results and hoping that at least one isn't 
lying. 

NODE_BLOOM has been implemented already which allows nodes to signal in their 
service message that they do, or do not support filtering. I suggest that in 
the next major release this is defaulted to 0, and any software relying on 
BIP37 move to using other filtering options, or another piece of dedicated 
software to serve the requests. Future releases of the reference software 
should remove BIP37 commands entirely. 


[0]: 
https://www.reddit.com/r/Bitcoin/comments/3hjak7/the_hard_work_of_core_devs_not_xt_makes_bitcoin/cu9xntf/?context=3
[1]: https://github.com/bitcoin/bitcoin/issues/6578
[2]: 
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-August/010535.html
[3]: https://jonasnick.github.io/slides/2016-zurich-meetup.pdf
[4]: https://eprint.iacr.org/2014/763.pdf
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Reply via email to