A brief discussion of the Practical Byzantine Fault Tolerance (PBFT) algorithm

Marton Trencseni - Sat 06 September 2025 • Tagged with lamport, byzantine, generals, distributed, signed, signature, pbft, blockchain, paxos, raft

This article explains how Practical Byzantine Fault Tolerance (PBFT) builds on Lamport’s theoretical consensus algorithms by introducing leaders, quorums, and cryptographic optimizations to make Byzantine consensus practical, contrasts it with Paxos and crash-fault tolerance, and explores its influence on modern blockchain protocols.

Continue reading

Lamport's Byzantine Consensus algorithm with Signatures

Marton Trencseni - Sun 31 August 2025 • Tagged with lamport, byzantine, generals, distributed, python, flask, signed, signature

This article, following Lamport's work, extends the original Byzantine Generals algorithm from “oral-messages” to signed messages, showing how digital signatures drastically simplify the problem and reduce message complexity, with an implementation given in Python using Flask HTTP nodes.

Continue reading

Applications of Byzantine Consensus

Marton Trencseni - Sat 23 August 2025 • Tagged with lamport, byzantine, generals, distributed

This article examines where Lamport's original oral-messages Byzantine Generals algorithm does and does not apply in practice, contrasting unsuitable cases like distributed databases and rocket launches with a suitable case in redundant flight control systems.

Continue reading

A more general implementation of Lamport's Byzantine Consensus algorithm in Python

Marton Trencseni - Tue 12 August 2025 • Tagged with lamport, byzantine, generals, python, flask, distributed

This follow-up factors Lamport’s Byzantine Generals algorithm into a generalized class that's independent of I/O and payloads. Any node can initiate a round (be "king"), values can be arbitrary strings, and multiple rounds can run concurrently.

Continue reading

Lamport's Byzantine Generals algorithm in Python

Marton Trencseni - Wed 30 July 2025 • Tagged with lamport, byzantine, generals, python, flask, distributed

I discuss Lamport's Byzantine Generals problem and why it requires a total of N≥3M+1 nodes with M malicious nodes, and then implement the solution using Python with HTTP Flask servers.

Continue reading