CS PAPERS DEEP-READ · PAPER 38

The Byzantine Generals Problem

Lamport, Shostak, Pease · SRI International · ACM TOPLAS 1982

中文 →

What did this paper do?

In 1982, Leslie Lamport and two colleagues posed and solved a question: if a group of people who can only coordinate by passing messages has some liars and saboteurs mixed in, can the honest ones still agree? Their answer was striking — yes, as long as the traitors are fewer than one-third of everyone; once they reach one-third, no. This idea is the bedrock of every "resist-the-cheaters" system today: Bitcoin, blockchains, fault-tolerant bank ledgers all trace back here.

First, an odd story

Several divisions of the Byzantine army surround an enemy city, each led by a general, and the generals can only send word by messenger. They must all attack together or all retreat together — the worst outcome is "half attack, half retreat," which loses for sure. The trouble: some generals are traitors who deliberately tell one person "attack" and another "retreat," sowing chaos to keep the loyal generals from lining up. The question: can the loyal generals guarantee they all act as one?

Why is it so hard?

Take the smallest case: three people, one traitor. The paper proves it's impossible. Picture yourself, an honest general, receiving two contradictory messages: the commander says "attack," but another general relays "the commander told me to retreat." You simply cannot tell: is the commander honest and the relayer lying? Or is the commander a traitor who told different people different things? Those two situations look identical to you. You have no way to decide, and any choice can be wrong. With too few people, a traitor's lies are enough to muddy the water past the point of telling truth from falsehood.

So what breaks the deadlock?

Two things. First, enough people — the honest ones must be more than two-thirds (traitors under one-third), so lies can't outnumber truth. Second, everyone relays and then takes a majority vote: each person not only hears the commander but also tells everyone else "here's what the commander told me." Now each honest person accumulates a whole pile of "accounts of the commander's order," of which the traitors can pollute only a few. Take the majority and the truth surfaces — and every honest person computes the same majority, so they all act alike.

A shortcut: signatures

All that relaying is laborious. The paper offers a second route: stamp every order with an unforgeable "wax seal" (a digital signature). The seal can't be faked, and any tampering with the contents shows. Now a traitor can no longer secretly alter the commander's words to deceive — the moment he changes anything, checking the seal exposes it. With signatures, the honest ones can agree no matter how many traitors there are, and the one-third barrier falls away. The cost: you first need a reliable signature scheme nobody can forge — itself hard to build in the real world.

Remember this

Among people who coordinate by relaying messages and include liars, as long as the traitors are under one-third, "everyone relays plus majority vote" lets the honest ones act as one; at one-third there's no cure — unless every message carries an unforgeable signature, in which case any number of traitors can be tolerated. This is the starting point of every "resist-the-cheaters" distributed system.

Want the three-general impossibility proof, the recursive algorithm, and message costs? → switch to the Deep version