Does using a new addr for each rx make sense?


#1

Hi,

I’m playing with a website design & in need of inspiration.

Does it make sense to give customers a new address for each payment they make? I’d end up with many addresses containing small amounts but privacy would be better.

An alternative is for each ‘salesman client’ to have its own address to collect payments, but it seems harder to link notifications/confirmations to individual transactions.

Whats the preferred method ?


#2

For shielded addresses, using one address per payment will cause significant performance issues (as every block in the chain gets scanned with every address in the wallet). There is no privacy problem with reusing shielded addresses, as they are not ever visible in the block chain. Two customers could figure out they are paying the same person by comparing addresses, but that’s about it.

For transparent addresses, using one address per payment confers no real privacy benefit, because the transaction graph is still visible, and various clustering algorithms have been developed (for Bitcoin, which can be used on Zcash) for identifying transparent addresses in the same wallet. There is a minor security benefit of using one address per payment in that the public key for spending is not revealed in the address, so you get protection against an adversary that can break the public-key cryptography (so either a quantum adversary, or someone who knows a flaw in secp256k1).


#3

Thanks! I hadn’t thought about performance.

This has to run on the feeblest machine I’ve seen in a long time so I’ll reuse addresses & make my code to catch notifications/confirmations a bit smarter.

Edit: Seems the best solution is to put an ‘order number’ in the memo field, hopefully the droid reference wallet will be able to read that from a qrcode.

For taddrs I’ll serve a new payment address each time as if it was BTC. There’s zero privacy anyway so not going to worry about that.