Especially, when you can improve all 3 of those situations by simply generating a new address for EVERY transaction? A business wouldn't re-use an invoice number, why would you re-use a bitcoin address?
I don't want to diss you but are you from another planet?
The invoice number? A Bitcoin address is more like a customer ID, which remains fixed!
Nonsense. What DannyHamilton described is not only a well-known best practice, but also the actual and longstanding current practice of numerous Bitcoin businesses, both large and small. Assigning one address per transaction is also the only practical, reliable means of tracking payments and matching payments to transactions; thus, a Bitcoin address works out perfectly as a
quasi invoice numberor even an actual invoice number.
I emphasize that this is the common and customary usage. Forget about discussing your qualifications as a developer: If you have not seen this as a
customer, such reveals that you have rarely if ever used Bitcoin at all.
It would be much more convenient for businesses or individuals, to provide their counterparties with fixed addresses for further use.
Otherwise a new one would have to be created everytime someone sends you a payment. What a nuisance! And imagine this is done automatically, and a partial payment is received: CHAOS, CONFUSION and MAYHEM!
Years of the real-world experience of actual businesses flatly contradict your supposition.
What happens if a partial payment is received? Whatever happens according to the payees usual handling of partly-paid invoicesthats what. Using one address per transaction makes it
easier to track and account for partial payments.
For privacy you would need a new private key (HD) every time anyways.
With your reference to (HD), you are confusing the BIP 32 seed with a Bitcoin private key. From a single seed, a
BIP 32 HD wallet can generate up to 2,147,483,648 hardened or non-hardened private-key/address pairs per derivation path.
Thats over two billion addresses.At the current rate of transactions per day, it would take about 2535 years for the entire Bitcoin network to process 2,147,483,648 transactions. If you had somehow anachronistically created an HD wallet when Bitcoin was first released in January 2009, and every Bitcoin transaction ever made had been spent to you with a new address for each one, then you would have still only used a fraction of your addresses.
Still worried about running out of addresses in your HD wallet?
But if you want privacy, BTC is not the right crypto.
So, if Bitcoin does not provide a privacy suit of armour without special measures, you recommend walking around naked? (Moreover, given some effort and skill, Bitcoin can be plenty private.)
I guess a company with good blockchain knowledge could try and create 1 private key per customer, then issuing a different address on that key for each invoice. But for the average company/individual that is way too much overhead.
So yes I do think address re-use should be fully supported.
For a lightweight solution, Electrum provides
easy merchant features which even the dullest developer should be able to get working and integrate with a shopcart and accounting backend. It automatically provides a new address for each payment request, and serves up fancy auto-generated payment request pages with QR codes. For security, it works fine with a cold wallet (no webserver access to funds). If you can set up a webserver and a basic shopcart package, then you are capable of doing this, too.
Making this work with Core is not exactly rocket science, either.