The first figure in the original paper of Satoshi is a diagram of transactions. This diagram seems to indicate that the transaction data is hashed before the sender's signature is appended. Why not just hash the entire transaction, including the signature, to produce all-encompassing transaction hash?

Update: I want to highlight the comment by @David Schwartz on the accepted answer.

1 Answer 1


Because it would not have a function. The hash listed in the picture of the original whitepaper is just to make the signature shorter (and possibly the process of creating it faster) without losing security, its only function is the authentication of a transaction, it is not used for anything else (or even stored).

To clarify, this is the diagram mentioned in the question:

Transaction in the Satoshi whitepaper

  • You seem to be implying that the original transaction (unencrypted) is not stored in the block chain. If it were, one could plainly view all details of the transaction, including the signature and the message that it signs ...
    – zkurtz
    Apr 15, 2014 at 17:37
  • 1
    Hm, I think I understood your question wrong, I'll edit the answer.
    – Jori
    Apr 15, 2014 at 18:06
  • I'm marking this as the solution because it seems reasonable. I would still be interested in seeing some references to support your claim. If I understand correctly, you are claiming that the sole purpose of that hash is to shorten (and/or speed up) the signature. (I assume then that these hashes have nothing to do with the tree of hashes that leads up to the Merkle root.)
    – zkurtz
    Apr 15, 2014 at 20:38
  • That is correct. Take PGP (or GPG) for example, you almost never see someone signing an entire message, because this would add a considerably long overhead. Instead a hash of the data is constructed and signed to prove that the data indeed originated from some party, because with a secure hashing algorithm it is almost impossible to find an other piece of data that results in the same hash. Merkle roots have to with how transactions are represented inside blocks.
    – Jori
    Apr 15, 2014 at 21:41
  • 4
    The algorithms used can't sign anything that exceeds the curve size. So you must hash before signing. Apr 16, 2014 at 17:08

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.