There is info here about disposable addresses https://github.com/monero-project/monero/pull/1345 and looks like it will be going into testing soon but how do they work really? If I use a disposable address will I need back up those keys or will my main wallet be able to recover all my disposable addresses with my original wallet seed?
In the CryptoNote protocol, wallet addresses never appear in the blockchain, protecting users' privacy from blockchain analysis. However, wallet addresses are inevitably known to senders and can be kept by them locally, which may become privacy concerns. Consider a typical example: a user buys Monero at an account-less exchange service more than once. If the user reuses the same wallet address, the exchange would know the total amount of Monero transferred to that address, which is generally not desirable for the user. A naive solution to this problem is to create a temporary wallet for each fund receipt, which is not only tedious and error-prone, but also vulnerable to temporal association analysis.
In this research bulletin, we propose a new scheme where a single wallet can generate a one-time address for each fund receipt by making use of the payment ID. Two kinds of such one-time addresses are proposed: one is in the current standard address format with a 256bit payment ID attached separately, which is useful in that the sender's wallet software does not need to be upgraded. The other one uses a new address format where a 64bit payment ID is integrated into the address, which is easy to use but requires upgrading the sender's wallet software. The scheme is already implemented and confirmed to work.
In short, it works like this:
- Receiving wallet generates a new set of keys and a payment ID. The newly generated set of keys is deterministic and it's generated from the root keys and the payment ID. The root keys are the keys of your standard Monero address.
- A disposable address is derived from those new, disposable keys
- The sender pays to the disposable address as normal, but he must attach the payment ID from 1. The integrated format proposed makes this easy.
- The receiving wallet sees the payment ID, recreates the matching disposable keys and and checks if any of the outputs in the transaction belongs to it.
- If yes, you can spend this output as usual. The wallet can combine it with others from your wallet, as it makes no difference. All outputs are created the same, but here we have a bit different scheme on how to retrieve the private key of an output.
It's important to note that it's sensitive to correct implementation of payment ID. If the sender omits payment ID, the recipient has no way of knowing which disposable key to generate. He could recover the funds by trying with all previously issued payment IDs, but it could take a long time. If the sender would provide a TXID, it would make it easier to recover the funds - in case of some dispute or accident.
Also, a new integrated format is required because the payment ID must remain plain-text, while the existing integrated format uses stealth payment ID which encrypts it so it's not fit for purpose.
Re-use should be discouraged because 2 TX-es sent to the same integrated address could then be linked together with high probability. Although, there's still a slight plausible deniability because anyone could be re-using payment IDs already found on the blockchain, only it's not likely.
Also, for the record, here's the history of this development.
If I use a disposable address will I need back up those keys or will my main wallet be able to recover all my disposable addresses with my original wallet seed?
No. Your main wallet will be able to recover all of them because the information required is actually "saved" in the payment ID of the transaction sent to the disposable address. Only in case of faulty implementation where the sender doesn't specify the PID would you need to recover the funds "manually" and send to yourself so you could access them later.