Decentralized ThoughtsDecentralized thoughts about decentralization
https://decentralizedthoughts.github.io
Good-case Latency of Rotating Leader Synchronous BFT
Synchronous consensus protocols can tolerate $f < n/2$ Byzantine failures but for $n/3 <f <n/2$ must depend on the maximum network delay $\Delta$ for their safety and progress. So these protocols must set $\Delta$ to be much larger than the actual network delay $\delta \ll \Delta$. The good news is...
Tue, 07 Dec 2021 04:39:00 -0500
https://decentralizedthoughts.github.io/2021-12-07-good-case-latency-of-rotating-leader-synchronous-bft/
https://decentralizedthoughts.github.io/2021-12-07-good-case-latency-of-rotating-leader-synchronous-bft/Consensus cheat sheet
Crash Omission Byzantine Synchrony $f<n$ is possible $f+1$ round executions must exist $f \geq n/2$ is impossible $f<n/2$ possible with PKI / PoW $f \geq n/3$ impossible without PKI/PoW Partial Synchrony $f \geq n/2$ is impossible $f<n/2$ is possible $f<n/3$ is possible $f \geq n/3$ is impossible Asynchrony non...
Fri, 29 Oct 2021 08:18:00 -0400
https://decentralizedthoughts.github.io/2021-10-29-consensus-cheat-sheet/
https://decentralizedthoughts.github.io/2021-10-29-consensus-cheat-sheet/The Ideal State Machine Model: Multiple Clients and Linearizability
We introduced state machines and state machine replication in an earlier post. In this post, we elaborate on the exact notion of safety and liveness that can be obtained by an ideal state machine when there are multiple clients. First, these definitions highlight the challenges of serving multiple clients. Second,...
Sat, 16 Oct 2021 15:45:00 -0400
https://decentralizedthoughts.github.io/2021-10-16-the-ideal-state-machine-model-multiple-clients-and-linearizability/
https://decentralizedthoughts.github.io/2021-10-16-the-ideal-state-machine-model-multiple-clients-and-linearizability/Nakamoto's Longest-Chain Wins Protocol
In this post, we will cover Nakamoto’s Consensus protocol presented in the Bitcoin whitepaper. There are a lot of posts and videos that explain this seminal and simple protocol. Our goal in this post will be to intuitively piece out the need for different aspects of the protocol, such as...
Fri, 15 Oct 2021 00:00:00 -0400
https://decentralizedthoughts.github.io/2021-10-15-Nakamoto-Consensus/
https://decentralizedthoughts.github.io/2021-10-15-Nakamoto-Consensus/Crusader Agreement with $\leq 1/3$ Error is Impossible for $n\leq 3f$ if the Adversary can Simulate
The classic FLM lower bound says that in Synchrony, Byzantine Agreement is impossible when $n \leq 3f$. We discussed this important bound in a previous post. In this post we strengthen the FLM lower bound in two important ways: Maybe randomization allows circumventing the FLM lower bound? No! Even allowing...
Mon, 04 Oct 2021 10:46:00 -0400
https://decentralizedthoughts.github.io/2021-10-04-crusader-agreement-with-dollars-slash-leq-1-slash-3$-error-is-impossible-for-$n-slash-leq-3f$-if-the-adversary-can-simulate/
https://decentralizedthoughts.github.io/2021-10-04-crusader-agreement-with-dollars-slash-leq-1-slash-3$-error-is-impossible-for-$n-slash-leq-3f$-if-the-adversary-can-simulate/Distributed consensus made simple (for real this time!)
Multi-Paxos is the de facto solution for deciding a log of commands to execute on a replicated state machine, yet it’s famously difficult to understand, motivating the switch to ‘simpler’ consensus protocols such as Raft. The conventional wisdom is that the best way to use Paxos (aka Synod, or single-shot...
Thu, 30 Sep 2021 03:39:00 -0400
https://decentralizedthoughts.github.io/2021-09-30-distributed-consensus-made-simple-for-real-this-time/
https://decentralizedthoughts.github.io/2021-09-30-distributed-consensus-made-simple-for-real-this-time/The round complexity of Reliable Broadcast
Reliable Broadcast is an important building block of many Asynchronous protocols. There is a broadcaster that has some input value, $v$, and a non-faulty party that terminates needs to output a value. Reliable Broadcast is defined via two properties: Validity: If the broadcaster is non-faulty then eventually all non-faulty parties...
Wed, 29 Sep 2021 06:05:00 -0400
https://decentralizedthoughts.github.io/2021-09-29-the-round-complexity-of-reliable-broadcast/
https://decentralizedthoughts.github.io/2021-09-29-the-round-complexity-of-reliable-broadcast/Optimal Communication Complexity of Authenticated Byzantine Agreement
Communication complexity of Byzantine Agreement (BA) has been studied for decades. Dolev and Reischuk showed that quadratic communication is necessary for BA with perfect security, i.e., without error. Berman, Garay, and Perry showed that this lower bound is tight for the unauthenticated setting (without signatures) with $f < n/3$. However,...
Mon, 20 Sep 2021 15:28:00 -0400
https://decentralizedthoughts.github.io/2021-09-20-optimal-communication-complexity-of-authenticated-byzantine-agreement/
https://decentralizedthoughts.github.io/2021-09-20-optimal-communication-complexity-of-authenticated-byzantine-agreement/Information Theoretic HotStuff (IT-HS): Part One
This post is the first of two on Information Theoretic HotStuff (IT-HS). Information Theoretic HotStuff is a Byzantine Consensus protocol in the partially synchronous model. It replaces all of HotStuff’s cryptographic signatures with simple information theoretic message passing techniques over authenticated channels. Information theoretic protocols are often easy to reason...
Mon, 20 Sep 2021 08:07:00 -0400
https://decentralizedthoughts.github.io/2021-09-20-information-theoretic-hotstuff-it-hs-part-one/
https://decentralizedthoughts.github.io/2021-09-20-information-theoretic-hotstuff-it-hs-part-one/The Private Set Intersection (PSI) Protocol of the Apple CSAM Detection System
In this post, we will discuss the cryptographic construction used in Apple’s new system for detecting CSAM - Child Sexual Abuse Material. This cryptographic construction implements a new variant of PSI - Private Set Intersection. While a lot of attention has been paid to the broad implications of this system,...
Sun, 29 Aug 2021 17:55:00 -0400
https://decentralizedthoughts.github.io/2021-08-29-the-private-set-intersection-psi-protocol-of-the-apple-csam-detection-system/
https://decentralizedthoughts.github.io/2021-08-29-the-private-set-intersection-psi-protocol-of-the-apple-csam-detection-system/Simplifying Raft with Chaining
Raft is a consensus algorithm for deciding a sequence of commands to execute on a replicated state machine. Raft is famed for its understandability (relative to other consensus algorithms such as Paxos) yet some aspects of the protocol still require careful treatment. For instance, determining when it is safe for...
Sat, 17 Jul 2021 11:25:00 -0400
https://decentralizedthoughts.github.io/2021-07-17-simplifying-raft-with-chaining/
https://decentralizedthoughts.github.io/2021-07-17-simplifying-raft-with-chaining/Neither Non-equivocation nor Transferability alone is enough for tolerating minority corruptions in asynchrony
In this post, we explore a theorem of Clement, Junqueira, Kate, and Rodrigues from PODC 2012 regarding the limits of non-equivocation. Informally, this theorem says that neither Non-equivocation nor Transferability alone is enough for tolerating minority corruptions in asynchrony. Theorem CJKR12: Neither non-equivocation nor transferability is individually sufficient to solve...
Mon, 14 Jun 2021 12:04:00 -0400
https://decentralizedthoughts.github.io/2021-06-14-neither-non-equivocation-nor-transferability-alone-is-enough-for-tolerating-minority-corruptions-in-asynchrony/
https://decentralizedthoughts.github.io/2021-06-14-neither-non-equivocation-nor-transferability-alone-is-enough-for-tolerating-minority-corruptions-in-asynchrony/Benign Hotstuff
In this post we describe a variant of Paxos (or Raft or Lock-Commit) that is inspired by looking through the lens of HotStuff and Blockchain protocols. The most noticeable difference is that while Paxos and Raft aim to maintain a stable Primary/Leader (and change views infrequently), in Benign Hotstuff (as...
Fri, 02 Apr 2021 05:54:00 -0400
https://decentralizedthoughts.github.io/2021-04-02-benign-hotstuff/
https://decentralizedthoughts.github.io/2021-04-02-benign-hotstuff/Living with Asynchrony: the Gather protocol
A very useful tool in Asynchronus distributed computing is Reliable Broadcast, or simply called Broadcast. It allows a leader to send a message, knowing that all parties will eventually receive the same message, even if a malicious adversary control $f$ parties and $f<n/3$. Broadcast is deterministic and takes just a...
Fri, 26 Mar 2021 06:54:00 -0400
https://decentralizedthoughts.github.io/2021-03-26-living-with-asynchrony-the-gather-protocol/
https://decentralizedthoughts.github.io/2021-03-26-living-with-asynchrony-the-gather-protocol/Good-case Latency of Byzantine Broadcast: the Synchronous Case
In our first post, we presented a summary of our good-case latency results for Byzantine broadcast (BB) and state machine replication (SMR), where the good case measures the latency to commit given that the broadcaster or leader is honest. In our second post, we discussed our results for partial synchrony,...
Tue, 09 Mar 2021 11:00:00 -0500
https://decentralizedthoughts.github.io/2021-03-09-good-case-latency-of-byzantine-broadcast-the-synchronous-case/
https://decentralizedthoughts.github.io/2021-03-09-good-case-latency-of-byzantine-broadcast-the-synchronous-case/2-round BFT SMR with n=4, f=1
Guest post by Zhuolun Xiang In the previous post, we presented a summary of our good-case latency results for Byzantine broadcast and Byzantine fault tolerant state machine replication (BFT SMR), where the good case measures the latency to commit given that the leader/broadcaster is honest. In this post, we describe...
Wed, 03 Mar 2021 06:37:00 -0500
https://decentralizedthoughts.github.io/2021-03-03-2-round-bft-smr-with-n-equals-4-f-equals-1/
https://decentralizedthoughts.github.io/2021-03-03-2-round-bft-smr-with-n-equals-4-f-equals-1/Good-case Latency of Byzantine Broadcast: a Complete Categorization
Guest post by Zhuolun Xiang State Machine Replication and Broadcast Many existing permission blockchains are built using Byzantine fault-tolerant state machine replication (BFT SMR), which ensures all honest replicas agree on the same sequence of client inputs. Most of the practical solutions for BFT SMR are based on the Primary-Backup...
Sun, 28 Feb 2021 13:07:00 -0500
https://decentralizedthoughts.github.io/2021-02-28-good-case-latency-of-byzantine-broadcast-a-complete-categorization/
https://decentralizedthoughts.github.io/2021-02-28-good-case-latency-of-byzantine-broadcast-a-complete-categorization/What is a Merkle Tree?
In this post, we will demystify Merkle trees using three examples of problems they solve: Maintaining integrity of files stored on Dropbox.com, or file outsourcing, Proving a transaction between Alice and Bob occurred, or set membership, Transmitting files over unreliable channels, or anti-entropy. $$ \def\mht{\mathsf{MHT}} \def\mrh{h_{\mathsf{root}}} \def\vect#1{\boldsymbol{\vec{#1}}} $$ By the...
Tue, 22 Dec 2020 09:05:00 -0500
https://decentralizedthoughts.github.io/2020-12-22-what-is-a-merkle-tree/
https://decentralizedthoughts.github.io/2020-12-22-what-is-a-merkle-tree/Raft does not Guarantee Liveness in the face of Network Faults
Last month, Cloudflare published a postmortem of a recent 6-hour outage caused by a partial switch failure which left etcd unavailable as it was unable to establish a stable leader. This outage has understandably led to discussion online about exactly what liveness guarantees are provided by the Raft consensus algorithm...
Sat, 12 Dec 2020 09:01:00 -0500
https://decentralizedthoughts.github.io/2020-12-12-raft-liveness-full-omission/
https://decentralizedthoughts.github.io/2020-12-12-raft-liveness-full-omission/A Simple and Succinct Zero Knowledge Proof
There is a popular belief that succinct proofs and zero-knowledge proofs are a type of moon math. In this post, our goal is to present a simple proof system that can provide an introduction and intuition to this space. Perhaps surprisingly, the only tool we will use is the Theorem...
Tue, 08 Dec 2020 13:37:00 -0500
https://decentralizedthoughts.github.io/2020-12-08-a-simple-and-succinct-zero-knowledge-proof/
https://decentralizedthoughts.github.io/2020-12-08-a-simple-and-succinct-zero-knowledge-proof/