Decentralized ThoughtsDecentralized thoughts about decentralization
https://decentralizedthoughts.github.io
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 simple variant of Paxos (or Raft or any 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...
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
Many people have popularized the idea 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...
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/The Lock-Commit Paradigm: Multi-shot and Mixed Faults
In this follow up post to our basic Lock-Commit post, we show a multi-shot synchronous protocol for uniform consensus that can tolerate $f$ omission failures, given 2f < n. We then extend it to one that tolerates both $f$ omission failures and $k$ crash failures given k+2f < n. Multi-shot...
Mon, 30 Nov 2020 09:01:00 -0500
https://decentralizedthoughts.github.io/2020-11-30-the-lock-commit-paradigm-multi-shot-and-mixed-faults/
https://decentralizedthoughts.github.io/2020-11-30-the-lock-commit-paradigm-multi-shot-and-mixed-faults/The Lock-Commit Paradigm
In this post, we explore one of the most celebrated and widely used techniques for reaching consensus: the Lock-Commit paradigm. This approach is a key technique of DLS88, Lamport’s Paxos, and many subsequent protocols. Protocols like Raft, PBFT, Tendermint, SBFT, Casper, HotStuff, etc., are all based on this paradigm. We...
Sun, 29 Nov 2020 08:02:00 -0500
https://decentralizedthoughts.github.io/2020-11-29-the-lock-commit-paradigm/
https://decentralizedthoughts.github.io/2020-11-29-the-lock-commit-paradigm/BFT Protocol Forensics
An important property satisfied by any Byzantine fault tolerant consensus protocol is agreement, which requires non-faulty replicas to not decide on conflicting values. Depending on the network model, typical consensus protocols tolerate only a fraction of Byzantine replicas. In particular, under partial synchrony or asynchrony, no consensus protocol with $n$...
Thu, 19 Nov 2020 20:00:00 -0500
https://decentralizedthoughts.github.io/2020-11-19-bft-protocol-forensics/
https://decentralizedthoughts.github.io/2020-11-19-bft-protocol-forensics/Resolving the Availability-Finality Dilemma
Guest post by Joachim Neu, Ertem Nusret Tas, and David Tse DLS and Nakamoto: Where to Go From Synchrony? An earlier blog post has explained classical models of the consensus literature from the 1980s, synchrony, asynchrony and partial synchrony. To recapitulate, the most basic network/adversary model is synchrony, where it...
Sun, 01 Nov 2020 01:16:00 -0400
https://decentralizedthoughts.github.io/2020-11-01-ebb-and-flow-protocols-a-resolution-of-the-availability-finality-dilemma/
https://decentralizedthoughts.github.io/2020-11-01-ebb-and-flow-protocols-a-resolution-of-the-availability-finality-dilemma/Living with Asynchrony: Bracha's Reliable Broadcast
In this series of posts, we explore what can be done in the Asynchronous model. This model seems challenging because the adversary can delay messages by any bounded time. By the end of this series, you will see that almost everything that can be done in synchrony can be obtained...
Sat, 19 Sep 2020 09:05:00 -0400
https://decentralizedthoughts.github.io/2020-09-19-living-with-asynchrony-brachas-reliable-broadcast/
https://decentralizedthoughts.github.io/2020-09-19-living-with-asynchrony-brachas-reliable-broadcast/Broadcast from Agreement and Agreement from Broadcast
In this post, we highlight the connection between Broadcast and Agreement in the synchronous model. Broadcast and Agreement: How can you implement one from the other? We defined Agreement and Broadcast in a previous post, here is a recap: Agreement A set of $n$ nodes where each node $i$ has...
Mon, 14 Sep 2020 10:07:00 -0400
https://decentralizedthoughts.github.io/2020-09-14-broadcast-from-agreement-and-agreement-from-broadcast/
https://decentralizedthoughts.github.io/2020-09-14-broadcast-from-agreement-and-agreement-from-broadcast/Commit-Notify Paradigm for Synchronous Consensus with Omission Faults
We continue our series of posts on State Machine Replication (SMR). In this post, we move from consensus under crash failures to consensus under omission failures. We still keep the synchrony assumption. Let’s begin with a quick overview of what we covered in previous posts: Upper bound: We can tolerate...
Sun, 13 Sep 2020 15:09:00 -0400
https://decentralizedthoughts.github.io/2020-09-13-synchronous-consensus-omission-faults/
https://decentralizedthoughts.github.io/2020-09-13-synchronous-consensus-omission-faults/What is a Cryptographic Hash Function?
If you ever tried to understand Bitcoin, you’ve probably banged your head against the wall trying to understand what is a cryptographic hash function? The goal of this post is to: Give you a very simple mental model for how hash functions work, called the random oracle model Give you...
Fri, 28 Aug 2020 13:05:00 -0400
https://decentralizedthoughts.github.io/2020-08-28-what-is-a-cryptographic-hash-function/
https://decentralizedthoughts.github.io/2020-08-28-what-is-a-cryptographic-hash-function/Private Set Intersection #2
In the first post on Private Set Intersection, I presented the problem of Private Set Intersection, its applications and the simple protocol of [KMRS14], that allows Alice and Bob to learn the intersection of their sets with the aid of an untrusted third party Steve who is assumed to not...
Sun, 26 Jul 2020 19:00:00 -0400
https://decentralizedthoughts.github.io/2020-07-26-private-set-intersection-2/
https://decentralizedthoughts.github.io/2020-07-26-private-set-intersection-2/Polynomial Secret Sharing and the Lagrange Basis
In this post, we highlight an amazing result: Shamir’s secret sharing scheme. This is one of the most powerful uses of polynomials over a finite field in distributed computing. Intuitively, this scheme allows a $Dealer$ to commit to a secret $s$ by splitting it into shares distributed to $n$ parties....
Fri, 17 Jul 2020 14:23:00 -0400
https://decentralizedthoughts.github.io/2020-07-17-polynomial-secret-sharing-and-the-lagrange-basis/
https://decentralizedthoughts.github.io/2020-07-17-polynomial-secret-sharing-and-the-lagrange-basis/The Marvels of Polynomials over a Field
In this series of posts, we explore the mathematical foundations of polynomials over a field. These objects are at the heart of several results in computer science: secret sharing, Multi Party Computation, Complexity, and Zero Knowledge protocols. All this wonder and more can be traced back to a very useful...
Fri, 17 Jul 2020 13:55:00 -0400
https://decentralizedthoughts.github.io/2020-07-17-the-marvels-of-polynomials-over-a-field/
https://decentralizedthoughts.github.io/2020-07-17-the-marvels-of-polynomials-over-a-field/