Why are transactions separate in a block?

4

I'm just getting started looking at bitcoin and it's protocol, so this might be an incredibly stupid question. Why does bitcoin have a separate concept of transactions? Wouldn't it be better for each block to have a bunch of inputs and a bunch of outputs without separating them as individual transactions? This way it's more anonymous and private, since anyone trying to track an public key is stopped since their transactions are mixed with hundreds of others?

I guess technically, you could do that right now, by making one transaction with hundreds of inputs and outputs and mining that. I'm not asking why transactions are propagated by the nodes, I'm asking why are they stored separately in the final blocks?

seefour

Posted 2015-07-27T10:26:55.533

Reputation: 41

Answers

3

An interesting idea, but I don't think it technically works out.

  1. Transactions include a digital signature of the set of inputs and outputs in a transaction. This signature could not be validated if the inputs and outputs where not linked.
  2. Since signatures wouldn't be tied to specific outputs/inputs, what would stop a greedy miner from including your inputs but not your outputs?
  3. Outputs can be created and spent in the same block. So you can't list all inputs, and then list all outputs, because some of those inputs depends on those outputs being known first. (There may be a work around for this, but it complicates things)

morsecoder

Posted 2015-07-27T10:26:55.533

Reputation: 12 624

1

Because when someone creates a transaction, they don't know what other transactions will be included in the same block... and it is the transactions that are signed by the sender, not the whole block.

There is a mechanism in between, namely CoinJoin, where multiple transaction creators/senders collaborate to create a joint transaction with multiple inputs and outouts from each of the participants, to increase privacy.

Pieter Wuille

Posted 2015-07-27T10:26:55.533

Reputation: 54 032