So lets say Alice sends XMR to Bob and maybe even uses a payment ID so that Bob knows that it was Alice. Can Bob send Alice XMR in the future with only the information in the original transaction or does Bob need to get Alices public key?
2 Answers
There is no way for Bob to know which of the one-time public keys was actually spent, which isn't even relevant. Even if there were a way to know which public key she spent, he still wouldn't know the address that controls the spent key; so, no, he would have to ask Alice for her address (public key).
Bob needs Alice's wallet address.
Bob knows only that his funds came from 1 of the one-time public keys that made the ring signature but can't tell which one. Even if Bob knew, Monero uses one-time public keys so it can't be re-used. Sending to any used public key would effectively burn the funds.
Payment ID helps to identify the sender (like an invoice, really), but doesn't identify the originating wallet. Someone else could have paid on Bob's behalf and Alice wouldn't have a clue.
-
Thanks! That was what I suspected. Im curious what you mean by burning funds...like does the transaction still get verified but it goes to an output that no one has a spend key for??? Also, this is probably answered somewhere else, but if Monero uses one-time pub keys, do you have to ask Alice for a new public key every time you want to pay her?– StudntCommented Apr 3, 2017 at 22:17
-
The receiving wallet has that output's key. However, you can't sign twice with the same output because it would be rejected as a double-spend. Doesn't matter if there's 2 of them with the same pubkey on the blockchain; only 1 could be spent. You don't have to ask Alice, you use her address and add random data to the mix to create a brand new unique output which only she can find and spend. monero.stackexchange.com/questions/1500/… Commented Apr 4, 2017 at 5:24