Hash Function

There are many instances of cryptographic hash functions, but all cryptographic hash functions share a few key properties.

  • All cryptographic hash functions take an input and produce an output (called a hash) of a fixed length. This length varies based on the precise function used.

  • The output of a cryptographic hash function is deterministic. For a given input, the output will always be exactly the same.

  • A cryptographic hash function is a one-way function. An output can easily be calculated from an input. However, there is no known way of determining the input from a given output.

  • The output is random and unpredictable. There is no known method for targeting a specific output and calculating the proper input. Nor can a relationship be drawn between a series of inputs and their outputs. For example, if an input of 100 characters is changed by a single character, the new output bears no resemblance to the old output.

These properties make cryptographic hash functions very useful for Bitcoin. Hashing is random and uncontrollable, ensuring Bitcoin mining is a fair competition. Hashing a public key or a script to obtain an address provides superior security, privacy, and convenience for users. Hashing transactions and blocks provides a simple way of creating universally unique IDs for both transactions and blocks. Finally, Merkle Trees use hashing to create reliable, immutable summaries of all transactions in a block, making mining and block verification significantly more efficient.