Is it not possible for users to simply sign "send transaction" messages into the blockchain with a value field and an address field, and have the validators do the work of looking through the blockchain and adding up all of the send transactions to validate that the coins actually exist? I am hypothetically assuming coinbase transactions still exist and simply list outputs to recipient addresses, thus crediting these addresses with new coins.

Is a transaction id simply a tool to help achieve scalability? Why do transactions have to reference previous inputs?


1 Answer 1


The reason you have to explicitly state which previous outputs should be claimed by a transaction is simply that you do not want to give users on the network a blank cheque. Say you wanted to transfer 1 bitcoin to from any output available to address A to address B. You would then create a transaction that looks like this:

amount=1|to=B|sign(amount=1|to=B, sign_with=A)

This transaction would be broadcast to the network and result in the desired result. The main problem is that if you have more than the 1 bitcoin you'd like to spend, there is nothing to prevent the owner of address B to create more transactions that give him all of your bitcoins.

The second problem arises with the change from that transaction, if you do not have outputs that sum exactly to 1 bitcoin, you implicitly create a new output for the change. This brings us to the last problem: picking outputs to spend may not always produce the same outcome. If there are multiple combinations that the new output to B can be constructed then nodes in the network would have to agree on which outputs to spend, which again would require transaction IDs.

Having the owner of the coins specify which ones to spend simplifies all these problems.

  • One way to prevent creation of more transactions would be to add a constraint for unique [source address + tx signature] to blockchain transactions Jun 9, 2018 at 18:07
  • That would create a trivial way to DoS the system...
    – cdecker
    Jun 10, 2018 at 13:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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