It's great to see progress in this area.

Why client-side filtering is not an option for light wallets? Because
of lack of support for unconfirmed tx? Any other problem on top of
that one?

Adding here some related links:
https://groups.google.com/forum/#!msg/bitcoinj/Ys13qkTwcNg/9qxnhwnkeoIJ
https://eprint.iacr.org/2014/763.pdf
http://jonasnick.github.io/blog/2015/02/12/privacy-in-bitcoinj/

I assume you are sending a similar email to bitcoin-dev mailing list.
Looking forward to seeing what they will say.



On Tue, Apr 23, 2019 at 8:43 AM Andreas Schildbach
<andr...@schildbach.de> wrote:
>
> Since client-side filtering (BIP157/158) isn't really an option for
> light wallets, I'm thinking about how to improve server-side connection
> filtering (BIP37 aka "bloom filters").
>
> I propose the following changes to BIP37 (via a new BIP of course):
>
> ---
>
> * A new matching rule
>
> For each tx, each output scriptPubKey is tested against the filter. For
> each tx except coinbase, each scriptPubKey spent by any input is tested
> against the filter. If any of those matches, the tx or block is
> considered matching. I think the old matching rules could be removed at
> some point.
>
> In my opinion, this would fix the privacy issue that wallets have to add
> two items per address to the filter, which has opened an easy way for an
> attacker to distinguish false positives from true positives. A wallet
> would now only add one item per address: the scriptPubKey the address
> represents.
>
> I believe this would also get rid of any need to change the filter
> immediately upon match via the awkward BLOOM_UPDATE_* mechanism. This is
> because wallets can pre-generate as many addresses as they want. E.g.
> bitcoinj pre-generates 133 addresses per chain, it will take a long time
> to consume those. If they're all consumed, a wallet would disconnect and
> connect to a different peer.
>
> This would also open up using client-side filtering to other uses,
> because entirely scriptPubKeys are matched rather than just pubKeys or
> pubKey hashes.
>
> * "filterload" can only be used once per connection; removal of
> "filteradd" and "filterclear"
>
> If a filter needs to change, better disconnect and connect to a
> different peer. If an attacker learns two different filters of the same
> wallet, s/he could derive addresses by correlating the two filters.
>
> * A full node may reject a filter at any time
>
> A full node would do this to prevent overload, e.g. in case a filter
> matches too many items. It would send a BIP61 reject message and disconnect.
>
> * Optional: A different filter algorithm
>
> Perhaps it is in the interest of Bitcoin Core to maintain just one
> filter algorithm, not two. If at any point they merge BIP157/158, we
> could perhaps adopt the algorithm from there (Golomb-Rice).
>
> * Related: Connection opportunistic encryption
>
> See https://gist.github.com/jonasschnelli/c530ea8421b8d0e80c51486325587c52
>
> ---
>
> I think this proposal is a significant improvement to privacy. It would
> also ultimately make the implementations simpler on both sides, as we
> drop all the old mechanisms. It would however not fix the issue that
> full nodes can lie to clients by omission in the case of filtered blocks.
>
> Ideas? Comments?
>
> --
> You received this message because you are subscribed to the Google Groups 
> "bitcoinj" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to bitcoinj+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.



--
Oscar Guindzberg

-- 
You received this message because you are subscribed to the Google Groups 
"bitcoinj" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to bitcoinj+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to