Lecture 2.2: Distributed consensus
Bitcoin’s key challenge
Key technical challenge of decentralized e-cash: distributed consensus
Why consensus protocols?
Traditional motivation: reliability in distributed systems
Distributed key-value system store enables various applications: DNS, public key directory, stock trades…
Defining distributed consensus
two requirements:
- The protocol terminates and all correct nodes decide on the same value;
- This value must have been proposed by some correct node;
Bitcoin is a peer-to-peer system

How consensus could work in Bitcoin
At any given time:
- All nodes have a sequence of blocks of transactions they’ve reached consensus on;
- Each node has a set of outstanding transactions it’s heard about;(consensus has not yet happended)
And then they excute together some consensus protocol:

you can select any of these valid blocks, and add it to the consensus block chain.
Why consensus is hard
This has some similarities to how Bitcoin works, but it’s not exactly Bitcoin works.
There are really hard technical problems.
- Nodes may crash;
- Nodes may be malicious;
- Network is imperfect:
- Not all pairs of nodes connected;
- Faults in network;
- Latency;(which leads to no notion of global time)
Many impossibililty results
- Byzantine general problems;
- Fischer-Lynch-Paterson (deterministic nodes): consensus impossible with a single faulty node;