For the sake of completeness, a non-exhaustive list of technical terms specific to the bitcoin literature used throughout the book is included below.

Blockchain

A blockchain is, as its name suggests, a chain of blocks. The blocks are “chained” by means of a hash pointer that works as follows: block 2 includes the hash of block 1, block 3 includes the hash of block 2, and so on. This chaining means that changing anything in a block requires recalculating all subsequent blocks as well. This operation would be possible if it were only necessary to recalculate the hash of the block and place the new hash in the next block, but in bitcoin this is not sufficient. Each block requires a proof of work --- that is, the appropriate nonce for the hash of the block header itself to meet the difficulty target.

Fork

As it relates to bitcoin, a fork is a change to the Consensus Rules. The term is used in its English form throughout the book. The word “bifurcation” is misleading: new software can constitute a fork of bitcoin without causing any split in the blockchain. Furthermore, the compound terms hard fork and soft fork would become unwieldy if rendered as “hard bifurcation” and “soft bifurcation”.

Hash Function

A hash function is a function that takes any-length input data and produces a fixed-length output, which we call a hash, with the following properties:

  • It is deterministic: the same input always produces the same output.

  • It appears random. Any minimal change in the input produces a completely different and entirely unpredictable output.

  • It is fast to compute.

  • It is very difficult to reverse. The input cannot be recovered from the output.

  • It is collision-resistant. It is very hard to find two different inputs that produce the same output.

A hash is the result of applying a hash function to input data. It serves as a kind of “digital fingerprint” that uniquely identifies that set of input data.

An example of a hash function is SHA-1. Examples:

SHA-1(Satoshi) = f8454b4c0f1df46fa76ac38cf5e744767fe47908

SHA-1(satoshi) = df60cdc9182e4ce7d68b6baaaf2312f27a7a025c

Bitcoin uses SHA-256, which belongs to the same family of hash functions (Secure Hash Algorithm) but produces a 256-bit output instead of SHA-1’s 160 bits.

Halving

The halving is a scheduled event programmed into the software that occurs every 210000 blocks, at which point the subsidy miners receive for validating blocks (the new bitcoin created in each block) is cut in half. From bitcoin’s inception through 2025, four halvings have already occurred. The subsidy has gone from the original 50 bitcoin to 25 after the first halving, to 12.5 after the second, and is currently 3.125 after the fourth. A total of 32 halvings will take place, at which point the subsidy will drop to zero permanently and no new bitcoin will ever be issued. It is the effect of the halving that limits bitcoin’s total monetary supply to 21 million1.

Hard Fork

A hard fork is a change to the Consensus Rules in which the new rules are more permissive than the previous ones. That is, in a hard fork, nodes running the updated software would accept some blocks that nodes running the old software would consider invalid. When a block appears that is valid under the new software but invalid under the old one, if some miners choose to continue mining the chain containing that block, the network splits in two and a new coin emerges. This is what happened in 2017 with Bitcoin Cash: when a block larger than 1 MB appeared, nodes updated to the new software considered it valid while the rest considered it invalid.

Hashrate

Hashrate is the speed at which a machine or a network performs hashes. It is measured in hashes per second or its multiples: terahashes per second (Th/s) for mining equipment and exahashes per second (Eh/s) for the bitcoin network.

Nonce

A nonce is an arbitrary number used only once, typically to ensure that something (such as a hash) is unique or meets certain properties.

In bitcoin, the nonce is a field within the block header. It is used in the mining process, where miners try to find a hash of the block that falls below a given “target” or difficulty threshold.

Peer to Peer

According to the Oxford dictionary, the term “peer” means a person of the same age or social standing. In software, however, neither age nor social standing applies. Many communication protocols use a “Client/Server” architecture in which “clients” send requests to a “Server”, which responds to them. This is how the http protocol works, for example, through which our browser (the client software) accesses the servers of Google, Facebook, the New York Times, or our bank. Bitcoin does not follow this architecture where some nodes are clients and others are servers; instead, all nodes in the bitcoin network are equal. This architecture, also used in networks such as BitTorrent, is called “peer to peer”, often abbreviated as “p2p”.

Consensus Rules

Satoshi achieved consensus among a network of equal nodes on which transactions and blocks are valid and which blockchain is the “true” one. This consensus among peers emerges because each node implements the same set of rules. The set of rules that defines which transactions and blocks are valid and which are not constitutes the Consensus Rules.

The maximum block size is one example of a consensus rule. A block whose size exceeds this limit will not be accepted by the network, even if it carries sufficient proof of work. Another example is that each block must include a proof of work: the hash of the block header must produce a value below that determined by the difficulty target. If the block’s hash does not meet this requirement, the block is invalid and will be discarded by all nodes. A third example is the maximum amount of bitcoin that can be created in a block: this limit is 50 for the first 210000 blocks, and every 210000 blocks it is halved. If a miner creates a block in which more bitcoin are issued than permitted, that block is invalid and nodes will discard it.

Not all parameters in the software are part of the consensus rules. For example, the maximum number of nodes a node can connect to is not part of consensus. One user can limit their node to five connections and another to ten without affecting consensus in any way. Consensus Rules make it possible for the network to function without requiring any trust between its users. They are very important in bitcoin because they define what bitcoin is. A change to the consensus rules implies a change to bitcoin.

Soft Fork

A soft fork is a change to the Consensus Rules in which the new set of rules is more restrictive than the previous set. That is, updated nodes would consider invalid some blocks that the old software considered valid. In bitcoin, a soft fork is regarded as more acceptable than a hard fork because it can be deployed without forcing users to upgrade and without risking a chain split. It is seen as more respectful of each user’s sovereignty. If a soft fork is activated with the support of a large majority of miners, even unupdated nodes would remain on the same chain, since the new chain follows the more restrictive rules and all its blocks are also valid under the old rules. For example, a reduction of the maximum block size to 300 kB would be a soft fork. If a large majority of miners began mining with the updated software and the soft fork were activated, new blocks would thereafter be at most 300 kB. These blocks would be valid for both updated and unupdated nodes, and all would remain on the same network sharing the same blockchain. An unupdated miner who mined a 1 MB block would fail to get it added to the chain, since the majority of miners applying the new rules would consider the 1 MB block invalid and extend only the chain with blocks of 300 kB or smaller. Unupdated nodes, even if they saw the larger block as valid by their own rules, would follow the chain of updated nodes, as it would represent the chain with the most proof of work.

A soft fork can also trigger a chain split, but this cannot happen if the majority of miners support it. For this reason, developers typically include code requiring that the activation of a given soft fork take place only after signaling from a large majority (95%) of the hashrate.

UTXO

UTXO stands for Unspent Transaction Output. In bitcoin, transactions are composed of inputs and outputs. Each transaction consumes some unspent outputs (UTXOs) and creates new unspent outputs (new UTXOs). At any given moment, the set of UTXOs represents all coins that have not yet been spent. The UTXO set is updated with every new block.

White Paper

A white paper is a technical document with a professional format that addresses a specific topic in detail. Its main purpose is to explain, analyze, or present a solution to a problem in a technical manner.

Footnotes

  1. Due to integer division, the actual limit is slightly less than 21 million.