A distributed system is a group of computers working together to achieve a unified goal (with laymen terminology, it is a group of computers working together as to appear as a single computer to the end-user or end-client). Every distributed system has a specific set of characteristics. These include:
- Concurrency: meaning multiple events occur simultaneously
- Lack of a global clock: in a set of computers operating concurrently, it is sometimes impossible to say that one of two events occurred first, as computers are spatially separated.By determining which event happens before another, we can get a partial ordering of events in the system (…) time and order of events are fundamental obstacles in a system of distributed computers that are spatially separated.
- Independent failure of components: acknowledging that components in a distributed system are faulty. These include crash fail, omission, byzantin
- Message passing: synchronous or asynchronous
The Consensus Problem, Defined
An algorithm achieves consensus if it satisfies the following conditions:
- Agreement: All non-faulty nodes decide on the same output value.
- Termination: All non-faulty nodes eventually decide on some output value.
Broadly speaking, consensus algorithms typically assume three types of actors in a system:
- Proposers, often called leaders or coordinators.
- Acceptors, processes that listen to requests from proposers and respond with values.
- Learners, other processes in the system which learn the final values that are decided upon
Notes from: How Does Distributed Consensus Work? by Preethi Kasireddy in Medium Blockchain, full article available here