Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add listaddressgroupings RPC method from Bitcoin Core #5556

Open
JeremyRand opened this issue Aug 11, 2019 · 5 comments
Open

Add listaddressgroupings RPC method from Bitcoin Core #5556

JeremyRand opened this issue Aug 11, 2019 · 5 comments
Labels
CLI/RPC ▶ enhancement ✨ topic-wallet 👛 related to wallet.py, or maybe address_synchronizer.py/coinchooser.py

Comments

@JeremyRand
Copy link
Contributor

It would be useful to add Bitcoin Core's listaddressgroupings RPC call to Electrum. This would improve the ability of users to evaluate their anonymity.

@ecdsa
Copy link
Member

ecdsa commented Aug 11, 2019

A pull request would be welcome.
I think the coin chooser could use this.

@JeremyRand
Copy link
Contributor Author

One interesting subtlety of how listaddressgroupings applies to Electrum is that Electrum contains some optional features that try to obfuscate the change address; AFAIK Bitcoin Core doesn't have any such functionality. So it might be useful to have an optional parameter in Electrum's implementation that controls to what extent obfuscated change addresses are considered to have been "made public". (This isn't a requirement, just a "nice to have" bonus feature.)

@SomberNight SomberNight added topic-wallet 👛 related to wallet.py, or maybe address_synchronizer.py/coinchooser.py enhancement ✨ CLI/RPC ▶ labels Aug 11, 2019
@SomberNight
Copy link
Member

SomberNight commented Aug 11, 2019

So this would just group addresses by "Common Input ownership Heuristic"?


Consider the following scenario:
Addresses A and D are in wallet. Addresses B and C are external (not in wallet) addresses.
There is a transaction T1 with inputs from A and B.
There is another transaction T2 with inputs from B and C.
Another transaction T3 spends from C and D.

Do you now want to group A and D together? (I assume yes; just wanted to point out it might not be trivial to implement. Note that transaction T2 is unrelated to the wallet.)

@JeremyRand
Copy link
Contributor Author

Do you now want to group A and D together?

Hmm, what does Bitcoin Core do in this case? If Bitcoin Core doesn't group A and D, then I'd be fine with having Electrum not do so either (although maybe in that case a bug should be filed against Bitcoin Core).

@JeremyRand
Copy link
Contributor Author

Do you now want to group A and D together?

Relatedly, one intended use case for listaddressgroupings is to figure out what information to hide from the server, so it's probably a bad thing for this method to produce network traffic to the server. Which means downloading transactions that aren't already part of the wallet is probably not doable unless it's done very very carefully (e.g. over a separate server TCP connection and over a separate Tor circuit).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLI/RPC ▶ enhancement ✨ topic-wallet 👛 related to wallet.py, or maybe address_synchronizer.py/coinchooser.py
Projects
None yet
Development

No branches or pull requests

3 participants