2018-11-26 05:02:39
ok, so I have a plan for the light client privacy question
Fireduck
2018-11-26 05:02:49
so client gets notice that there is a new block
Fireduck
2018-11-26 05:03:00
it asks for the top layers of utxo
Fireduck
2018-11-26 05:03:36
the intermediate hash nodes that are different from what the client already knows about and might contain addresses that are interesting to the client, the client will ask about
Fireduck
2018-11-26 05:04:03
the client should have a set of actual address, consistent fake addresses and dynamic fake addresses
Fireduck
2018-11-26 05:04:19
the consistent fake addresses make it hard to see what a client is really interested in
Fireduck
2018-11-26 05:04:36
the dynamic fake addresses make it harder to fingerprint a client based on what they are asking about
Fireduck
2018-11-26 05:04:57
the client will try to get to the leaf nodes in big chunks to further disguise what they are into
Fireduck
2018-11-26 05:05:29
for example, if they address they are interested is 0xaabbccddeeff the client will ask for 0xaabbcc
Fireduck
2018-11-26 05:05:50
it might have to do an additional question if there are too many things under that, but it depends on how full the tree is
Fireduck
2018-11-26 05:05:57
i haven't worked out the math yet
Fireduck
2018-11-26 05:06:17
probably has the same problems as the bloomfilter method that everyone hates now, but certainly better than nothing
Fireduck
2018-11-26 05:06:37
it is also quite efficient, since the client can cache any intermediate hash nodes that it sees
Fireduck
2018-11-26 05:06:53
since the things under them can never change
Fireduck
2018-11-26 10:08:07
so basically, the client does not want the node to know which address its asking for. To obfuscate things a little, it tells the node: "Its something like this". Then the node returns results for all addresses that are possible
mjay
2018-11-26 10:10:31
As more addresses are in use, the client has to ask more precise. But the client does not know how precise. If it asks the node, it could tell the client "give me first 8 bytes", which reveals the address, although 2 bytes would have been sufficient.
mjay
2018-11-26 10:13:16
What about this: The light client can also act as a node to other light clients. If it gets asked, it just relays the request to its node. This way the node does not know where the request originated from
mjay
2018-11-26 14:46:37
yeah, think of it as asking for information on all addresses that start with X and if that returns too many results it might have to ask again with a slightly closer thing, but if that is the case it means there is still a bunch of addresses that it could be
Fireduck
2018-11-26 14:47:07
relaying other requests is an interesting idea
Fireduck
2018-11-26 14:47:15
just throws more mud
Fireduck
2018-11-26 15:35:33
and even if there are only a few in the prefix, there is a good change the client isn't even interested in any of those
Fireduck
2018-11-26 15:35:40
and it is an address that has never been used
Fireduck
2018-11-26 15:41:15
but one of these addresses is a real, used one?
mjay
2018-11-26 16:02:21
any address in a utxo query return is real
Fireduck
2018-11-26 16:02:33
but the client may be interested in an address that has never been used
Fireduck
2018-11-26 16:02:36
can never be sure
Fireduck
2018-11-26 16:02:51
well, until the client sends a signed transaction
Fireduck
2018-11-26 16:07:35
is it even worth the effort?
mjay
2018-11-26 16:23:19
Probably
Fireduck
2018-11-26 16:23:41
Just effort for me. Should be transparent after that.
Fireduck