Components of a Blockchain

The components of an open, public blockchain are (usually):

  • A peer-to-peer (P2P) network connecting participants and propagating transactions and blocks of verified transactions, based on a standardized “gossip” protocol

  • Messages, in the form of transactions, representing state transitions

  • A set of consensus rules, governing what constitutes a transaction and what makes for a valid state transition

  • A state machine that processes transactions according to the consensus rules

  • A chain of cryptographically secured blocks that acts as a journal of all the verified and accepted state transitions

  • A consensus algorithm that decentralizes control over the blockchain, by forcing participants to cooperate in the enforcement of the consensus rules

  • A game-theoretically sound incentivization scheme (e.g., proof-of-work costs plus block rewards) to economically secure the state machine in an open environment

  • One or more open source software implementations of the above (“clients”)

All or most of these components are usually combined in a single software client. For example, in Bitcoin, the reference implementation is developed by the Bitcoin Core open source project and implemented as the bitcoind client. In Ethereum, rather than a reference implementation there is a reference specification, a mathematical description of the system in the Yellow Paper (see Further Reading). There are a number of clients, which are built according to the reference specification.

In the past, we used the term “blockchain” to represent all of the components just listed, as a shorthand reference to the combination of technologies that encompass all of the characteristics described. Today, however, there are a huge variety of blockchains with different properties. We need qualifiers to help us understand the characteristics of the blockchain in question, such as open, public, global, decentralized, neutral, and censorship-resistant, to identify the important emergent characteristics of a “blockchain” system that these components allow.

Not all blockchains are created equal. When someone tells you that something is a blockchain, you have not received an answer; rather, you need to start asking a lot of questions to clarify what they mean when they use the word “blockchain.” Start by asking for a description of the components in the preceding list, then ask whether this “blockchain” exhibits the characteristics of being open, public, etc.