The creation of "public ledgers" -- like blockchain, popularized by Bitcoin -- requires "consensus algorithms" that allow mutually untrusted, uncoordinated parties to agree on a world-readable, distributed list of things (domain names, transactions, title deeds, etc), something that cryptography makes possible in a variety of ways.
Zane Witherspoon's Hitchhiker’s Guide to Consensus Algorithms presents a no-computer-science-needed guide to the major types of consensus algorithms, with summaries of their strengths and weaknesses. Witherspoon endorses Federated Byzantine Agreement -- itself a particular instance of the Byzantine Fault Tolerance solution to the Byzantine Generals problem -- as "the best we’ve discovered for distributed consensus."
There’s this classic problem is distributed computing that’s usually explained with Byzantine generals. The problem is that several Byzantine generals and their respective portions of the Byzantine army and have surrounded a city. They must decide in unison whether or not to attack. If some generals attack without the others, their siege will end in tragedy. The generals are usually separated by distance and have to pass messages to communicate. Several cryptocurrency protocols use some version of BFT to come to consensus, each with their own pros and cons:
Practical Byzantine Fault Tolerance (PBFT): One of the first solutions to this problem was coined Practical Byzantine Fault Tolerance. Currently in use by Hyperledger Fabric, with few (< 20, after that things get a little ) pre-selected generals PBFT runs incredibly efficiently. Pros: High transaction throughput Cons: Centralized/permissioned
Federated Byzantine Agreement (FBA): FBA is another class of solutions to the Byzantine generals problem used by currencies like Stellar and Ripple. The general idea (heh), is that every Byzantine general, responsible for their own chain, sorts messages as they come in to establish truth. In Ripple the generals (validators) are pre-selected by the Ripple foundation. In Stellar, anyone can be a validator so you choose which validators to trust.
A Hitchhiker’s Guide to Consensus Algorithms [Zane Witherspoon/Hackernoon]
(via 4 Short Links)