I already thought about building this into Electrum.
The drawback is that you need to know the ID of the payment (your invoice), and to use exactly the same ID on both ends.
if there is some confusion there, I imagine that it some disputes can arise between sender and receiver.
I'll have to read up on type 2 deterministic wallets. I don't think I'm discovering something new. I question why we need all these addresses and private keys in the first place. All you need is one private key per entity. Create a new address? Just sha(description) or sha(timestamp). Want my SMTP to send your email? sha(message) to each recipient so they can recover coins.
I agree. as I said, I considered doing this within Electrum. I guess I will add it at some point.
Two obstacles have prevented me from doing it:
- lack of privacy. if you give out your master public key, anyone can see if you received payment at a given label.
- it is not as idiot-proof as Bitcoin addresses. As I said above, if the label is misspelled or incorrectly transmitted, the receiver might get very angry.
the second point could be mitigated if the address generation from public key is a webservice.
that service would keep a log of all the addresses generated, and it would be possible to find a missing payment.