A blockchain allows multiple parties to work on shared data without trusting a single party to manage it.

A Blockchain application has 4 primary components:


State is the shared data used in a blockchain application. You can think of state as a document that starts out blank, and tracks the changes made to it by each party.


Transactions are changes to state—they update the document. Transactions are always signed by their creator with a private key, proving the transaction's authenticity. You can think of transactions as suggested edits to the document.


A block is a bundle of transactions, plus the hash (basically a data snapshot) of the previous block. Including the hash of the previous block in the new block links them together, creating a block chain. You can think of the block chain as a long list of document edits.


Validators maintain the blockchain through a process called consensus. They validate incoming transactions, and propose new blocks to other validators. When a validator receives a new block proposal, it validates the transactions, verifies the consensus requirements. If the checks pass, the validator commits it, and updates its copy of the state data by applying the new block's transactions—akin to accepting suggested edits in a shared document.

There are a number of methods for reaching consensus (proof of work, proof of stake, etc), but what's important is that the process is trusted by the participants to accept only valid blocks.

In summary, state is the shared data, transactions update the state, blocks bundle the transactions, and consensus validates and distributes new blocks.

Put another way, state is a shared document, transactions are suggested edits, blocks are groups of edits, and validators use the consensus process to accept or reject each block of edits.

Process Flow