let me quickly elaborate the question. The structure of a BTC transaction script looks somewhat like the following example
… where the part
… specifies the two output addresses that the money from the UTXO(s) is split and sent to.
Often, as the sum of one or several UTXO’s does not perfectly equal the amount that the sender wants to transfer, as last (?) output address he references his own address, in order to receive back his remaining cash.
My question is, is it somehow ONLY from the transaction script structure as above determinable which of the referenced output addresses correspond to the(se) “cashback address(es)”?
I have a few thoughts on this myself:
Of course, the sender might have several addresses / accounts, anyways, then, we have no chance at figuring out whether he is sending money back to himself or not.
Furthermore, I suspect the answer to my question is no, as otherwise, it could be possible to identify one input address of the regarded transaction as the output address that corresponds to the cashback part. This, I guess is exactly intended not to happen, as we want to keep the anonymity of the sender.
Lastly, I am aware that it is possible to identify cashback transactions when you look at the entire history of the blockchain and keep track of which address “holds” what amount of BTC / UTXO’s right now. However, in order to do so, you would need to store all the addresses named in previous transactions throughout time, which is quite computationally costly, as you proceed through time in the blockchain.
Thus, I am asking for a way to quickly identify such cashback transactions. (We can for instance always easily identify the coinbase transaction in a block from the structure of the code.)
That’s about it. I am looking forward to your comments, hopefully someone can shed light on this 🙂