# BUILDING BLOCKS AND CRYPTOGRAPHIC TOOLS

The Bitcoin protocol limits its use of cryptographic tools to cryptographic hash functions such as SHA256 and RIPEMD160, Merkle trees, and the Elliptic Curve Digital Signature Algorithm (ECDSA).

## Cryptographic Hash Functions

Hash functions map an arbitrary long input byte sequence to a fixed size output— commonly referred to as a digest—effectively fingerprinting the input sequence. Cryptographic hash functions refer to hash functions that exhibit two essential properties: one-wayness, and collision-resistance. Let *H :* {0,1}* ^ {0,1}^{n }refer to a cryptographic hash function. Informally, the one-way property implies that given H(x), it is (computationally) infeasible to derive *x.* On the other hand, the collision resistance property implies that it is computationally infeasible to find x = y such that H(x) = H*(y).*

The collusion-resistance property of cryptographic hash functions constitutes important security pillars in Bitcoin. For example, the PoW in Bitcoin is mainly based on computing hashes, and the id of a transaction corresponds to the hash of the transaction. Hash functions are a base component of different types of data structures used in Bitcoin (e.g., Merkle trees).