ABEL: Perfect Asynchronous Byzantine Extension from List-Decoding
Abstract
Asynchronous byzantine agreement extension studies the message complexity of -bit multivalued asynchronous byzantine agreement given access to a binary asynchronous Byzantine agreement protocol.
We prove that asynchronous byzantine agreement extension can be solved with perfect security and optimal resilience in total communication (in bits) in addition to a single call to a binary asynchronous Byzantine agreement protocol. For , this gives an asymptotically optimal protocol, resolving a question that remained open for nearly two decades.
List decoding is a fundamental concept in theoretical computer science and cryptography, enabling error correction beyond the unique decoding radius and playing a critical role in constructing robust codes, hardness amplification, and secure cryptographic protocols. A key novelty of our perfectly secure and optimally resilient asynchronous byzantine agreement extension protocol is that it uses list decoding - making a striking new connection between list decoding and asynchronous Byzantine agreement.
Keywords and phrases:
Asynchronous Byzantine Agreement, Perfect SecurityFunding:
Gilad Asharov: Research supported by the Israel Science Foundation (grant No. 2439/20), and by the European Union (ERC, FTRC, 101043243). Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or the European Research Council. Neither the European Union nor the granting authority can be held responsible for them.Copyright and License:
2012 ACM Subject Classification:
Security and privacy ; Security and privacy Cryptography ; Security and privacy Information-theoretic techniques ; Security and privacy Distributed systems securityEditor:
Dariusz R. KowalskiSeries and Publisher:
Leibniz International Proceedings in Informatics, Schloss Dagstuhl – Leibniz-Zentrum für Informatik
1 Introduction
The agreement problem is perhaps the quintessential problem in fault-tolerant distributed computing. In agreement, each party has an input and the goal is for all honest parties to output (liveness) the same value (agreement), and that if all of them have the same input, then this is the output (weak validity). In Byzantine agreement, the challenge is to do this while tolerating a strongly adaptive adversary that can corrupt up to parties. It is known that for perfect security, or in asynchrony, byzantine agreement requires , so we call a protocol that can tolerate optimally resilient. In asynchronous byzantine agreement the network is asynchronous. In this setting infinite execution must exist, but using randomization, protocols for binary asynchronous byzantine agreement with an expected rounds and expected communication are known (for example, given access to a weak coin that has a constant probability of success) [18, 5].
The cost for agreement on one bit is optimal due to lower bounds of Dolev and Reischuk [12] even in synchrony and for omission failures and even with randomization against a strongly adaptive adversary [6].
For the multivalued case, where the input is bits, the obvious additional lower bound is bits that are required when parties do not have the output as their input, need to learn the output. Thus, we say that a multivalued asynchronous byzantine agreement has asymptotically optimal complexity if the communication complexity is . For , we say a multivalued asynchronous byzantine agreement that has communication complexity has asymptotically optimal complexity.
The goal of the asynchronous byzantine agreement extension problem, as suggested in [9, 15], is to study the costs of multivalued asynchronous byzantine agreement given access to a binary byzantine agreement protocol.
In this setting, for , results with optimal resilience and asymptotically optimal complexity are known under cryptographic assumptions and a PKI [17, 19] (in fact, using a PKI allows for stronger external validity properties). In synchrony, the breakthrough of [7] obtains perfect security (also see improvements [3] and statistical security with fewer rounds [1]).
Recently, the results in the asynchronous model have seen great progress: using just a cryptographic hash function [14]; near optimal resilience and statistical security [13]; and perfect security with overhead in communication and time, or perfect with [8] or near optimal resilience [13].
Despite nearly two decades and considerable recent work, the following remains open: for , does there exist an asynchronous byzantine agreement extension protocol that is:
-
1.
Optimally resilient ();
-
2.
Asymptotically optimal (for has complexity );
-
3.
Perfectly secure (is error free).
The main result of this paper is a positive answer to this open question.
Theorem 1.1 (Main).
For , there exists a protocol that solves multivalued asynchronous byzantine agreement with optimal resilience, asymptotically optimal complexity, and perfect security, given access to a single instance of binary asynchronous byzantine agreement.
In other words, our protocol achieves for inputs of size in addition to a single call to a binary agreement. A key novelty of our perfectly secure and optimally resilient Asynchronous Byzantine Agreement Extension protocol is that it uses list decoding - making a striking new connection between list decoding and asynchronous byzantine agreement. List decoding [20, 16] is a fundamental concept in theoretical computer science and cryptography, allowing error correction beyond the unique decoding radius and playing a critical role in many areas of theoretical computer science. In this paper, we show its criticality in enabling optimal asynchronous extension protocols with perfect security.
As a warm-up, we show a variant with statistical security (also see [13]) to highlight some of the challenges before going to the perfect security case.
Theorem 1.2 (Statistical).
For an error parameter , and , there exists a protocol that solves multivalued asynchronous byzantine agreement with optimal resilience, asymptotically optimal complexity, and statistical security (with error ), given access to a single instance of binary asynchronous byzantine agreement.
1.1 Discussion and open questions
Our extension is asymptotically optimal when bits. Obtaining asymptotic optimality for remains an open question. Our reduction is nearly quadratic, but the currently best binary byzantine agreement protocol with perfect security, assuming private channels, is [4]. Improving this bound, or finding other assumptions where binary ABA with perfect security is (nearly) quadratic, is another open question.
Just like [7], we obtain byzantine agreement with a weak form of validity that allows parties to agree on a special symbol if the inputs from the honest parties do not agree. Getting similar results for stronger notions of validity (or proving this to be impossible) also remains an open question.
1.2 High level ideas
We start with an overview of the breakthrough COOL protocol of [7] and how it can be used in asynchrony. Then describe a new functionality called BOOST. The next step is a new general extension framework that combines BOOST, COOL, and binary asynchronous byzantine agreement to achieve asynchronous byzantine agreement extension. We then overview BOOST with statistical security, and then BOOST with perfect security.
COOL in asynchrony.
A modular view of the COOL protocol [7, 3] is that it is a weak variant of asynchronous verifiable information dissemination and dispersal [10, 11, 3]. In asynchrony, we can combine the two phases to get a reliable agreement protocol that we will call COOL reliable agreement or simply COOL. Roughly speaking, COOL gives: (Validity) If all honest start with the same input, they all output this value; (Totality) If an honest outputs, then all honest will output; (Agreement) The output of all honest is the same.
Note that COOL reliable agreement does not guarantee termination in all cases. It is safe, but live only in the good case (validity property). Can we use COOL along with a binary asynchronous agreement protocol to get multivalued asynchronous agreement? This is where the BOOST protocol comes in.
BOOST in asynchrony.
Unlike COOL, which is safe but not live, BOOST is live but not safe. All parties eventually output a value, or eventually output - but these are not necessarily mutually exclusive. A party might output twice in the protocol: a value, and later also .
In BOOST, every party will eventually output a value or output or do both. Roughly speaking, BOOST gives: (Validity) If all honest start with the same input, they all output this value and never output ; (Value Totality) If an honest outputs a value then all honest will output a value; ( Totality) If an honest outputs then all honest will output ; and finally the correctness property: (Correct or Detect) Either all parties output the same value, or all parties output .
In the correct case, all parties output the same value from BOOST. But what if they do not? Then we are in the detect case: we are guaranteed that all parties will eventually output . However, parties do not know what case they are in. They may output a value first and may not be certain if they will ever eventually also output .
This leads to the following natural protocol: run BOOST. If it outputs then enter the binary agreement with 0. If BOOST outputs a value, then enter COOL with this value. If COOL outputs a value, then enter the binary agreement with 1. Finally, if the binary agreement ends with 0, then output . Otherwise, wait for the output of COOL and output that.
Roughly speaking, (Validity) If all honest have then BOOST will only output and COOL will output and agreement will output ; (Liveness) If BOOST outputs then all will eventually output so the binary agreement will complete (note, may not always be on 0). Otherwise, if there is no output of , then there is agreement (from the correct or detect property in BOOST), so all will output the same and enter COOL with the same and from the validity of COOL and the liveness of the binary agreement, all will output the same value; (Agreement) If the binary outputs 0 then it is immediate and otherwise due to the agreement property of COOL.
Why is it called BOOST?
From BOOST validity, if all honest have and the malicious have , then the output must be . Consider a world where honest have , honest have , and the malicious are silent. This world is indistinguishable from the validity world with slow parties with instead of the silent malicious. Hence, BOOST cannot output because of validity, so it must output a value. That means it must output .
So the that hold must convince the honest parties that hold to also output . So we need to boost the value from inputs to the output of all honest parties. Hence, we call this protocol BOOST because its main challenge is to identify a value that appears in honest parties and boost it to all parties (or detect a problem while trying to do that).
BOOST with statistical security.
For statistical security, one can test whether two polynomials are equal (with statistical error) by evaluating them at a random point. Extending this idea, a party can determine whether and hold the same polynomial by receiving a single evaluation at a common random challenge point. This approach, used to reduce rounds in reliable agreement for statistical security [1], treats an evaluation as a hash of the polynomial. The only requirement is that the challenge point be chosen after the adversary fixes the polynomial; for simplicity in our statistical case, we assume all inputs are fixed before the protocol begins (See [1] for removing this assumption).
In the following, define the -case as the case there are at least parties that have the same input .
Statistical BOOST protocol in 7 phases:
-
1.
Exchange phase: parties send a random challenge point, and get responses that are evaluations at the challenge point. In this phase parties also detect if they see evaluations that disagree with their input.
-
2.
Support phase: If a party sees responses on the same point, it identifies a group of parties with the same input. It sends them a support message. Note that you can send support messages for at most two groups (because ).
-
3.
Sending YourPoint phase: If a party hears support messages on its input then it sends each party its point on this polynomial.
In the case, if a party has input and hears support, this means that all parties will see at least support for , and hence all parties with input will detect.
-
4.
Sending MyPoint phase: If a party hears parties send it the same YourPoint, then it sends back this point as a MyPoint message. Critically, a party sends only one MyPoint message.
So in the -case, if no has support then eventually all honest parties will send their MyPoint for .
-
5.
Reconstruct phase: Parties now wait to robustly reconstruct at least MyPoint values that agree on the same polynomial.
-
6.
Totality and Abundance phase: standard techniques to ensure that one termination implies all terminate and that at least terminate with a value.
-
7.
Disseminate phase: standard techniques to ensure that if at least have the same value, and all other have this value or then all honest will output this value. This part is done as a separate sub-protocol.
BOOST with perfect security.
Moving from statistical to perfect security introduces several new challenges.
First, in the statistical setting, either evaluations agree on your input or disagree, and you detect. With perfect security, detecting from responses is much harder. Moreover, sending support requires finding a set of parties that have the same polynomial. How can you do this if you only hear two deterministic evaluation points from each party?
Second, unlike the statistical setting, we cannot get strong detection properties so early in the protocol, hence we cannot stop after sending one MyPoint and we may need to send several MyPoints. But this complicates decoding: how can you decode if each party sends two points? multiple polynomials may fit. Even more problems arise since a support message may help several polynomials, not just one with high probability as in the statistical setting.
Third, is the most subtle, in the -case we must ensure that if some party outputs then all parties will eventually detect. But party may have such that , so detecting a conflict seems challenging.
To address the first problem, we use a more subtle detection rule (see Claim 5.2). This detection uses List Decoding: we observe that identifying points that agree on a degree polynomial is exactly a List Decoding instance and prove the list is at most of size .
For the second problem, list decoding helps again: instead of interpolating, we wait to see if there are points that agree with a polynomial in our list. This may yield a list of reconstructed polynomials, unlike the statistical case. This adds complexity and forces us to do several non-trivial rounds of detection in order to make sure that in the -case, if a party outputs then all parties eventually detect.
Obtaining this detection is the crux of our protocol, and is done in three phases. The Filter phase detects one type of disagreement and then the Simple Detect phase detects another. After these two phases there may still be a party that wants to output but has . In this case, we need to add an additional Resolve Conflict phase.
This phase again uses list decoding, allowing every party to learn about . So parties holding with learn that evaluations at cannot differentiate parties holding from parties holding , so they send a new challenge point such that and using responses from this new challenge point we can finally get the desired detection property.
BOOST with perfect security - Overview of the protocol.
Recall that the -case is when there are at least parties that have the same input .
-
1.
Exchange phase: here each party with input sends to each party the two points and . There are two non-trivial aspects when receiving these points:
-
(a)
The first is that a party detects if the number of parties that send detect plus the number of parties that send points that do not agree with your input is more than . This rule is used in a subtle manner to prove the detect property in Claim 5.2 in the not -case.
-
(b)
The second is that we need to give support to any set of parties that agree on the same degree at most polynomial, but we cannot use a random challenge point for perfect security. So the only way to find this is to use (online) List Decoding to generate a dynamic set . Since our degree is , the list has at most 3 elements (see Claim 5.2).
-
(a)
-
2.
Filter phase: each party sends its support to at most 3 polynomials by sending back to them their point on this polynomial. Now a party may see 3 different values from each other party, how can it know if it has a support of 2t+1? The new idea here is to check which of the polynomials in has points that agree with it. Parties put those polynomials in a dynamic set .
Parties also detect if a polynomial other than their input is in . In the -case, we prove that all parties whose input disagrees with will eventually detect. Going forward, let be the number of parties detected this way.
This detection is not enough, because some party may get with but we may still not have detections. The next two phases solve this.
-
3.
Simple detect phase: In this phase if any party adds to and then we prove all parties will eventually detect. We do this by proving that at least parties that have as input must detect (see Claim 5.4) and use the detections from the previous phase.
-
4.
Resolve conflict phase: Here we want to detect if a party outputs but has . We observe that if the previous detect does not trigger, then all honest parties have points that agree with (even if the polynomial they have is not ). So how can a party holding with know that it is not holding (x) in this case?
This observation implies that party can list decode the values it receives at this stage, and it must include in this list after waiting for messages. Now party , that is holding , is aware of .
Party sees that so index is not suitable for disambiguating between and . So party chooses a new index such that and sends that as a new challenge point. With this new challenge point, in the -case, if a party outputs then it must be that all parties output detect (see Claim 5.5). This is somewhat reminiscent of the random point challenge used in the statistical security setting.
-
5.
Totality and Abundance phase: standard techniques.
-
6.
Disseminate phase: standard techniques.
2 Preliminaries and Building Blocks
2.1 Notations
We let denote the total number of participants. We let denote the total number of corrupted parties. We assume Byzantine faults, and that . Here we focus on the case where . We assume communication channels are identifiable so parties can identify who sent them a message.
Reed Solomon codes.
Let be a finite field such that , where is the number of parties. Without loss of generality, we assume that , while this is just to ease convention. To encode a message where each , the encoding algorithm defines a polynomial , and outputs . Since two polynomials of degree can agree on at most points, the distance is . Thus, we can correct up to errors. When , this means that we can correct, in particular, errors. For a set of points, we use as the unique decoding procedure of Reed-Solomon codes, which returns a unique polynomial of degree that agrees with all but at most points in (if exists).
List decoding.
List decoding procedure of Reed-Solomon codes allows the return of all polynomials that agree with a set when the distance is larger than the minimum distance of the code. We use to denote the procedure that returns all polynomials of degree that agree with on points. Looking ahead, we will use it with and , and our analysis would show that when , there are no more than three possible polynomials that satisfy that, i.e., no more than three polynomials of degree that agree with points on .
Input length.
In our protocols, we assume that the input is a polynomial of degree (looking ahead, in the statistical, and in perfect). For the general case of an -bit message, the parties segment the -bit message into blocks of size bits each (with padding when necessary). Generalizing the protocols to -blocks input can be done in a natural way, e.g., instead of sending a single point, we would send points, each is associated with a different polynomial. We omit such details. Additionally, in the perfect security case, we assume .
2.2 Dispersal
Definition 2.1 (Dispersal).
A protocol for parties where the input of each party is some , is an asynchronous dispersal protocol tolerating corrupted parties if the following properties hold:
-
Termination: If one honest party terminates, then all honest parties terminate.
-
Weak agreement: If an honest party terminates, then at least honest parties terminate with the same output , and the rest might terminate with either or .
-
Weak Validity: If all honest parties start with the same polynomial of degree at most , then termination and weak agreement hold with respect to .
It is important to note that this protocol might never terminate. In particular, termination is guaranteed only in the case where all honest parties have the exact same input. We might also terminate with other outputs, in which case weak agreement is guaranteed ( honest parties output the same output, but the rest output ).
Protocol 2.1 (Dispersal)
Input:
Each party holds of degree at most over .
The protocol:
-
1.
Initialization: Each party initializes , .
-
2.
Exchange:
-
(a)
sends to each .
-
(a)
-
3.
Dynamic set :
-
(a)
Upon receiving from , if and then add to .
-
(b)
Upon , send to all.
-
(a)
-
4.
Dynamic set :
-
(a)
Upon receiving message from for which , then add to .
-
(b)
Upon , send to all.
-
(a)
-
5.
Sending :
-
(a)
If sent , and upon receiving messages, send messages to all.
-
(b)
Upon receiving messages from distinct parties, send to everyone.
-
(c)
Upon receiving messages, if sent message, then terminate and output . If did not send message, then terminate and output .
-
(a)
Theorem 2.2 ([3]).
2.3 Asynchronous Data Dissemination
Definition 2.3.
A protocol for parties where the input of each party is some is a Asynchronous Data Dissemination protocol tolerating corrupted parties if the following properties hold:
-
Termination: If one honest party terminates, then all parties terminate.
-
Validity: If at least honest parties start with the same input , and all other honest parties start with , then all honest parties output .
Protocol 2.2 (Asynchronous Data Dissemination)
Input:
Each party holds as input, of degree at most . Some might have input .
The protocol:
-
1.
Initialize a multi-set and . If , send to each its point .
-
2.
Upon receiving from , add to .
-
3.
Upon some appearing times in , send to all parties.
-
4.
Upon receiving from , add to . Upon execute the following:
-
(a)
Run and try to decode a polynomial of degree at most that agrees with on at least values.
-
(b)
If no such polynomial exists, then wait to receive more points in and retry.
-
(c)
If such a polynomial is computed, set to be the resultant value.
-
(a)
-
5.
Upon unique decoding , terminate and output .
2.4 Reliable Agreement
In reliable broadcast, there is a sender, and other parties have no inputs. The sender wishes to broadcast its message, and that all honest parties would output that value. Agreement and validity are guaranteed, but there is no guaranteed termination.
We now consider “reliable agreement”. The difference from reliable broadcast is that all parties have an input, and there is no sender.
Definition 2.5.
A protocol for parties , where the input of each party is some is a Reliable Agreement tolerating corrupted parties, if the following properties hold:
-
Termination: If one honest party terminates, then all parties terminate.
-
Validity: If all honest parties start with the same input , then all honest parties terminate with output .
-
Agreement: If one honest party terminates with output , then it is guaranteed that all honest parties eventually terminate with output .
Protocol 2.3 (Reliable Agreement)
-
Input: The input of each party is some polynomial of degree over .
The following is proven in the appendix:
Theorem 2.6.
Protocol 2.3 is a reliable agreement protocol tolerating corrupted parties. It requires communication for an input of size .
2.5 Asynchronous Byzantine Agreement
In an asynchronous Byzantine Agreement protocol, each party has some input , and the parties have to agree on some output. It is required that all parties must terminate, must agree on the output, and if all honest parties start with the same input , then the output .
Definition 2.7.
A protocol for parties where the input of each party is some bit is a Asynchronous Byzantine Agreement tolerating corrupted parties if the following properties are satisfied:
-
Agreement: All honest parties must output the same value.
-
Validity: If all honest parties enter with the same input , then all output .
-
Termination: All honest parties must terminate.
If , then we call the protocol Binary Asynchronous Byzantine Agreement; If the input is a general string, then we call the protocol Multi-value Asynchronous Byzantine Agreement. If a Multi-value Asynchronous Byzantine Agreement uses a Binary Asynchronous Byzantine Agreement, then we call it a Asynchronous Byzantine Agreement Extension protocol.
3 From BOOST to Multivalue Byzantine Agreement
3.1 BOOST
We introduce a new primitive called BOOST. We build a multivalue Byzantine Agreement protocol from BOOST, which we define its properties next:
Definition 3.1.
A protocol for parties , where the input of each party is some polynomial of degree over , is a BOOST protocol, tolerating corrupted parties, if the following properties are satisfied:
-
Syntax: The protocol might not terminate, but each party eventually writes to (at least) one of two output tapes – , or/and .
-
Validity: If all honest parties enter with the same polynomial , then at least honest parties set their output to . Moreover, no honest party activates output .
-
Set output: If an honest party sets output then all honest parties set their output.
-
Detect or correct: If at least honest parties hold the same polynomial as input, then: (a) either eventually all honest parties activate their detect output tape; or (b) at least honest parties set their output tape to , and the remaining set their output to .
-
Detect: If there is no set of honest parties with the same input, then all honest parties activate their detect tape.
In fact, the crux is in designing this primitive. In the next subsection, we show how to utilize this primitive to obtain a multivalue byzantine agreement. In Section 4 we show how to implement BOOST with statistical security, which is shown mainly as a warmup. In Section 5 we show how to implement it with perfect security.
3.2 Main Protocol: Multivalue Byzantine Agreement
Protocol 3.1 (Multivalue Byzantine Agreement)
-
Input: Each party holds of degree as input.
-
The protocol:
-
1.
BOOST Dissemination Reliable Agreement:
-
2.
Asynchronous Binary Byzantine Agreement: The parties run a single instance of Byzantine Agreement, where the input of each party is determined once, according to which event occurs first:
-
(a)
Upon reliable agreement terminates with some output, enter BA with input 1.
-
(b)
Upon activates , enter with input 0.
-
(a)
-
1.
-
Output:
-
1.
Upon BA terminates with output , terminate and output .
-
2.
Upon BA terminates with output , output the output of reliable agreement and halt.
-
1.
The following theorem is proven in the appendix:
Theorem 3.2.
Protocol 3.1 is a multivalued byzantine agreement protocol, tolerating corrupted parties.
4 BOOST with Statistical Security
We refer to Section 1.2 for an overview of the following protocol.
Protocol 4.1 (BOOST with Statistical Security)
-
Input: Each party enters with an input – a polynomial of degree at most .
-
Initialization: Initialize , , . Moreover, initialize an array of size , and a list .
The protocol:
-
1.
Exchange:
-
(a)
Each party chooses uniformly at random, and send to every the message .
-
(b)
Upon receiving from , set . Moreover, reply with the message .
-
(a)
-
2.
Getting support or send detect:
-
(a)
Upon receiving from , add to the list . If , then add to .
-
(b)
Upon , then send to all parties the message .
-
(c)
Upon containing the same evaluation from at least parties, send to all the parties.
-
(d)
Upon receiving messages such that and , then set . Send to each the message .
-
(e)
Upon receiving messages such that or , then send to all parties.
-
(a)
-
3.
Reconstruction:
-
(a)
Upon receiving messages with the same , and did not previously send message, then send to all. If , then send message to all (if not sent yet).
-
(b)
Upon receiving a message then add to . If , then add to . (recall that upon then sends message to all.)
-
(c)
Upon , and for points in , then set ; Send to all.
-
(a)
-
4.
Have output and termination:
-
(a)
Upon receiving messages from distinct parties, send to all.
-
(b)
Upon receiving messages from distinct parties, send message to all.
-
(a)
-
5.
Detection:
-
(a)
Upon receiving messages from distinct parties, and if not sent message yet, send to all.
-
(b)
Upon receiving messages from distinct parties, set the output tape .
-
(a)
-
6.
Setting output:
-
(a)
Upon receiving messages from distinct parties, then: If then set . Otherwise set .
-
(a)
-
1.
The following theorem is proven in the appendix:
5 BOOST with Perfect Security
In this section, we show how to implement the BOOST protocol for the perfect setting. We already provided an overview for this protocol in Section 1.2, and so we provide the formal description next.
5.1 The Entire Protocol
Protocol 5.1 (BOOST with Perfect Security)
-
Input: Each party starts with of degree at most over .
-
Initialization: The following variables are shared between the different sub-protocols. Initialize . Initialize .
-
Output: The protocol does not terminate, but each party might eventually write to the output tapes or (or both).
Sub-Protocol 5.2 (Exchange Phase)
-
1.
Send to each the message .
-
2.
Upon receiving from :
-
(a)
Add the points to and to .
-
(b)
If , run , and set .
-
(c)
If or then add to .
-
(a)
-
3.
Upon send to all.
-
4.
Upon receiving message from , add to .
Sub-Protocol 5.3 (Filter Phase)
-
1.
Upon adding a polynomial to :
-
(a)
Let .
-
(b)
Upon , then send to all parties. If , then send to all. Moreover, note that each party sends at most two messages.
-
(a)
-
2.
Upon receiving from , add to .
-
3.
Upon (a) ; (b) agrees with points in , then add to .
-
4.
Upon a polynomial added to , but , then send to all.
Sub-Protocol 5.4 (Detect Simple Conflicts)
-
1.
Upon adding a polynomial to :
-
(a)
Send to each party the message .
-
(b)
If , then send message to all.
-
(a)
-
2.
Upon receiving from , add to .
-
3.
Upon (a) ; (b) containing from at least distinct parties, then add to .
Sub-Protocol 5.5 (Resolve Conflicts)
-
1.
Upon adding a polynomial to :
-
(a)
Send to each party the message .
-
(a)
-
2.
Upon , send to all.
-
3.
Upon receiving first from , add to . (If a party sends more than one point, add to only the first point it sent.)
-
4.
Upon containing messages from distinct parties:
-
(a)
Let .
-
(b)
If then
-
i.
Find for the first integer for which , i.e., is different for every polynomial in .
-
ii.
Send to all parties .
-
iii.
Upon
-
A.
receiving responses from distinct parties, that all agree on ;
-
B.
; and
-
C.
:
Set to be that unique polynomial .
-
A.
-
i.
-
(c)
Upon seeing from : if there exists and you did not yet respond with then send .
-
(d)
Upon (a) ; (b) ; (c) : set .
-
(a)
Sub-Protocol 5.6 (Totality and Abundance Phase)
-
1.
Upon , set to all.
-
2.
Upon receiving from distinct parties, send to all.
-
3.
Upon receiving messages from distinct parties, and did not send message yet, send to all.
-
4.
Upon receiving messages from distinct parties, set if and set otherwise.
Sub-Protocol 5.7 (Detection)
-
1.
Upon receiving message, send to all.
-
2.
Upon receiving messages from distinct parties, set .
In Section 5.2 we prove the following theorem:
Theorem 5.1.
The theorem is proven by explicitly specifying the properties each sub-protocol achieves. We provide a formal proof for those sub-protocols in the full version [2].
Claim 5.2.
Sub-protocol 5.2 (Exchange phase) satisfies the following properties:
-
1.
Validity: If all honest start with the same input , then no honest send message and eventually all honest add to .
-
2.
Locally small: Each honest party adds no more than polynomials to .
-
3.
Boost: If there exists a set of at least honest parties that start with the same polynomial , then each honest party eventually adds to its .
-
4.
Detect: If there is no set of honest parties with the same polynomial, then all honest parties eventually detect.
Claim 5.3.
Sub-Protocol 5.3 (Filter phase) satisfies the following properties:
-
1.
Validity: if all honest parties have in their input, then no honest party detects, and each honest party eventually adds to . Moreover, no other polynomial is ever added to .
-
2.
Detect or correct: If there exists a set of honest parties that start with the same input , then each honest party eventually has . Moreover, honest parties that do not hold as input will detect.
Now the problem is that we may get two polynomials in . The above protocol guarantees that any input party will detect, but they are the minority so we may just get just detects from this.
The next step makes sure that if all honest eventually have and some honest adds to with then at least additional parties that started with detect. For a total desired honest detections.
Claim 5.4.
Sub-protocol 5.4 (Detect Simple Conflicts) satisfies the following properties:
-
1.
Validity: If all honest eventually have then no honest detects and eventually all honest have .
-
2.
Detect or correct: Assume there exists a set of honest parties that hold the same as input. Then; (a) all honest parties eventually add to , (b) if some honest party adds to with , then all honest parties eventually detect.
So now the remaining problem is if all honest that add to have .
The next protocol handles this case. First, it makes sure that the parties with will see in in a new List Decoding, then it resolves this by having them choose a new index where .
Claim 5.5.
Sub-protocol 5.5 (Resolve conflicts) satisfies the following properties:
-
1.
Validity: If all honest parties eventually have , then all eventually set .
-
2.
Detect or correct: If all honest eventually have , all honest will eventually have set , or honest parties eventually detect.
Claim 5.6.
Sub-Protocol 5.6 (Totality and Abundance Phase) The protocol satisfies the following properties:
-
1.
Totality: If an honest set output then all will eventually set output.
-
2.
Abundance: If an honest set output then at least must have .
-
3.
Validity: If all honest set , then all will set output .
Claim 5.7.
Sub-protocol 5.7 (Detection phase) satisfies the following conditions:
-
1.
If parties set , then at least one honest party initiated a message throughout the protocol.
-
2.
If honest parties initiate message, then all honest parties eventually set .
5.2 Putting it All Together: Proving Theorem 5.1
Theorem 5.8 (Theorem 5.1, restated).
Proof.
We show that each of the properties must hold.
Validity.
We show that if all honest parties start with the same input , then honest parties do not detect, and at least honest parties output and the rest output .
-
1.
From the validity condition of Claim 5.2, no honest party detects in that subprotocol, and eventually all honest parties add to .
-
2.
From the validity condition of Claim 5.3, no honest party detects, and each party eventually have .
-
3.
From the validity condition of Claim 5.4, all honest parties eventually have and do not trigger detect.
-
4.
From the validity condition of Claim 5.5, all honest parties eventually set .
-
5.
From the validity condition of Claim 5.6, when all honest parties set , then all set output .
-
6.
If one honest party sets output , then from the Abundance condition of Claim 5.6, at least honest parties must have . The only value that this could be is . The rest (which might not have ) set their output to .
Set output.
If an honest party sets its output, then all honest parties eventually set output – this follows directly from the abundance condition in Claim 5.6.
Detect.
If there is no set of honest parties with the same input, then all honest parties eventually detect. This follows directly from the detect condition in Claim 5.2.
Detect or correct.
We show that if at least honest parties hold the same polynomial as input, then (a) either eventually all honest parties detect; or (b) honest parties set their output to and the remaining set output to .
We show that if there is no detect, then honest parties set their output to , and the remaining set to :
-
1.
From the boost condition in Claim 5.2, all honest parties eventually add to .
-
2.
From the detect or correct condition of Claim 5.3, each honest party eventually has . Moreover, honest parties that do not hold as input trigger detect. However, we assume that those are less than parties.
-
3.
From the detect or correct condition of Claim 5.4, then all honest parties eventually add to ; moreover, if some honest party adds to with , then all honest parties detect. Therefore, since we assume that there is no detect, the only polynomials that could be added to must satisfy .
-
4.
From the detect or liveness property of Claim 5.5, if all honest parties eventually have , then all honest parties eventually set . Moreover, from detect or correct, if some party sets to be , then all honest parties must detect. Assuming no detect, we must conclude that all honest parties set .
-
5.
From the validity condition of Claim 5.6, when all honest parties set , then all set output .
-
6.
If one honest party sets output , then from the Abundance condition of Claim 5.6, at least honest parties must have . We showed that if this value is not , then we must eventually detect. Moreover, the rest (which might not have yet) set their output to .
Efficiency.
From Claim 5.2, each party has at most polynomials in . This bounds all the potential points that a party might send, and by inspection, each party sends at most points on to every other party. We conclude that all honest parties send/receive bits. In case of , the protocol requires encoding the input as polynomials, and requires communication.
References
- [1] Ittai Abraham and Gilad Asharov. Gradecast in synchrony and reliable broadcast in asynchrony with optimal resilience, efficiency, and unconditional security. In PODC ’22: ACM Symposium on Principles of Distributed Computing, 2022, pages 392–398. ACM, 2022. doi:10.1145/3519270.3538451.
- [2] Ittai Abraham and Gilad Asharov. ABEL: Perfect asynchronous byzantine extension from list-decoding. Cryptology ePrint Archive, Paper 2025/1488, 2025. URL: https://eprint.iacr.org/2025/1488.
- [3] Ittai Abraham, Gilad Asharov, and Anirudh Chandramouli. Simple is COOL: graded dispersal and its applications for byzantine fault tolerance. In Raghu Meka, editor, 16th Innovations in Theoretical Computer Science Conference, ITCS 2025, January 7-10, 2025, Columbia University, New York, NY, USA, volume 325 of LIPIcs, pages 1:1–1:20. Schloss Dagstuhl – Leibniz-Zentrum für Informatik, 2025. doi:10.4230/LIPIcs.ITCS.2025.1.
- [4] Ittai Abraham, Gilad Asharov, Shravani Patil, and Arpita Patra. Asymptotically free broadcast in constant expected time via packed VSS. In Theory of Cryptography - 20th International Conference, TCC 2022, volume 13747 of Lecture Notes in Computer Science, pages 384–414. Springer, 2022. doi:10.1007/978-3-031-22318-1_14.
- [5] Ittai Abraham, Naama Ben-David, and Sravya Yandamuri. Efficient and adaptively secure asynchronous binary agreement via binding crusader agreement. In Proceedings of the 2022 ACM Symposium on Principles of Distributed Computing, PODC’22, pages 381–391, New York, NY, USA, 2022. Association for Computing Machinery. doi:10.1145/3519270.3538426.
- [6] Ittai Abraham, T.-H. Hubert Chan, Danny Dolev, Kartik Nayak, Rafael Pass, Ling Ren, and Elaine Shi. Communication complexity of byzantine agreement, revisited. Distributed Comput., 36(1):3–28, 2023. doi:10.1007/s00446-022-00428-8.
- [7] Jinyuan Chen. Optimal error-free multi-valued byzantine agreement. In DISC 2021, volume 209 of LIPIcs, pages 17:1–17:19. Schloss Dagstuhl – Leibniz-Zentrum für Informatik, 2021. doi:10.4230/LIPIcs.DISC.2021.17.
- [8] Jinyuan Chen. Ociormvba: Near-optimal error-free asynchronous mvba, 2024. doi:10.48550/arXiv.2501.00214.
- [9] B. A. Coan and R. Turpin. Extending binary byzantine agreement to multivalued byzantine agreement. Technical report, Massachusetts Institute of Technology, USA, 1984.
- [10] Sourav Das, Zhuolun Xiang, and Ling Ren. Asynchronous data dissemination and its applications. In CCS ’21: 2021 ACM SIGSAC Conference on Computer and Communications Security, pages 2705–2721. ACM, 2021. doi:10.1145/3460120.3484808.
- [11] Sourav Das, Zhuolun Xiang, and Ling Ren. Balanced quadratic reliable broadcast and improved asynchronous verifiable information dispersal. IACR Cryptol. ePrint Arch., page 52, 2022. URL: https://eprint.iacr.org/2022/052.
- [12] Danny Dolev and Rüdiger Reischuk. Bounds on information exchange for byzantine agreement. In ACM SIGACT-SIGOPS Symposium on Principles of Distributed Computing, 1982, pages 132–140. ACM, 1982. doi:10.1145/800220.806690.
- [13] Mose Mizrahi Erbes and Roger Wattenhofer. Extending asynchronous byzantine agreement with crusader agreement, 2025. doi:10.48550/arXiv.2502.02320.
- [14] Hanwen Feng, Zhenliang Lu, Tiancheng Mai, and Qiang Tang. Faster hash-based multi-valued validated asynchronous byzantine agreement. Cryptology ePrint Archive, Paper 2024/479, 2024. to apper in DSN 25. URL: https://eprint.iacr.org/2024/479.
- [15] Matthias Fitzi and Martin Hirt. Optimally efficient multi-valued byzantine agreement. In Proceedings of the Twenty-Fifth Annual ACM Symposium on Principles of Distributed Computing, PODC ’06, pages 163–168, New York, NY, USA, 2006. Association for Computing Machinery. doi:10.1145/1146381.1146407.
- [16] Venkatesan Guruswami. Algorithmic results in list decoding. Found. Trends Theor. Comput. Sci., 2(2):107–195, January 2007. doi:10.1561/0400000007.
- [17] Yuan Lu, Zhenliang Lu, Qiang Tang, and Guiling Wang. Dumbo-mvba: Optimal multi-valued validated asynchronous byzantine agreement, revisited. In Proceedings of the 39th Symposium on Principles of Distributed Computing, PODC ’20, pages 129–138, New York, NY, USA, 2020. Association for Computing Machinery. doi:10.1145/3382734.3405707.
- [18] Achour Mostéfaoui, Hamouma Moumen, and Michel Raynal. Signature-free asynchronous binary byzantine consensus with t < n/3, o(n2) messages, and o(1) expected time. J. ACM, 62(4), September 2015. doi:10.1145/2785953.
- [19] Kartik Nayak, Ling Ren, Elaine Shi, Nitin H. Vaidya, and Zhuolun Xiang. Improved Extension Protocols for Byzantine Broadcast and Agreement. In Hagit Attiya, editor, 34th International Symposium on Distributed Computing (DISC 2020), volume 179 of Leibniz International Proceedings in Informatics (LIPIcs), pages 28:1–28:17, Dagstuhl, Germany, 2020. Schloss Dagstuhl – Leibniz-Zentrum für Informatik. doi:10.4230/LIPIcs.DISC.2020.28.
- [20] Madhu Sudan. Decoding of reed solomon codes beyond the error-correction bound. J. Complex., 13(1):180–193, March 1997. doi:10.1006/jcom.1997.0439.
Appendix A Omitted Proofs for Section 2
Theorem A.1 (Theorem 2.6, restated).
Protocol 2.3 is a reliable agreement protocol tolerating corrupted parties. It requires communication for an input of size .
Proof.
We show that each one of the properties hold:
-
Termination: A party terminates only after the dissemination terminates. As guaranteed by dissemination, if one party terminates, then all honest parties eventually terminate.
-
Validity: If all honest parties enter the protocol with the same input , then dispersal is guaranteed to terminate, and at least honest parties terminate with the same output , and the rest terminate with . The validity of dissemination then guarantees that all honest parties terminate and output .
-
Agreement: Assume an honest party terminates the protocol with output . This implies that dispersal must have terminated. Dispersal guarantees weak agreement – if an honest party terminates, then at least honest parties terminates with the same polynomial , and the rest might terminate with either or . The parties then run dissemination, which then guarantees that all honest parties terminate with the output . It thus hold that , and that all honest parties must terminate with .
Appendix B Omitted Proofs for Section 3
Theorem B.1 (Theorem 3.2, restated).
Protocol 3.1 is a multivalued byzantine agreement protocol, tolerating corrupted parties.
Proof.
We show that each one of the properties hold.
Validity.
If all honest parties start with the same input , then:
-
The validity property of BOOST (Definition 3.1) guarantees that no honest party triggers ; moreover, all honest parties must eventually set .
-
The validity property of data dissemination then guarantees that all parties eventually set .
-
The validity reliable agreement guarantees that all honest parties must receive as output.
-
We get that no honest party enters to the Byznatine Agreement, as no honest party ever set . All honest parties start the BA with the same input . The validity property of BA then guarantees that all honest parties must output .
-
All honest parties output the output of the second dissemination, i.e., .
Termination.
To show termination, we show that the parties must eventually enter the BA.
To show that the parties must eventually enter the BA, we have three cases to consider:
-
1.
If all honest parties hold the same input , then as guaranteed from the validity property, all terminate, and in particular also enter the BA.
-
2.
If there is no set of honest parties with the same input , then the detect property of BOOST guarantees that all honest parties eventually activate detect. Therefore, all honest parties must eventually enter the BA (some might enter earlier with different input).
-
3.
If there is a set of honest parties with the same input , then the detect or correct property of guarantees that either:
-
(a)
Detect: Eventually, all honest parties activate their detect output tape. In that case, parties have input to the BA.
-
(b)
Correct: At least honest parties set their output tape to and the remaining to . The validity of dissemination (Definition 2.3) property then guarantees that all honest parties must terminate with output . The protocol then proceeds to reliable agreement, which now its validity guarantees that all output . We conclude that all honest parties eventually can enter the BA with 1.
-
(a)
Agreement.
We show that all honest parties must have the same output. In particular, this follows from BA: all honest parties must receive the exact same output from BA. There are two cases:
-
If the output is , then all honest parties terminate and output .
-
If the output is , then there exists an honest party that inputs 1 to the BA. A party inputs 1 to the BA only if its reliable agreement terminated. If an honest party terminates the reliable agreement, then all honest parties would eventually terminate the reliable agreement with some output , then eventually all honest parties terminate with output .
Appendix C Omitted Proofs for Section 4
Theorem C.1 (Theorem 4.1, restated).
Proof.
We show that the protocol satisfies all those properties.
Validity.
If all honest parties enter with the same polynomial , then no matter what challenge each party chooses, the parties will agree with each other. Each party might add to only corrupted parties, and thus . Each party never sends message on a value that is not on , and each party sees support messages to points on . Therefore, each party sends to each . Each receives messages with the same value, and therefore sends to all. Each party will eventually see points on , and the unique decoding is exactly . Therefore, each party eventually sets , and send message.
However, parties might set output before setting . A party sets its output when receiving messages. This implies that honest parties sent a message. A party sends a message if it received messages, or if it received messages. In the latter case, sent messages; In the former case, this implies that at least one honest party initiated a message – which again implies that there are honest parties that sent message. We showed that all honest parties eventually set , send message, and therefore when a party sets its output, there are at least honest parties that already set , and the rest would set their output to .
We also claim that no honest party send message. An honest party might send such a message in the following cases:
-
1.
. However, since all honest parties agree with their exchange messages, a party might add to only corrupted parties, and therefore .
-
2.
A party sends a detect message if it receives messages such that or . However, an honest party sends only after seeing at least messages with the same . Since all honest parties have the same input, the only value that can reach cardinality is a value on . Therefore, the only for which , or are messages from corrupted parties, and therefore it can receive at most of those.
-
3.
An honest party might send upon receiving messages with the same , but . As previously, honest parties send messages only on values on , and therefore no other value can reach cardinality .
-
4.
Once again, parties add to if they receive for which . However, since all honest parties send only on values on , never reaches cardinality .
We conclude that no honest party ever sends message.
Set output.
An honest party sets its output only after receiving messages from distinct parties. This implies that honest parties must send messages. Those parties send that message to all parties, and therefore each honest party must eventually receive messages, and thus also send messages. As a result, each honest party must eventually receive messages from distinct parties, and set its output.
Bad event.
Before proceeding to show the detect or correct property that and the detect property, we first define a bad event. let denote the event in which and hold input , respectively, but chooses such that . In that case, might not recognize that does not hold the same polynomial. We can bound . This is because the two polynomials agree on points, and chooses its challenge uniformly at random. Moreover, let denote the event in which there exists some for which occurs. We have that
We note that here we assume that the adversary must choose the input of all honest parties before the protocol starts. To handle adaptive inputs, a variant with additional rounds are needed (see [1]). Since our goal with statistical security is as a warm-up to the perfect security case, we defer this variation to a full version. We proceed with the analysis assuming that does not occur.
Detect or correct.
We assume that honest parties start with the same input . We show that, unless there is a detection, at least honest parties set their output to , and the rest set their output to .
There are two cases to consider:
-
1.
Suppose some honest party receives messages such that previously sent and . Then, we show that all honest parties eventually detect.
Specifically, if an honest party sees such messages, then honest parties sent to all. All honest parties would see those messages, specifically also the parties that hold . Due to Step 2e, they would see values for which , and thus would send to all. Since parties hold , honest parties send , which leads to all parties detect.
-
2.
No honest parties gets support on a value . Clearly, all honest parties must receive messages : Each honest party sends to all parties; it would receive from the parties in the same value , and thus send to all. The honest parties holding would eventually receive messages (with difference indices ), and therefore all would send to each . According to our assumption, no other value receives , therefore, all messages honest parties send are on . Each party would receive with the same value, and therefore would send to all. The only polynomial that can be decoded is .
Detect.
We show that if there is no set of honest parties that hold the same polynomial, and assuming that does not occur, then all honest parties set . Since there is no common input for honest parties, each honest party must hold a different input than at least parties. Assuming that does not occur, each party adds at least indices to its set, and eventually send message. All honest parties eventually send , and activate .
