Consider the following transaction:


Each of the output addresses has never before been used, and there is only one input address. Why does blockchain.info guess that 0.7695 BTC has been transacted with 3.7216 BTC as change rather than the reverse (see "Estimated BTC Transacted")? Does it just pick the second address as the change address?

In other cases, I am able to guess similarly to blockchain.info, for example:

(1) If multiple input addresses are used, the change address should not be greater than the lowest input address (unless, of course, this is being purposely obfuscated).

(2) If both of the output addresses have been used before, they may run a degrees-of-separation query to try to connect one of the output addresses more closely to the input addresses, more closely identifying it with the input addresses and therefore as the change address.

(3) If only one of the output addresses has been used before, it is more likely to be the change address according to the heuristic in (2) because by definition the used address is more closely "connected" than an address that has never been used.

But what heuristic could be used if each of the output address is new? The spending pattern of the input address? Randomness? Thoughts?

You can see how this question affects views of the total/daily volume on Bitcoin in aggregate by comparing/contrasting both of the "Estimated Transaction Volume" charts available on http://www.blockchain.info/charts. They claim the second chart adjusts for change, but provide no details about the algorithm.

  • They don't know. They don't claim to know, either. That's just the order that it shows up in the blockchain, which is randomized. – Nick ODell Jul 10 '13 at 21:21
  • They seem to use some heuristics, as the above examples I showed. I'm wondering if they have another heuristic that is more subtle, or perhaps some public information detailing whatever algorithm they do or do not use. – Yaacov Jul 12 '13 at 14:56
  • Ah, you're talking about the "Estimated BTC transacted" part, right? – Nick ODell Jul 12 '13 at 16:49
  • Yup. I edited the question above to add a bit more detail. – Yaacov Jul 24 '13 at 20:08

For transactions with one input it is hard to guess what is the change and what is the real payment. However because they may be have statistics so they can may be guess that for a ~4 BTC input there are 70% of probability that the change is the bigger output and the money spent the smaller one when both output addresses are new.

Now if you have a transaction with several inputs (Like ou have already explained in your question) it is much more easier to guess. If you have :

As input
1Pi87D6NUPB5BxcuowYN4Lj3WLCSFGsuLN (0.24379822 BTC)
1PgBMDggd7GGCifDd1881vdvNe8pkn5BWk (0.08787591 BTC)

And as output
1B6tvnE3oP3mwoA4RMrYXWVup4Z73G6bDw -  0.05377413 BTC
1DswmdznL6exZzN6akJpsPUc4ZWRZo9JQc - 0.2778 BTC

In this case you can be pretty sure that the spent address is '1DswmdznL6exZzN6akJpsPUc4ZWRZo9JQc - 0.2778 BTC' and the change '1B6tvnE3oP3mwoA4RMrYXWVup4Z73G6bDw - 0.05377413 BTC'.

Because otherwise there would be only one input.

  • 3
    this is not necessarily the case, when putting a transaction together i am free to choose any inputs and direct them to any output addresses as i choose. Perhaps wallet software wouldn't do that, but it can be done manually (via createrawtransaction). – Albert s Mar 18 '16 at 22:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.