0

I know this is a BCH address, but it's the best example I could find. The same concept holds for BTC, so understanding what's going on is relevant.

https://explorer.bitcoin.com/bch/tx/5d0af59f43f8e8388839518243c743279e7c3dd526385fcc5bbcd907cd61bd2a

What one sees is one transactions with two inputs and two outputs.

  1. How does it happen that there are multiple inputs/outputs in a transaction?
  2. How did 12WsyKG89bxTGWV1iguxPWh6UX2ye1X8hD end up with 208.448 and 18Q43boBRU8Sk57SjSfjgFbjvXhBccBrKq with 18.816 - where in that transactional data does it specify which address gets what from the inputs?
EvilJordan
  • 101
  • 1

1 Answers1

2
  • Multiple outputs are usual, just like e-mail.

  • If one of your friends has sent you 5 BTC, and another friend has sent you 2 BTC, you should combine and spend them if you need to buy something for less than 7 BTC and greater than 5 BTC.

(By the way, do you know what a change is?)

  • There is no "This output gets its value from this input" All input values are summed, then spent.
MCCCS
  • 10,206
  • 5
  • 27
  • 56
  • Thank you for the link to Change. I was aware of it, but the link provided a much better explanation.

    If all inputs are summed, do we assume that all inputs are from the same account holder/entity?

    – EvilJordan Mar 18 '18 at 07:18
  • @EvilJordan No, take a look at SIGHASH_SINGLE. It's how CoinJoin works. For more information: https://en.bitcoin.it/wiki/CoinJoin – MCCCS Mar 18 '18 at 07:37
  • Thanks for walking me through this. I thought I understood how this worked, but it's suddenly become a lot more complex. So, from what I gather, if Bob has 2 BTC and wants to send Alice 1 BTC, somehow Tom, with his 1 BTC he wants to go to Jane can also get in the mix, and a transaction will show two inputs (Bob:2, Tom:1) and three outputs (Alice:1,Bob(change):1,Jane:1). I guess my question is how did Tom's transaction to Jane end up in the mix? Is the software doing that to save on bandwidth? – EvilJordan Mar 18 '18 at 07:57
  • @EvilJordan Oops, CoinJoin uses SIGHASH_ALL. If you're looking for how CoinJoin works, here's the answer. https://bitcoin.stackexchange.com/a/57276/38618 – MCCCS Mar 18 '18 at 08:33
  • Did you initially bring up CoinJoin because this particular transaction I referenced is using it? Seems like a very niche service. – EvilJordan Mar 18 '18 at 17:46