ABSTRACT

This chapter describes the consensus problem and consensus protocols in distributed systems, fault-tolerant mechanisms in blockchain-based systems, and the tradeoff between consensus and performance. Blockchain-based systems are essentially distributed systems, at the heart of which lies distributed consensus. Distributed consensus protocols glue individual computers together to provide a reliable service to the outside world. The goal of consensus is to increase system reliability. Unreliability in a distributed system comes from two sources: communication channels, e.g., messages may be delayed, duplicated, lost, or reordered and nodes, e.g., a node may crash or behave maliciously. Depending on the failure model, a distributed system can be either a fail-stop system or a Byzantine-fault-tolerant system. ELASTICO is a sharding protocol for permissionless blockchain-based systems. In contrast, both communication channels and nodes are unreliable in a Byzantine-fault-tolerant system.