BFT Protocol Forensics
Abstract.
Byzantine fault-tolerant (BFT) protocols allow a group of replicas to come to consensus even when some of the replicas are Byzantine faulty. There exist multiple BFT protocols to securely tolerate an optimal number of faults under different network settings. However, if the number of faults exceeds then security could be violated. In this paper we mathematically formalize the study of forensic support of BFT protocols: we aim to identify (with cryptographic integrity) as many of the malicious replicas as possible and in as distributed manner as possible. Our main result is that forensic support of BFT protocols depends heavily on minor implementation details that do not affect the protocol’s security or complexity. Focusing on popular BFT protocols (PBFT, HotStuff, Algorand) we exactly characterize their forensic support, showing that there exist minor variants of each protocol for which the forensic supports vary widely. We show strong forensic support capability of LibraBFT, the consensus protocol of Diem cryptocurrency; our lightweight forensic module implemented on a Diem client is open-sourced (Anonymized, 2020) and is under active consideration for deployment in Diem. Finally, we show that all secure BFT protocols designed for replicas communicating over a synchronous network forensic support is inherently nonexistent; this impossibility result holds for all BFT protocols and even if one has access to the states of all replicas (including Byzantine ones).
1. Introduction
Byzantine Fault Tolerant (BFT) protocols, guaranteeing distributed consensus among parties that follow the protocol, are a corner stone of distributed system theory. In the relatively recent context of blockchains, BFT protocols have received renewed attention; new and efficient (state machine replication (SMR)) BFT protocols specifically designed for blockchains have been constructed (e.g., Algorand (Gilad et al., 2017), HotStuff (Yin et al., 2019), Streamlet (Chan and Shi, 2020)). The core theoretical security guarantee is that as long as a certain fraction of nodes are “honest”, i.e., they follow the protocol, then these nodes achieve consensus with respect to (a time evolving) state machine regardless of the Byzantine actions of the remaining malicious nodes. When the malicious nodes are sufficiently numerous, e.g., strictly more than a fraction of nodes in a partially synchronous network, they can “break security”, i.e., band together to create different views at the honest participants.
In this paper, we are focused on “the day after” (contributors, 2020): events after malicious replicas have successfully mounted a security breach. Specifically, we focus on identifying which of the participating replicas acted maliciously; we refer to this action as “forensics”. Successful BFT protocol forensics meets two goals:
-
•
identify as many of the nodes that acted maliciously as possible with an irrefutable cryptographic proof of culpability;
-
•
identification is conducted as distributedly as possible, e.g., by the individual nodes themselves, with no/limited communication between each other after the security breach.
Main contributions. Our central finding is that the forensic possibilities crucially depend on minor implementation details of BFT protocols; the details themselves do not affect protocol security or performance (latency and communication complexity); we demonstrate our findings in the context of several popular BFT protocols for Byzantine Agreement (BA). We present our findings in the context of a mathematical and systematic formulation of the “forensic support” of BFT protocols. The forensic support of any BFT protocol is parameterized as a triplet , that represents the aforementioned goals of forensic analysis. The triplet along with traditional BFT protocol parameters of is summarized in Table 1. We emphasize that each of the protocol variants is safe and live when (here for all the protocols considered) but their forensic supports are quite different.
Symbol | Interpretation |
total number of replicas | |
maximum number of faults for obtaining agreement and termination | |
actual number of faults | |
maximum number of Byzantine replicas under which forensic support can be provided | |
the number of different honest replicas’ transcripts needed to guarantee a proof of culpability | |
the number of Byzantine replicas that can be held culpable in case of an agreement violation |
Protocols | Forensic Support | Parameters | ||
PBFT-PK | ||||
HotStuff-view | Strong | |||
VABA | ||||
HotStuff-hash | Medium | |||
PBFT-MAC | ||||
HotStuff-null | None | |||
Algorand |
Security attacks on BFT protocols can be far more subtle than simply double voting or overt equivocation (when the culpable replicas are readily identified), and the forensic analysis is correspondingly subtle. This paper brings to fore a new dimension for secure BFT protocol design beyond performance (low latency and low communication complexity): forensic support capabilities.
We analyze the forensic support of classical and state-of-the-art BFT protocols for Byzantine Agreement. Our main findings, all in the settings of safety violation (agreement violation), are the following, summarized in Table 2.
-
•
Parameter . We show that the number of culpable replicas that can be identified is either 0 or as large as . In other words, if at least one replica can be identified then we can also identify the largest possible number, replicas; the only exception is for HotStuff-null, where in a successful safety attack, we can identity the culpability of one malicious replica.
-
•
Parameter . We show that the maximum number of Byzantine replicas allowed for nontrivial forensic support (i.e., ) cannot be more than . Furthermore, any forensic support feasible with is also feasible with being its largest value , i.e., if forensic support is feasible, then is also feasible.
-
•
Parameter . Clearly at least one replica’s transcript is needed for forensic analysis, so is the least possible value. This suffices for several of the BFT protocol variants. However for HotStuff-hash, needs to be at least for any nontrivial forensic analysis.
-
•
Strong forensic support. The first three items above imply that the strongest possible forensic support is . Further, the BFT protocols in Table 2 that achieve any nontrivial forensic support automatically achieve the strongest possible forensics (the only exception is HotStuff-hash, for which the forensic support we identified is the best possible).
-
•
Impossibility. For certain variants of BFT protocols (PBFT-MAC, HotStuff-null, and Algorand), even with transcripts from all honest replicas, non-trivial forensics is simply not possible, i.e., even if is set to its smallest and set to its largest possible values ( and respectively); again, HotStuff-null allows the culpability of a single malicious replica.
-
•
Practical impact. Forensic support is of immediate interest to practical blockchain systems; we conduct a forensic support analysis of LibraBFT, the consensus protocol in the new cryptocurrency Diem, and show in-built strong forensic support. We have implemented the corresponding forensic analysis algorithm inside of a Diem client and built an associated forensics dashboard; our reference implementation is available open-source (Anonymized, 2020) and is under active consideration for deployment in Diem.
-
•
BFT with . For a secure BFT protocol operating on a synchronous network, the ideal setting is . For every such protocol we show that at most one culpable replica can be identified (i.e., is at most 1) even if we have access to the state of all honest nodes, i.e, .
Outline. We describe our results in the context of related work in §2; to the best of our knowledge, this is the first paper to systematically study BFT protocol forensics. The formal forensic support problem statement and security model is in §3. The forensic support of PBFT, HotStuff and Algorand (and variants) are explored in §4, §5, §6, respectively. Our forensic study of LibraBFT and implementation of the corresponding forensic protocol is the focus of §7. In appendix §A, we present the forensic support analysis for VABA, a state-of-the-art efficient BFT for asynchronous network conditions. The impossibility of forensic support for all BFT protocols operating in the classical synchronous network setting is shown in §B. Our choice of the 5 protocols studied here (PBFT, HotStuff, Algorand, LibraBFT, VABA) is made with the goal of covering a variety of settings: (a) partially synchronous vs asynchronous; (b) authenticated vs non-authenticated; (c) player replaceable vs irreplaceable; (d) chained version vs single-shot version; (e) variants that communicate differing amounts of auxiliary information. Stitching the results across the 5 different protocols into a coherent theory of forensic support of abstract BFT protocols is an exciting direction of future work; this is discussed in §8.
2. Related Work
BFT protocols. PBFT (Castro et al., 1999; Castro and Liskov, 2002) is the first practical BFT SMR protocol in the partially synchronous setting, with quadratic communication complexity of view change. HotStuff (Yin et al., 2019) is the first partially synchronous SMR protocol that enjoys both a linear communication of view change and optimistic responsiveness. Streamlet (Chan and Shi, 2020) is another SMR protocol known for its simplicity and textbook construction. Asynchronous Byzantine agreement is solved by (Abraham et al., 2019a) with asymptotically optimal communication complexity and round number. Synchronous protocols such as (Abraham et al., 2019b, 2020) aim at optimal latency. Algorand (Gilad et al., 2017; Chen and Micali, 2019) designs a committee self-selection mechanism, and the Byzantine agreement protocol run by the committee decides the output for all replicas.
Beyond one-third faults. The seminal work of (Dwork et al., 1988) shows that it is impossible to solve BA when the adversary corrupts one-third replicas for partially synchronous communication (the same bound holds for SMR). In BFT2F (Li and Maziéres, 2007), a weaker notion of safety is defined, and a protocol is proposed such that when the adversary corrupts more than one-third replicas, the weaker notion of safety remains secure whereas the original safety might be violated. However, the weaker notion of safety does not protect the system against common attacks, e.g., double-spending attack in distributed payment systems. Flexible BFT (Malkhi et al., 2019) considers the case where clients have different beliefs in the number of faulty replicas and can act to confirm accordingly. Its protocol works when the sum of Byzantine faults and alive-but-corrupt faults, a newly defined type of faults, are beyond one-third. Two recent works (Xiang et al., 2021; Kane et al., 2021) propose BFT SMR protocols that can tolerate more than one-third Byzantine faults after some specific optimistic period. The goal of these works is to mask the effects of faults, even when they are beyond one-third, quite different from the goals of forensic analysis.
Distributed system forensics. Accountability has been discussed in seminal works (Haeberlen et al., 2007; Haeberlen and Kuznetsov, 2009) for distributed systems in general. In the lens of BFT consensus protocols, accountability is defined as the ability for a replica to prove the culpability of a certain number of Byzantine replicas in (Civit et al., 2019). Polygraph, a new BFT protocol with high communication complexity , is shown to attain this property in (Civit et al., 2019). Reference (Ranchal-Pedrosa and Gramoli, 2020) extends Polygraph to an SMR protocol, and devises a finality layer to “merge” the disagreement. Finality and accountability are also discussed in other recent works; examples include Casper (Buterin and Griffith, 2017), GRANDPA (Stewart and Kokoris-Kogia, 2020), and Ebb-and-flow (Neu et al., 2020). Casper and GRANDPA identify accountability as a central problem and design their consensus protocols around this goal. Ebb-and-flow (Neu et al., 2020) observes that accountability is immediate in BFT protocols for safety violations via equivocating votes; however, as pointed out in (Civit et al., 2019), safety violations can happen during the view change process and this is the step where accountability is far more subtle.
Reference (Civit et al., 2019) argues that PBFT is not accountable and cannot be modified to be accountable without significant change/cost. We point out that the definition of accountability in (Civit et al., 2019) is rather narrow: two replicas with differing views have to themselves be able to identify culpability of malicious replicas. On the other hand, in forensic support, we study the number of honest replicas (not necessarily restricted to the specific two replicas which have identified a security breach) that can identify the culpable malicious replicas. Thus the definition of forensic support is more flexible than the one on accountability. Moreover, our work shows that we can achieve forensic support for protocols such as PBFT and HotStuff without incurring additional communication complexity other than (i) sending a proof of culpability to the client in case of a safety violation, and (ii) the need to use aggregate signatures instead of threshold signatures.
3. Problem Statement and Model
The goal of state machine replication (SMR) is to build a replicated service that takes requests from clients and provides the clients with the interface of a single non-faulty server, i.e., each client receives the same totally ordered sequence of values. To achieve this, the replicated service uses multiple servers, also called replicas, some of which may be Byzantine, where a faulty replica can behave arbitrarily. A secure state machine replication protocol satisfies two guarantees. Safety: Any two honest replicas cannot output different sequences of values. Liveness: A value sent by a client will eventually be output by honest replicas.
SMR setting also has external validity, i.e., replicas only output non-duplicated values sent by clients. These values are eventually learned by the clients. Depending on the context, a replica may be interested in learning about outputs too. Hence, whenever we refer to a client for learning purposes, it can be an external entity or a server replica. A table of notations is in Table 1.
In this paper, for simplicity, we focus on the setting of outputting a single value instead of a sequence of values. The safety and liveness properties of SMR can then be expressed using the following definition:
Definition 3.1 (Validated Byzantine Agreement).
A protocol solves validated Byzantine agreement among replicas tolerating a maximum of faults, if it satisfies the following properties:
-
(Agreement) Any two honest replicas output values and , then .
-
(Validity) If an honest replica outputs , is an externally valid value, i.e., is signed by a client.
-
(Termination) All honest replicas start with externally valid values, and all messages sent among them have been delivered, then honest replicas will output a value.
Forensic support. Traditionally, consensus protocols provide guarantees only when . When , there can be a safety or liveness violation; this is the setting of study throughout this paper. Our goal is to provide forensic support whenever there is a safety violation (or agreement violation) and the number of Byzantine replicas in the system are not too high. In particular, if the actual number of Byzantine faults are bounded by (for some ) and there is a safety violation, we can detect Byzantine replicas using a forensic protocol. The protocol takes as input, the transcripts of honest parties, and outputs and irrefutable proof of culprits. With the irrefutable proof, any party (not necessarily in the BFT system) can be convinced of the culprits’ identities without any assumption on the number of honest replicas. However, if even with transcripts from all honest replicas, no forensic protocol can output such a proof, the consensus protocol has no forensic support (denoted as “None” in Table 2). Note that when we say a protocol has no forensic support, we are referring to an impossibility w.r.t. providing irrefutable proof for culprits (more precisely, in the context of Definition 3.2). In a general sense, there are other ways to provide forensics related to hardware, software, and network except for non-repudiation in the protocol.
To provide forensic support, we consider a setting where a client observes the existence of outputs for two conflicting (unequal) values.111We assume all the (honest) replica outputs are eventually learned by the client. In practice, the client may monitor the outputs by periodically communicating with all replicas. By running a forensic protocol, the client sends (possibly a subset of) these conflicting outputs to all replicas and waits for their replies. Some of these replicas may be “witnesses” and may have (partial) information required to construct the irrefutable proof. After receiving responses from the replicas, the client constructs the proof. We denote by the total number of transcripts from different honest replicas that are stored by the client to construct the proof.
Definition 3.2.
-Forensic Support. If and two honest replicas output conflicting values, then using the transcripts of all messages received from honest replicas during the protocol, a client can provide an irrefutable proof of culpability of at least Byzantine replicas.
Other assumptions. We consider forensic support for multiple protocols each with their own network assumptions. For PBFT and HotStuff, we assume a partially synchronous network (Dwork et al., 1988). For VABA (Abraham et al., 2019a) and Algorand (Chen and Micali, 2019), we suppose asynchronous and synchronous networks respectively.
We assume all messages are digitally signed except for one variant of PBFT (§4.3) that sometimes relies on the use of Message Authenticated Codes (MACs). Some protocols, e.g., HotStuff, VABA, use threshold signatures. For forensic purposes, we assume multi-signatures (Boneh et al., 2018) instead (possibly worsening the communication complexity in the process). Whenever the number of signatures exceeds a threshold, the resulting aggregate signature is denoted by a pair , where is a bitmap indicating whose signatures are included in . We define the intersection of two aggregated messages to be the set of replicas who sign both messages, i.e., . An aggregate signature serves as a quorum certificate (QC) in our protocols, and we will use the two terms interchangeably. We assume a collision resistant cryptographic hash function.
4. Forensic Support for PBFT
PBFT is a classical partially synchronous consensus protocol that provides an optimal resilience of Byzantine faults out of replicas. However, when the actual number of faults exceeds , it does not provide any safety or liveness. In this section, we show that when and in case of a safety violation, the variant of the PBFT protocol (referred to as PBFT-PK) where all messages sent by parties are signed, has the strongest forensic support. Further, we show that for an alternative variant where parties sometimes only use MACs (referred to as PBFT-MAC), forensic support is impossible.
4.1. Overview
We start with an overview focusing on a single-shot version of PBFT, i.e., a protocol for consensus on a single value. The protocol described here uses digital signatures to authenticate all messages and routes messages through leaders as shown in (Ramasamy and Cachin, 2005); however we note that our arguments for PBFT-PK also apply to the original protocol in (Castro et al., 1999).
The protocol proceeds in a sequence of consecutive views denoted as view number . A higher view is a view with a larger view number. Each view has a unique leader. Each view of PBFT progresses as follows:
-
-
Pre-prepare. The leader proposes a NewView message containing a proposal and a status certificate (explained later) to all replicas.
-
-
Prepare. On receiving the first NewView message containing a valid value in a view , a replica sends Prepare for if it is safe to vote based on a locking mechanism (explained later). It sends this vote to the leader. The leader collects such votes to form an aggregate signature prepareQC. The leader sends prepareQC to all replicas.
-
-
Commit. On receiving a prepareQC in view containing message , a replica locks on and sends Commit to the leader. The leader collects such votes to form an aggregate signature commitQC. The leader sends commitQC to all replicas.
-
-
Reply. On receiving commitQC from the leader, replicas output and send a Reply (along with commitQC) to the client.
Once a replica locks on a value in view , we call is the current lock of this replica. And a higher lock is a lock formed in a higher view. With lock , the replica only votes for the value in subsequent views. The only scenario in which it votes for a value is when the status certificate provides sufficient information stating that replicas are not locked on . At the end of a view, every replica sends its lock to the leader of the next view. The next view leader collects such values as a status certificate .
The safety of PBFT follows from two key quorum intersection arguments:
Uniqueness within a view. Within a view, safety is ensured by votes in either round. Since a replica only votes once for the first valid value it receives, by a quorum intersection argument, two conflicting values cannot both obtain commitQC when .
Safety across views. Safety across views is ensured by the use of locks and the status certificate. First, observe that if a replica outputs a value in view , then a quorum of replicas lock on . When , this quorum includes a set of at least honest replicas. For any replica in to update to a higher lock, they need a prepareQC in a higher view , which in turn requires a vote from at least one of these honest replicas in view . However, replicas in will vote for a conflicting value in a higher view only if it is accompanied by a status certificate containing locks that are not on value . When , honest replicas in intersect with honest replicas in at least one replica – this honest replica will not vote for a conflicting value .
4.2. Forensic Analysis for PBFT-PK
The agreement property for PBFT holds only when . When the number of faults are higher, this agreement property (and even termination) can be violated. In this section, we show how to provide forensic support for PBFT when the agreement property is violated. We show that, if two honest replicas output conflicting values and due to the presence of Byzantine replicas, our forensic protocol can detect Byzantine replicas with an irrefutable proof. For each of the possible scenarios in which safety can be violated, the proof shows exactly what property of PBFT was not respected by the Byzantine replicas. The irrefutable proof explicitly uses messages signed by the Byzantine parties, and is thus only applicable to the variant PBFT-PK where all messages are signed.
Intuition. In order to build intuition, let us assume and and start with a simple scenario: two honest replicas output values and in the same view. It must then be the case that a commitQC is formed for both and . Due to a quorum intersection argument, it must be the case that all replicas in the intersection have voted for two conflicting values to break the uniqueness property. Thus, all the replicas in the intersection are culpable. For PBFT-PK, the commitQC (as well as prepareQC) for the two conflicting values act as the irrefutable proof for detecting Byzantine replicas.

When two honest replicas output conflicting values in different views, there are many different sequences of events that could lead to such a disagreement. One such sequence is described in Figure 1. The replicas are split into three sets: the blue set and the green set are honest replicas each of size and the red replicas are Byzantine replicas of size .
-
•
In view , replica outputs due to commitQC formed with the Commit from the honest blue set and the Byzantine red set. At the end of the view, replicas in the blue and red set hold locks whereas the green set holds a lower lock for a different value.
-
•
In the next few views, no higher locks are formed. Thus, the blue and the red set still hold locks .
-
•
Suppose is the first view where a higher lock is formed. At the start of this view, the leader receives locks from the honest green set who hold lower-ranked locks and the Byzantine red set who maliciously send lower-ranked locks. The set of locks received by the leader is denoted by and suppose the highest lock was received for . The leader proposes along with . This can make any honest replica “unlock” and vote for and form quorum certificates in this view.
-
•
In some later view , replica outputs .
With this sequence of events, consider the following questions: (1) Is this an admissible sequence of events? (2) How do we find the culpable Byzantine replicas? What does the irrefutable proof consist of? (3) How many replica transcripts do we need to construct the proof?
To answer the first question, the only nontrivial part in our example is the existence of a view where a higher lock is formed. However, such a view must exist because replica outputs in view and a higher lock must be formed at the latest in view .
For the second question, observe that both the red replicas as well as the green replicas sent locks lower than to the leader in . However, only the red replicas also sent Commit messages for value in view . Thus, by intersecting the set of Commit messages for value in view and the messages forming the status certificate sent to the leader of , we can obtain a culpable set of Byzantine replicas. So the proof for PBFT-PK consists of the commitQC in and the status certificate in , which indicates that the replicas sent a lower lock in view despite having access to a higher lock in a lower view .
For the third question, the NewView message containing the status certificate in view can act as the proof, so only one transcript needs to be stored.
Forensic protocol for PBFT-PK. Algorithm 1 describes the entire protocol to obtain forensic support atop PBFT-PK. For completeness, we also provide a complete description of the PBFT-PK protocol in Algorithm 5. Each replica keeps all received messages as transcripts and maintains a set containing all received NewView messages (line 2). If a client observes the replies of two conflicting values, it first checks if two values are output in the same view (line 9). If yes, then any two commitQC for two different output values can provide a culpability proof for at least replicas (lines 19-22). Otherwise, the client sends a request for a possible proof between two output views (lines 13). Each replica looks through the set for the NewView message in the smallest view such that the status certificate contains the highest lock where and and sends it to the client (line 7). If inside there are conflicting locks in the same view, the intersection of them proves at least culprits (line 15), otherwise the intersection of and the commitQC proves at least culprits (line 18).
The following theorem sharply characterizes the forensic support capability of PBFT-PK. As long as , the best possible forensic support is achieved (i.e., and ). Algorithm 1 can be used to irrefutably detect Byzantine replicas. Conversely, if then no forensic support is possible (i.e., (messages from all honest nodes) and ).
Theorem 4.1.
With , when , if two honest replicas output conflicting values, PBFT-PK provides -forensic support. Further -forensic support is impossible with .
Proof.
We prove the forward part of the theorem below. The converse (impossibility) is proved in §C.1. Suppose the values and are output in views and respectively.
Case .
Culpability. The quorums commitQC for and commitQC for intersect in replicas. These replicas should be Byzantine since the protocol requires a replica to vote for at most one value in a view.
Witnesses. Client can obtain the culpability proof based on two commitQC. No additional communication is needed in this case ().
Case .
Culpability. If , then WLOG, suppose . Since is output in view , it must be the case that replicas are locked on at the end of view (if they are honest). Now consider the first view in which a higher lock is formed (not necessarily known to any honest party) where (possibly ). Such a view must exist since is output in view and a lock will be formed in at least view . Consider the status certificate sent by the leader of view in its NewView message. must contain locks; each of these locks must be from view , and a highest lock among them is .
We consider two cases based on whether the status certificate contains two different highest locks: (i) there exist two locks and s.t. in . (ii) is the only highest lock in . For the first case, since two locks are formed in the same view, the two quorums forming the two locks in view intersect in replicas. These replicas are Byzantine since they voted for more than one value in view .
For the second case, is the only highest lock in the status certificate . intersects with the signers of commitQC in view at Byzantine replicas. These replicas are Byzantine because they had a lock on in view but sent a different lock to the leader of view .
Witnesses. Client can obtain the proof by storing the NewView message containing the status certificate in . Only one witness is needed to provide the NewView message (). The status certificate and the first commitQC act as the irrefutable proof. ∎
Communication complexity. In the first branch of the forensic protocol, Algorithm 1, the client needs to receive one message from replica and the message size is where and stand for the size of a value and an aggregate signature (line 14). In the second branch, the client doesn’t need any message (line 19). Therefore the complexity of the client receiving messages is . Notice that we exclude the communication for learning replica outputs (Reply messages) since that procedure happens before the forensic protocol.
4.3. Impossibility for PBFT-MAC
We now show an impossibility for a variant of PBFT proposed in (Castro et al., 1999, Section 5). The arguments here also apply to the variant in (Castro and Liskov, 2002). Compared to §4.1, the only difference in this variant is (i) Prepare and Commit messages are authenticated using MACs instead of signatures, and (ii) these messages are broadcast instead of routing them through the leader.
Intuition. The key intuition behind the impossibility relies on the absence of digital signatures which were used to “log” the state of a replica when some replica outputs a value. In particular, if we consider the example in Figure 1, while receives Commit messages for value , these messages are not signed. Thus, if Byzantine replicas vote for a different value , can be output by a different replica. The absence of a verifiable proof stating the set of replicas that sent a Commit to replica prevents any forensic analysis. We formalize this intuition below.
Theorem 4.2.
With , when , if two honest replicas output conflicting values, -forensic support is impossible with for PBFT-MAC.
Proof.
Suppose the protocol provides forensic support to detect replicas with irrefutable proof. To prove this result, we construct two worlds where a different set of replicas are Byzantine in each world but a forensic protocol cannot be correct in both worlds. We fix , although the arguments will apply for any .
Let there be four replica partitions . , and is an individual replica. In both worlds, the conflicting outputs are presented in the same view . Suppose the leader is a replica from set .
World 1. Let and be Byzantine replicas in this world. The honest leader from set in view proposes . Parties in , and send Prepare and Commit messages (authenticated with MACs) for value . Due to partial synchrony, none of these messages arrive at . At the end of view , only and one replica in receive enough Commit messages and send replies to the client. So the client receives the first set of replies for value , which contain the same quorum .
The Byzantine parties in and simulate a proposal from the leader for , and the sending of Prepare and Commit messages within and . The simulation is possible due to the absence of a PKI. At the end of view , and obtain enough Commit messages and send replies to the client. Thus, the client receives the second set of replies for value , which contain the same quorum .Client starts the forensic protocol.
During the forensic protocol, Byzantine and only present the votes for , forged votes from as their transcripts. Since parties have output each of and , there is a safety violation. Since the protocol has forensic support for , using these transcripts, the forensic protocol determines some subset of and are culpable.
World 2. Let and (one replica in ) be Byzantine replicas in this world. The Byzantine leader in view proposes to and . They send Prepare and Commit messages (authenticated with MACs) for value . These messages do not arrive at . At the end of view , parties in and output . So the client receives the first set of replies for value , which contain the same quorum .
Similarly, the leader sends to and . The proposal does not arrive at . Only and send Prepare and Commit messages (authenticated with MACs) for , these messages do not arrive at . However, and forge Prepare and Commit messages from . At the end of view , and output . So the client receives the second set of replies for value , which contain the same quorum . Client starts the forensic protocol.
During the forensic protocol, Byzantine and sends the same transcripts as in World 1 by dropping votes for and forging votes from . Again, since parties have output each of and , there is a safety violation. However, observe that the transcript presented to the forensic protocol is identical to that in World 1. Thus, the forensic protocol outputs some subset of and as culpable replicas. In World 2, this is incorrect since replicas in and are honest. This completes the proof.
∎
5. Forensic Support for HotStuff
HotStuff (Yin et al., 2019) is a partially synchronous consensus protocol that provides an optimal resiliency of . The HotStuff protocol is similar to PBFT but there are subtle differences which allow it to obtain a linear communication complexity for both its steady state and view change protocols (assuming the presence of threshold signatures). Looking ahead, these differences significantly change the way forensics is conducted if a safety violation happens.
5.1. Overview
We start with an overview of the protocol. For simplicity, we discuss a single-shot version of HotStuff. The protocol proceeds in a sequence of consecutive views where each view has a unique leader. Each view of HotStuff progresses as follows:222The description of HotStuff protocol is slightly different from the basic algorithm described in (Yin et al., 2019, Algorithm 2) to be consistent with the description of PBFT in §4.1.
-
-
Pre-prepare. The leader proposes a NewView message containing a proposal along with the highQC (the highest prepareQC known to it) and sends it to all replicas.
-
-
Prepare. On receiving a NewView message containing a valid value in a view and a highQC, a replica sends Prepare for if it is safe to vote based on a locking mechanism (explained later). It sends this vote to the leader. The leader collects votes to form an aggregate signature prepareQC in view . The leader sends the view prepareQC to all replicas.
-
-
Precommit. On receiving a prepareQC in view containing message , a replica updates its highest prepareQC to and sends Precommit to the leader. The leader collects such votes to form an aggregate signature precommitQC.
-
-
Commit. On receiving precommitQC in view containing message from the leader, a replica locks on and sends Commit to the leader. The leader collects such votes to form an aggregate signature commitQC.
-
-
Reply. On receiving commitQC from the leader, replicas output the value and send a Reply (along with commitQC) to the client.
Once a replica locks on a given value , it only votes for the value in subsequent views. The only scenario in which it votes for a value is when it observes a highQC from a higher view in a NewView message. At the end of a view, every replica sends its highest prepareQC to the leader of the next view. The next view leader collects such values and picks the highest prepareQC as highQC. The safety and liveness of HotStuff when follows from the following:
Uniqueness within a view. Since replicas only vote once in each round, a commitQC can be formed for only one value when .
Safety and liveness across views. Safety across views is ensured using locks and the voting rule for a NewView message. Whenever a replica outputs a value, at least other replicas are locked on the value in the view. Observe that compared to PBFT, there is no status certificate in the NewView message to “unlock” a replica. Thus, a replica only votes for the value it is locked on. The only scenario in which it votes for a conflicting value is if the leader includes a prepareQC for from a higher view in NewView message. This indicates that at least replicas are not locked on in a higher view, and hence it should be safe to vote for it. The latter constraint of voting for is not necessary for safety, but only for liveness of the protocol.
Variants of HotStuff. In this paper, we study three variants of HotStuff, identical for the purposes of consensus but provide varied forensic support. The distinction among them is only in the information carried in Prepare message. For all three versions, the message contains the message type Prepare, the current view number and the proposed value . In addition, Prepare in HotStuff-view contains , the view number of the highQC in the NewView message. HotStuff-hash contains the hash of highQC (cf. Table 3). HotStuff-hash is equivalent to the basic algorithm described in (Yin et al., 2019, Algorithm 2). HotStuff-null does not add additional information.
HotStuff-view | HotStuff-hash | HotStuff-null | |
Info | |||
5.2. Forensic Analysis for HotStuff
If two conflicting values are output in the same view, Byzantine replicas can be detected using commitQC and using ideas similar to that in PBFT. However, when the conflicting outputs of replicas and are across views and for , the same ideas do not hold anymore. To understand this, observe that the two key ingredients for proving the culpability of Byzantine replicas in PBFT were (i) a commitQC for the value output in a lower view (denoted by for replica ’s reply in Figure 1) and (ii) a status certificate from the first view higher than containing the locks from replicas (denoted by for view in Figure 1). In HotStuff, a commitQC still exists. However, for communication efficiency reasons, HotStuff does not include a status certificate in its NewView message. The status certificate in PBFT provides us with the following:
-
•
Identifying a potential set of culpable replicas. Depending on the contents of and knowing , we could identify a set of Byzantine replicas.
-
•
Determining whether the view is the first view where a higher lock for a conflicting value is formed. By inspecting all locks in , we can easily determine this. Ensuring first view with a higher lock is important; once a higher lock is formed, even honest replicas may update their locks and the proof of Byzantine behavior may not exist in the messages in subsequent views.

Let us try to understand this based on the first view where a higher prepareQC is formed for (see Figure 2). The set of replicas who sent Prepare (the red ellipse) in and formed a prepareQC are our potential set of Byzantine replicas. Why? If is indeed the first view in which a higher prepareQC is formed, then all of these replicas voted for a NewView message containing a highQC from a lower or equal view on a different value. If any of these replicas also held a lock (by voting for replica ’s output) then these replicas have output the culpable act of not respecting the voting rule.
The only remaining part is to ensure that this is indeed the first view where a higher conflicting prepareQC is formed. The way to prove this is also the key difference among three variants of HotStuff. For HotStuff-view, prepareQC contains , which explicitly states the view number of highQC in the NewView message they vote for. If , prepareQC provides an irrefutable proof for culpable behavior. For HotStuff-hash, the hash information contained in Prepare provides the necessary link to the NewView message they vote, so once the linked NewView message is accessible, the prepareQC and NewView together serve as the proof for culpable behavior. However for HotStuff-null, even if we receive both prepareQC and NewView messages that are formed in the same view, no proof can be provided to show a connection between them. A Byzantine node vote for the first higher prepareQC can always refuse to provide the NewView message they receive.
Thus, to summarize, the red set of replicas in view are a potential set of culpable nodes of size . The irrefutable proof to hold them culpable constitutes two parts, (1) the first prepareQC containing their signed Prepare messages, and (2) a proof to show this is indeed the first view. In the next two subsections we will introduce the forensic protocols for HotStuff-view and HotStuff-hash to provide different forensic supports, and how it is impossible for HotStuff-null to provide forensic support.
5.3. Forensic Protocols for HotStuff-view and HotStuff-hash
-
(1)
, and
-
(2)
-
(1)
, and
-
(2)
Forensic protocol for HotStuff-view. Algorithm 2 describes the protocol to obtain forensic support atop HotStuff-view. A complete description of the general HotStuff protocol is also provided in Algorithm 6. Each replica keeps all received messages as transcript and maintains a set containing all received prepareQC from Precommit messages and highQC from NewView messages (line 2). If a client observes outputs of two conflicting values in the same view, it can determine the culprits using the two Reply messages (line 15). Otherwise, the client sends a request to all replicas for a possible proof between two output views for (line 12). Each replica looks through the set for prepareQC formed in views . If there exists a prepareQC whose value is different from the value output in and whose is less than or equal to , it sends a reply with this prepareQC to the client (line 6). The client waits for a prepareQC (line (1)) formed between two output views. For HotStuff-view, if it contains a different value from the first output value and an older view number , the intersection of this prepareQC and the commitQC from the Reply message in the lower view proves at least culprits (line 14).
Forensic protocol for HotStuff-hash. Algorithm 3 describes the protocol to obtain forensic support atop HotStuff-hash, which is similar to the protocol for HotStuff-view. For replicas running HotStuff-hash, besides , they also maintains the set for received NewView messages (line 3). When receiving a forensic request from clients, replicas look through for prepareQC formed in views and send all prepareQC whose values are different from the value to the client (line 7). Besides, they also look through for a NewView message formed in views and send all NewView proposing a value different from and containing a highQC with view number (line 10). For HotStuff-hash, when receiving such a NewView for different values, the message will be stored temporarily by the client until a prepareQC for the NewView message with a matching hash is received. The NewView and the prepareQC together form the desired proof; the intersection of the prepareQC and the commitQC provides at least culprits.
Forensic proofs. The following theorems characterize the forensic support capability of HotStuff-view and HotStuff-hash. As long as , HotStuff-view can achieve the best possible forensic support (i.e., and ). HotStuff-hash can achieve a medium forensic support (i.e., and ). Conversely, if then no forensic support is possible for both protocols (i.e., and ).
Theorem 5.1.
With , when , if two honest replicas output conflicting values, HotStuff-view provides -forensic support. Further -forensic support is impossible with .
Proof.
We prove the forward part of the theorem below. The proof of converse (impossibility) is the same as §C.1. Suppose two conflicting values are output in views , respectively.
Case .
Culpability. The commitQC of and commitQC of intersect in replicas. These replicas should be Byzantine since the protocol requires a replica to vote for at most one value in a view.
Witnesses. Client can obtain a proof based on the two Reply messages, so additional witnesses are not necessary in this case.
Case .
Culpability. If , then WLOG, suppose . Since is output in view , it must be the case that replicas are locked on at the end of view . Now consider the first view in which a higher lock is formed where (possibly ). Such a view must exist since is output in view and a lock will be formed in at least view . For a lock to be formed, a higher prepareQC must be formed too. Consider the first view in which the corresponding prepareQC for is formed. The leader in broadcasts the NewView message containing a highQC on . Since this is the first time a higher prepareQC is formed and there is no higher prepareQC for formed between view and , we have . The formation of the higher prepareQC indicates that replicas received the NewView message proposing with highQC on and consider it a valid proposal, i.e., the view number is larger than their locks because the value is different.
Recall that the output value indicates replicas are locked on at the end of view . In this case, the votes in prepareQC in view intersect with the votes in commitQC in view at Byzantine replicas. These replicas should be Byzantine because they were locked on the value in view and vote for a value in a higher view when the NewView message contained a highQC from a view . Thus, they have violated the voting rule.
Witnesses. Client can obtain a proof by storing a prepareQC formed between and , whose value is different from and whose . So only one witness is needed (, the prepareQC and the first commitQC act as the irrefutable proof. ∎
Theorem 5.2.
With , when , if two honest replicas output conflicting values, HotStuff-hash provides -forensic support. Further -forensic support is impossible with .
Proof.
We prove the forward part of the theorem below. The proof of converse (impossibility) is the same as §C.1. Suppose two conflicting values are output in views , respectively.
Case . Same as Theorem 5.1.
Case .
Culpability. Same as Theorem 5.1.
Witnesses. Since prepareQC of HotStuff-hash only has the hash of highQC, the irrefutable proof contains the NewView message that includes the highQC and the corresponding prepareQC with the matching hash . The client may need to store all NewView messages between and whose value is different from and the whose highQC is formed in , until receiving a prepareQC for some NewView message with a matching hash. In the best case, some replica sends both the NewView message and the corresponding prepareQC so the client only needs to store replica’s transcript. In the worst case, we can prove that any messages of transcript are enough to get the proof. Consider the honest replicas who receive the first prepareQC and the NewView message. replicas have access to the prepareQC and replicas have access to the NewView message. Among them at least replicas have access to both messages, and we assume they are all Byzantine. Then at least honest replicas have the prepareQC and at least honest replicas have the NewView message. The total number of honest replicas . Thus among any honest replicas, at least one have NewView message and at least one have prepareQC. Therefore, transcripts from honest replicas ensure the access of both NewView message and prepareQC and thus guarantee the irrefutable proof.
∎
Communication complexity. In line (1) of Algorithm 2, the client needs to receive one message from replica and the message size is where and stand for the size of a value and an aggregate signature. Therefore the complexity of the client receiving messages is for HotStuff-view. As for HotStuff-hash, theorem 5.2 shows that in the worst case, the client needs to receive messages from replicas. Each of those replicas sends one message of size where stands for the size of a hash value. Therefore the complexity of the client receiving messages is for HotStuff-hash.
5.4. Impossibility for HotStuff-null
Compared to the other two variants, in HotStuff-null, Prepare message and prepareQC are not linked to the NewView message. We show that this lack of information is sufficient to guarantee impossibility of forensics.
Intuition. When , from the forensic protocols of HotStuff-view and HotStuff-hash, we know that given across-view and (ordered by view) and the first prepareQC higher than , the intersection of prepareQC and contains at least Byzantine replicas. The intersection argument remains true for HotStuff-null, however, it is impossible for a client to decide whether prepareQC is the first one only with the transcripts sent by honest replicas (when ). In an execution where there are two prepareQC in view and respectively (), the Byzantine replicas (say, set ) may not respond with the prepareQC in . The lack of information disallows a client from separating this world from another world is indeed honest and sharing all the information available to them. We formalize this intuition in the theorem below.
Theorem 5.3.
With , when , if two honest replicas output conflicting values, -forensic support is impossible with for HotStuff-null. Further, -forensic support is impossible with .
The theorem is proved in §C.2.
6. Forensic Support for Algorand
Algorand (Chen and Micali, 2019) is a synchronous consensus protocol which tolerates up to one-third fraction of Byzantine users. At its core, it uses a BFT protocol from (Micali, 2018; Chen et al., 2018). However, Algorand runs the protocol by selecting a small set of replicas, referred to as the committee, thereby achieving consensus with sub-quadratic communication. The protocol is also player replaceable, i.e., different steps of the protocol have different committees, thus tolerating an adaptive adversary. Each replica uses cryptographic self-selection using a verifiable random function (VRF) (Micali et al., 1999) to privately decide whether it is selected in a committee. The VRF is known only to the replica until it has sent a message to other parties thus revealing and proving its selection in the committee. In this section, we present an overview of the BFT protocol and then show why it is impossible to achieve forensic support for this protocol.
6.1. Overview
We start with an overview of the single-shot version of Algorand (Chen and Micali, 2019). The protocol assumes synchronous communication, where messages are delivered within a known bounded time. The protocol proceeds in consecutive steps, each of which lasts for a fixed amount of time that guarantees message delivery. Each step has a self-selected committee, and a replica can compute its VRF, a value that decides whether it is selected in the committee, and it is known only by the replica itself until it has sent the value. All messages sent by a committee member is accompanied by a VRF thus allowing other replicas to verify its inclusion in the committee. Parameters such as committee size are chosen such that the number of honest parties in the committee is greater than a threshold with overwhelming probability.
The BFT protocol is divided into two sub-protocols: Graded Consensus and . In Graded Consensus, which forms the first three steps of the protocol, each replica inputs its value . Each replica outputs a tuple containing a value and a grade . In an execution where all replicas start with the same input , and for all replicas . The replicas then enter the next sub-protocol, denoted . If , replica inputs value , otherwise it inputs . At the end of , the replicas agree on the tuple or .333 is considered external valid in Algorand. The sub-protocol also uses a random coin; for simplicity, we assume access to an ideal global random coin. Our forensic analysis in the next section only depends on and thus, we only provide an overview for here. The protocol proceeds in the following steps,
-
•
Steps 1-3 are Graded Consensus. At the end of Graded Consensus, each replica inputs a value and a binary value to .
-
•
Step 4. Each replica in the committee broadcasts its vote for along with its VRF.
-
•
Step () is the Coin-Fixed-To-0 step of . In this step, a replica checks Ending Condition 0: if it has received valid votes on from the previous step, where , it outputs and ends its execution. Otherwise, it updates as follows:
If the replica is in the committee based on its VRF, it broadcasts its vote for along with the VRF.
-
•
Step (). Symmetric to the previous step but for bit instead of . Also, the votes need not be for the same in the ending condition.
-
•
Steps () is the Coin-Genuinely-Flipped step of . In this step, it updates its variable as follows:
If the replica is in the committee based on its VRF, it broadcasts its vote for along with the VRF.
Safety of within a step. If all honest replicas reach an agreement before any step, the agreement will hold after the step. If the agreement is on binary value 0 (1 resp.) then the opposite Ending Condition 1 (0 resp.) will not be satisfied during the step. This is because synchronous communication ensures the delivery of at least votes on the agreed value and there are not enough malicious votes on the other value.
Safety of across steps. For the step Coin-Fixed-To-0 (1 resp.), if any honest replica ends due to Ending Condition 0 (1 resp.), all honest replicas will agree on binary value 0 and value (1 and resp.) at the end of the step, because there could only be less than votes on binary value 1 (0 resp.). Hence, together with safety within a step, binary value 1 and value (0 and resp.) will never be output.
6.2. Impossibility of Forensics
When the Byzantine fraction in the system is greater than one-third, with constant probability, a randomly chosen committee of size will have . In such a situation, we can have a safety violation. Observe that since only committee members send messages in a round, the number of culpable replicas may be bounded by . However, we will show an execution where no Byzantine replica can be held culpable.
Intuition. The safety condition for relies on the following: if some honest replica commits to a value , say , in a step and terminates, then all honest replicas will set as their local value. In all subsequent steps, there will be sufficient ( fraction) votes for due to which replicas will never set their local value . Thus, independently of what Byzantine replicas send during the protocol execution, honest replicas will only commit on . On the other hand, if replicas do not receive fraction of votes for , they may switch their local value to in the Coin-Fixed-To-1 or Coin-Genuinely-Flipped step. This can result in a safety violation. When the Byzantine fraction is greater than one-third, after some replicas have committed 0, the Byzantine replicas can achieve the above condition by selectively not sending votes to other replicas (say set ), thereby making them switch their local value to . There is no way for an external client to distinguish this world from another world where the set is Byzantine and states that it did not receive these votes. We formalize this intuition in the theorem below. Observe that our arguments work for the protocol with or without player-replaceability.
Theorem 6.1.
When the Byzantine fraction exceeds 1/3, if two honest replicas output conflicting values, -forensic support is impossible with for Algorand.
The theorem is proved in §C.3.
7. LibraBFT and Diem
In this paper, we have focused on forensics for single-shot consensus. Chained BFT protocols are natural candidates for consensus on a sequence with applications to blockchains. LibraBFT is a chained version of Hotstuff and is the core consensus protocol in Diem, a new cryptocurrency supported by Facebook (Association, 2020). In this section, we show that LibraBFT has the strongest forensic support possible (as in Hotstuff-view). Further, we implement the corresponding forensic analysis protocol as a module on top of an open source Diem client. We highlight the system innovations of our implementation and associated forensic dashboard; this has served as a reference implementation presently under active consideration for deployment (due to anonymity imperativs we are unable to document this more concretely).
Diem blockchain. Diem Blockchain uses LibraBFT (Team, 2020), a variant of HotStuff protocol for consensus. In LibraBFT, the replicas are called validators, who receive transactions from clients and propose blocks of transactions in a sequence of rounds.
LibraBFT forensics. The culpability analysis for LibraBFT is similar to Theorem 5.2. However, for the witnesses, the blockchain property of LibraBFT makes sure that any replica (validator) has access to the full blockchain and thus provides -forensic support. The formal result is below (proof in §C).
Theorem 7.1.
For , when , if two honest replicas output conflicting blocks, LibraBFT provides -forensic support.
The aforementioned three variants of HotStuff in §5 are described under the VBA setting to reach consensus on a single value, and the value can be directly included in the vote message (cf. Table 4, is contained in the Prepare message). In this setting, once a replica receives the commitQC for the value, it will output the value and send a reply to the client, even if the commitQC is the only message it receives in the current view so far. So when two honest replicas output conflicting values, it is possible that the client receives only the commit messages and extra communication is needed. And when , Byzantine replicas are able to form QCs by themselves so that no other honest replicas can get access to the first prepareQC. Thus the bound on for HotStuff-view and HotStuff-hash is .
However, the setting is slightly different in practice, when the value is no longer a single value, but actually a block with more fields and a list of transactions/commands, as in LibraBFT. In single-shot consensus, a block includes the transactions (value) and the highQC. In this case, the block is too heavy to include directly in a vote message, so the replicas add the hash of the block to the vote message (see Table 4, Hash is contained in the Prepare message). And since only the NewView message has the block’s preimage, replicas cannot vote/output until receiving the original blocks. Thus when two honest replicas output conflicting values, the client can obtain the full blockchain from one of them () and all prepareQC are part of the blocks. In this case, even if the client can still enjoy non-trivial forensic support.
HotStuff-hash | LibraBFT | |||||
Prepare |
|
|
||||
|
- |
|
Forensic module. Our prototype consists of two components, a database Forensic Storage used to store quorum certificates received by validators, which can be accessed by clients through JSON-RPC requests or consensus API; and an independent Detector run by clients to analyze the forensic information.
-
•
Forensic Storage maintains a map from the view number to quorum certificates and its persistent storage. It is responsible for storing forensic information and allows access by other components, including clients (via JSON-RPC requests or consensus API).
-
•
Detector is run by clients manually to send requests periodically to connected validators. It collates information received from validators, using it as the input to the forensic analysis protocol.

Testing using Twins (Bano et al., 2020). To test the correctness of forensic protocols, we build a testbed to simulate Byzantine attacks and construct different types of safety violations. Ideally, for modularity purposes, our testbed should not require us to modify the underlying consensus protocol to obtain Byzantine behavior. We leverage Twins (Bano et al., 2020), an approach to emulate Byzantine behaviors by running two instances of a node (i.e. replica) with the same identity. Consider a simple example setting with four nodes (denoted by ), where and are Byzantine so they have twins called and . The network is split into two partitions, the first partition includes nodes and the second partition includes nodes . Nodes in one partition can only receive the messages sent from the same partition. The double voting attack can be simulated when Byzantine leader proposes different valid blocks in the same view, and within each partition, all nodes will vote for the proposed block. The network partition is used to drop all messages sent from a set of nodes. However, it can only help construct the safety violation within the view. To construct more complicated attacks, we further improve the framework and introduce another operation called “detailed drop”, which drops selected messages with specific types.

Visualization. The Detector accepts the registration of different views to get notified once the data is updated. We built a dashboard to display the information received by the detector and the analysis results output by the forensic protocol. Figure 4 shows a snapshot of the dashboard which displays information about the network topology, hashes of latest blocks received at different validators, conflicting blocks, detected culprit keys and raw logs. Interactions with end-users, including Diem core-devs, has guided our design of the dashboard.
8. Conclusion
In this paper, we have embarked on a systematic study of the forensic properties of BFT protocols, focusing on 4 canonical examples: PBFT (classical), Hotstuff and VABA (state-of-the-art protocols on partially synchronous and asynchronous network settings) and Algorand (popular protocol that is adaptable to proof of stake blockchains). Our results show that minor variations in the BFT protocols can have outsized impact on their forensic support.
We exactly characterize the forensic support of each protocol, parameterized by the triplet . The forensic support characterizations are remarkably similar across the protocols: if any non-trivial support is possible (i.e., at least one culpable replica can be implicated; ), then the largest possible forensic support, , is also possible; the one exception to this result is the Hotstuff-hash variant. Although the proof of forensic support is conducted for each protocol and its variant individually, we observe common trends:
-
•
For each of the protocols with strong forensic support, as a part of the protocol execution, there exist witnesses who hold signed messages from Byzantine parties indicating that they have not followed some rule in the protocol.
-
•
On the other hand, for protocols with no forensic support, the Byzantine parties are able to break safety without leaving any evidence, although the mechanism to achieve this is different for each of PBFT-MAC, Algorand, and HotStuff-null. With PBFT-MAC, Byzantine parties are able to construct arbitrary transcripts due to the absence of signatures. Hence, message transcripts cannot be used as evidence. With Algorand, they can utilize a rule which relies on the absence of messages (under synchrony) to set an incorrect protocol state without leaving a trail. With HotStuff-null, due to the lack of links between messages across views, Byzantine parties can present fake message transcripts and thus, pretend to be honest.
Conceptually, the burning question is whether these common ingredients can be stitched together to form an overarching theory of forensic support for abstract families of secure BFT protocols: First, from an impossibility standpoint, is there a relationship between the need to use synchrony or the absence of PKI in a protocol and absence of forensic support? Second, for the positive results, can one argue strong forensic support for an “information-complete” variant of any BFT protocol? This is an active area of research.
From a practical stand point, forensic analysis for existing blockchain protocols is of great interest; our forensic protocol for LibraBFT and its reference implementation has made strong inroads towards practical deployment. However, one shortcoming of the approach in this paper is that forensic analysis is conducted only upon fatal safety breaches. It is of great interest to conduct forensics with other forms of attacks: liveness attacks, censorship, small number of misbehaving replicas that impact performance. We note that liveness attacks do not afford, at the outset, undeniable complicity of malicious replicas and an important research direction is in formalizing weaker notions of culpability proofs (perhaps including assumptions involving external forms of trust). This is an active area of research.
9. Acknowledgement
This research was partly supported by US Army Research Office Grant W911NF-18-1-0332, National Science Foundation CCF-1705007 and the XDC network. Kartik Nayak was supported in part by Novi and VMware gift research grant.
We thank the Diem team for implementation advice and Jovan Komatovic for helpful discussions about a forensic attack on HotStuff.
References
- (1)
- Abraham et al. (2019b) Ittai Abraham, Dahlia Malkhi, Kartik Nayak, Ling Ren, and Maofan Yin. 2019b. Sync hotstuff: Simple and practical synchronous state machine replication. IACR Cryptology ePrint Archive 2019 (2019), 270.
- Abraham et al. (2019a) Ittai Abraham, Dahlia Malkhi, and Alexander Spiegelman. 2019a. Asymptotically optimal validated asynchronous byzantine agreement. In Proceedings of the 2019 ACM Symposium on Principles of Distributed Computing. 337–346.
- Abraham et al. (2020) Ittai Abraham, Kartik Nayak, Ling Ren, and Zhuolun Xiang. 2020. Optimal good-case latency for byzantine broadcast and state machine replication. arXiv preprint arXiv:2003.13155 (2020).
- Anonymized (2020) Anonymized. 2020. Forensic Module for Diem. https://github.com/BFTForensics/DiemForensics
- Association (2020) Diem Association. 2020. Diem. https://github.com/diem/diem
- Bano et al. (2020) Shehar Bano, Alberto Sonnino, Andrey Chursin, Dmitri Perelman, and Dahlia Malkhi. 2020. Twins: White-Glove Approach for BFT Testing. arXiv preprint arXiv:2004.10617 (2020).
- Boneh et al. (2018) Dan Boneh, Manu Drijvers, and Gregory Neven. 2018. Compact multi-signatures for smaller blockchains. In International Conference on the Theory and Application of Cryptology and Information Security. Springer, 435–464.
- Buterin and Griffith (2017) Vitalik Buterin and Virgil Griffith. 2017. Casper the Friendly Finality Gadget. arXiv preprint arXiv:1710.09437 (2017).
- Cachin et al. (2005) Christian Cachin, Klaus Kursawe, and Victor Shoup. 2005. Random oracles in Constantinople: Practical asynchronous Byzantine agreement using cryptography. Journal of Cryptology 18, 3 (2005), 219–246.
- Castro and Liskov (2002) Miguel Castro and Barbara Liskov. 2002. Practical Byzantine fault tolerance and proactive recovery. ACM Transactions on Computer Systems (TOCS) 20, 4 (2002), 398–461.
- Castro et al. (1999) Miguel Castro, Barbara Liskov, et al. 1999. Practical Byzantine fault tolerance. In OSDI, Vol. 99. 173–186.
- Chan and Shi (2020) Benjamin Y Chan and Elaine Shi. 2020. Streamlet: Textbook Streamlined Blockchains. IACR Cryptol. ePrint Arch. 2020 (2020), 88.
- Chen et al. (2018) Jing Chen, Sergey Gorbunov, Silvio Micali, and Georgios Vlachos. 2018. ALGORAND AGREEMENT: Super Fast and Partition Resilient Byzantine Agreement. IACR Cryptol. ePrint Arch. 2018 (2018), 377.
- Chen and Micali (2019) Jing Chen and Silvio Micali. 2019. Algorand: A secure and efficient distributed ledger. Theoretical Computer Science 777 (2019), 155–183.
- Civit et al. (2019) Pierre Civit, Seth Gilbert, and Vincent Gramoli. 2019. Polygraph: Accountable Byzantine Agreement. IACR Cryptol. ePrint Arch. 2019 (2019), 587.
- contributors (2020) Wikipedia contributors. 2020. ”The Day After — Wikipedia, The Free Encyclopedia”. https://en.wikipedia.org/wiki/The_Day_After Online; accessed 23 September 2020.
- Dwork et al. (1988) Cynthia Dwork, Nancy Lynch, and Larry Stockmeyer. 1988. Consensus in the presence of partial synchrony. Journal of the ACM (JACM) 35, 2 (1988), 288–323.
- Gilad et al. (2017) Yossi Gilad, Rotem Hemo, Silvio Micali, Georgios Vlachos, and Nickolai Zeldovich. 2017. Algorand: Scaling byzantine agreements for cryptocurrencies. In Proceedings of the 26th Symposium on Operating Systems Principles. 51–68.
- Haeberlen et al. (2007) Andreas Haeberlen, Petr Kouznetsov, and Peter Druschel. 2007. PeerReview: Practical accountability for distributed systems. ACM SIGOPS operating systems review 41, 6 (2007), 175–188.
- Haeberlen and Kuznetsov (2009) Andreas Haeberlen and Petr Kuznetsov. 2009. The fault detection problem. In International Conference On Principles Of Distributed Systems. Springer, 99–114.
- Kane et al. (2021) Daniel Kane, Andreas Fackler, Adam G\kagol, Damian Straszak, and Vlad Zamfir. 2021. Highway: Efficient Consensus with Flexible Finality. arXiv preprint arXiv:2101.02159 (2021).
- Li and Maziéres (2007) Jinyuan Li and David Maziéres. 2007. Beyond One-Third Faulty Replicas in Byzantine Fault Tolerant Systems.. In NSDI.
- Malkhi et al. (2019) Dahlia Malkhi, Kartik Nayak, and Ling Ren. 2019. Flexible byzantine fault tolerance. In Proceedings of the 2019 ACM SIGSAC Conference on Computer and Communications Security. 1041–1053.
- Micali (2018) Silvio Micali. 2018. Byzantine agreement, made trivial.
- Micali et al. (1999) Silvio Micali, Michael Rabin, and Salil Vadhan. 1999. Verifiable random functions. In 40th annual symposium on foundations of computer science (cat. No. 99CB37039). IEEE, 120–130.
- Neu et al. (2020) Joachim Neu, Ertem Nusret Tas, and David Tse. 2020. Ebb-and-Flow Protocols: A Resolution of the Availability-Finality Dilemma. arXiv preprint arXiv:2009.04987 (2020).
- Ramasamy and Cachin (2005) HariGovind V Ramasamy and Christian Cachin. 2005. Parsimonious asynchronous byzantine-fault-tolerant atomic broadcast. In International Conference on Principles of Distributed Systems. Springer, 88–102.
- Ranchal-Pedrosa and Gramoli (2020) Alejandro Ranchal-Pedrosa and Vincent Gramoli. 2020. Blockchain Is Dead, Long Live Blockchain! Accountable State Machine Replication for Longlasting Blockchain. arXiv preprint arXiv:2007.10541 (2020).
- Stewart and Kokoris-Kogia (2020) Alistair Stewart and Eleftherios Kokoris-Kogia. 2020. GRANDPA: a Byzantine finality gadget. arXiv preprint arXiv:2007.01560 (2020).
- Team (2020) The LibraBFT Team. 2020. State Machine Replication in the Diem Blockchain. https://developers.diem.com/docs/technical-papers/state-machine-replication-paper/
- Xiang et al. (2021) Zhuolun Xiang, Dahlia Malkhi, Kartik Nayak, and Ling Ren. 2021. Strengthened Fault Tolerance in Byzantine Fault Tolerant Replication. arXiv preprint arXiv:2101.03715 (2021).
- Yin et al. (2019) Maofan Yin, Dahlia Malkhi, Michael K Reiter, Guy Golan Gueta, and Ittai Abraham. 2019. Hotstuff: Bft consensus with linearity and responsiveness. In Proceedings of the 2019 ACM Symposium on Principles of Distributed Computing. 347–356.
Appendix A VABA has Strong Forensic Support
Validated Asynchronous Byzantine Agreement (VABA) is a state-of-the-art protocol (Abraham et al., 2019a) in the asynchronous setting with asymptotically optimal communication complexity and expected latency for .
-
(1)
, and
-
(2)
, and
-
(3)
A.1. Overview
At a high-level, the VABA protocol adapts HotStuff to the asynchronous setting. There are three phases in the protocol:
-
-
Proposal promotion. In this stage, each of the replicas run parallel HotStuff-like instances, where replica acts as the leader within instance .
-
-
Leader election. After finishing the previous stage, replicas run a leader election protocol using a threshold-coin primitive (Cachin et al., 2005) to randomly elect the leader of this view, denoted as where is a view number. At the end of the view, replicas adopt the “progress” from ’s proposal promotion instance, and discard values from other instances.
-
-
View change. Replicas broadcast quorum certificates from ’s proposal promotion instance and update local variables and/or output value accordingly.
Within a proposal promotion stage, the guarantees provided are the same as that of HotStuff, and hence we do not repeat it here. The leader election phase elects a unique leader at random – this stage guarantees (i) with probability, an honest leader is elected, and (ii) an adaptive adversary cannot stall progress (since a leader is elected in hindsight). Finally, in the view-change phase, every replica broadcasts the elected leader’s quorum certificates to all replicas.
A.2. Forensic Support for VABA
The key difference between forensic support for HotStuff and VABA is the presence of the leader election stage – every replica/client needs to know which replica was elected as the leader in each view. Importantly, the threshold-coin primitive ensures that there is a unique leader elected for each view. Thus, the forensic analysis boils down to performing an analysis similar to the HotStuff protocol, except that the leader of a view is described by the leader election phase.
We present the full forensic protocol in Algorithm 4 for completeness. We make the following changes to VABA:
-
•
Storing information for forensics. Each replica maintains a list of ledgers for all instances, containing all received prepareQC from Prepare messages, NewView messages, and ViewChange messages (lines 8,10,16). When the leader of a view is elected, a replica keeps the ledger from the leader’s instance and discards others (line 12). A replica also stores the random coins from the leader election phase for client verification (line 13).
-
•
Bringing proposal promotion closer to HotStuff-view. There are minor differences in the proposal promotion phase of VABA (Abraham et al., 2019a) to the description in HotStuff (§5). We make this phase similar to that in the description of our HotStuff protocol with forensic support. In particular: (i) the variable stores both the view number and the value (denoted by and ), (ii) the voting rule in a proposal promotion phase is: vote if has view and value equal to , except when ’s view is strictly higher than , (iii) assume a replica’s own ViewChange message arrives first so that others’ ViewChange messages do not overwrite local variables and , and (iv) add into Prepare.
A client first verifies leader election (lines 36-40). Then, it follows steps similar to the HotStuff forensic protocol (lines 41-52) except that there are added checks pertaining to leader elections (lines 44,(3),51).
We prove the forensic support in Theorem A.1.
Theorem A.1.
For , when , if two honest replicas output conflicting values, VABA protocol provides -forensic support. Further -forensic support is impossible with .
Proof.
We prove the forward part of the theorem below. The proof of converse (impossibility) is the same as §C.1.
The leader of a view is determined by the threshold coin-tossing primitive threshold-coin and Byzantine replicas cannot forge the result of a leader election by the robustness property of the threshold coin. Suppose two conflicting outputs happen in view with . The replica who outputs in view has access to the proof of leader election of all views . Therefore, a client can verify the leader election when it receives messages from this replica. Even if other replicas have not received messages corresponding to the elections in views , the client can send the proof of leader to them. The remaining forensic support proof follows from Theorem 5.1 in a straightforward manner, where any witness will receive the proof of leader from the client (if leader is not elected) and send the proof of culprits to the client. ∎
Communication complexity. The client needs to first receive all leader election results from view to view , and each result is of size (the size of the coin in the threshold-coin primitive). Then, the client shares leader election results with all replicas. This step incurs receiving message complexity where . Next, the client needs to receive one message from replica and the message size is . Therefore the complexity for the client receiving messages is . However, the procedure of sharing leader election is irrelevant to forensic support, and we could assign it to replicas. (This procedure is included in the forensic protocol because we do not want to change the consensus protocol itself.) In that case, the client needs to receive just one leader election result, so the receiving message complexity is .
Appendix B Impossibility of Forensic Support for
A validated Byzantine agreement protocol allows replicas to obtain agreement, validity, and termination so far as the actual number of faults where is a Byzantine threshold set by the consensus protocol. A protocol that also provides forensic support with parameters and allows the detection of Byzantine replicas when out of replicas are Byzantine faulty. In particular, in §4 and §5, we observed that when , and , we can obtain -forensic support for . This section presents the limits on the number of Byzantine replicas detected (), given the total number of Byzantine faulty replicas available in the system (). In particular, we show that if the total number of Byzantine faults are too high, in case of a disagreement, the number of corrupt (Byzantine) replicas that can be deemed undeniably culpable will be too few.
Intuition. To gain intuition, let us consider a specific setting with , , and . Thus, such a protocol provides us with agreement, validity, and termination if the Byzantine replicas are in a minority. If they are in the majority, the protocol transcript provides undeniable guilt of more than one Byzantine fault. We show that such a protocol does not exist. Why? Suppose we split the replicas into three groups , , and of sizes , , and respectively. First, observe that any protocol cannot expect Byzantine replicas to participate in satisfying agreement, validity, and termination. Hence, if the replicas in are Byzantine, replicas in may not receive any messages from . However, if, in addition, the replica is also corrupt, then can separately simulate another world where are Byzantine and not sending messages, and output a different value. Even if an external client obtains a transcript of the entire protocol execution (i.e., transcripts of honest replicas and Byzantine replicas), the only replica that is undeniably culpable is since it participated in both worlds. For all other replicas, neither nor have sufficient information to prove the other set’s culpability. Thus, an external client will not be able to detect more than one Byzantine fault correctly. Our lower bound generalizes this intuition to hold for , , , and .
Theorem B.1.
For any validated Byzantine agreement protocol with , when , if two honest replicas output conflicting values, -forensic support is impossible with .
Proof.
Suppose there exists a protocol that achieves agreement, validity, termination, and forensic support with parameters and . Through a sequence of worlds, and through an indistinguishability argument we will show the existence of a world where a client incorrectly holds at least one honest replica as culpable. Consider the replicas to be split into three groups , and with , , and replicas respectively. We consider the following sequence of worlds:
World 1. [ Byzantine faults, satisfying agreement, validity, and termination]
Setup. Replicas in and are honest while replicas in have crashed. and start with a single externally valid input . All messages between honest replicas arrive instantaneously.
Output. Since there are faults, due to agreement, validity and termination properties, replicas in and output . Suppose replicas in and together produce a transcript of all the messages they have received.
World 2. [ Byzantine faults, satisfying agreement, validity, and termination]
Setup. Replicas in and are honest while replicas in have crashed. and start with an externally valid input . All messages between honest replicas arrive instantaneously.
Output. Since replicas are Byzantine faulty, due to agreement, validity and termination properties, replicas in and output . Suppose replicas in and together produce a transcript of all the messages they have received.
World 3. [ Byzantine faults satisfying validity, termination, forensic support]
Setup. Replicas in are honest while replicas in and are Byzantine. Replicas in start with input . Replicas in and have access to both inputs and . behaves as if it starts with input whereas will use both inputs and . Replicas in and behave with exactly like in World 1. In particular, replicas in do not send any message to any replica in . Replicas in perform a split-brain attack where one brain interacts with as if the input is and it is not receiving any message from . Also, separately, replicas in and the other brain of start with input and communicate with each other exactly like in World 2. They ignore messages arriving from .
Output. For replicas in , this world is indistinguishable from that of World 1. Hence, they output . Replicas in and the first brain of output transcript corresponding to the output. Replicas in and the other brain of behave exactly like in World 2. Hence, they can output transcript . Since the protocol provides -forensic support for , the transcript of messages should hold Byzantine replicas undeniably corrupt. Suppose the client can find the culpability of replicas from , i.e., replica from .
World 4. [ Byzantine faults satisfying validity, termination, forensic support]
Setup. Replicas in are honest while replicas in and are Byzantine. Replicas in start with input . Replicas in and have access to both inputs and . behaves as if it starts with input whereas replicas in use both and . Replicas in and behave with exactly like in World 2. In particular, replicas in do not send any message to any replica in . Replicas in perform a split-brain attack where one brain interacts with as if the input is and it is not receiving any message from . Also, separately, replicas in and the other brain of start with input and communicate with each other exactly like in World 1. They ignore messages arriving from .
Output. For replicas in , this world is indistinguishable from that of World 2. Hence, they output . Replicas in and the first brain of output transcript corresponding to the output. Replicas in and the other brain of behave exactly like in World 1. Hence, they can output transcript .
Observe that the transcript and outputs produced by replicas in , , and are exactly the same as in World 3. Hence, the client will hold replicas from , i.e., replica from as culpable. However, all replicas in are honest in this world. This is a contradiction. ∎
Appendix C Proof of Theorems
C.1. Proof of Theorem 4.1
Proof.
Suppose there are Byzantine replicas, and let there be three replica partitions , , . To prove the result, suppose the protocol has forensic support for , we construct two worlds where a different set of replicas are Byzantine in each world.
World 1. Let be Byzantine replicas in this world. During the protocol, replicas in behave like honest parties. Suppose in view (), two honest replicas output two conflicting values after receiving two commitQC. The commitQC for contains the Commit messages from and , the commitQC for contains the Commit messages from and . All the other messages never reach . During the forensic protocol, replicas in send their transcripts to the client. Since the protocol has forensic support for , using these transcripts (two commitQC), the forensic protocol determines some subset of are culpable (since behave like honest).
World 2. Let and some replica are Byzantine replicas and replicas in behave honestly. Again, in view (), two replicas output two conflicting values after receiving two commitQC. The commitQC for contains the Commit messages from and , the commitQC for contains the Commit messages from and . Replicas in unlock themselves due to receiving a higher prepareQC formed in (). During the forensic protocol, replicas in send the same transcripts as of World 1 to the client (only two commitQC). Thus, the forensic protocol outputs some subset of as culpable replicas. However, this is incorrect since replicas in are honest ( is indistinguishable with replicas in ). This complete the proof. ∎
C.2. Proof of Theorem 5.3


Proof.
Suppose the protocol provides forensic support to detect Byzantine replicas with irrefutable proof and the proof can be constructed from the transcripts of all honest replicas. To prove this result, we construct two worlds where a different set of replicas are Byzantine in each world. We will fix the number of Byzantine replicas , but the following argument works for any .
Let there be four replica partitions . , and is an individual replica. In both worlds, the conflicting outputs are presented in view () respectively. Let be on value in view , and signed by . And let (and a precommitQC) be on value in view , and signed by . Suppose the leader of view () is replica .
World 1 is presented in Figure 5. Let and be Byzantine replicas in this world. In view , the leader proposes value and sends Prepare on it, but a prepareQC is not formed. In view , the Byzantine parties, together with , sign prepareQC on . is the first view where a prepareQC for is formed.
During the forensic protocol, all honest replicas in and send their transcripts. Byzantine and do not provide any information. Since the protocol has forensic support, the forensic protocol can output replicas in and as culprits.
World 2 is presented in Figure 6. Let and be Byzantine replicas in this world. Here, in view , and , together with sign prepareQC on . In this world, is the first view where a prepareQC for is formed. View is similar to that of World 1 except that honest receives a NewView message with (rather than ).
During the forensic protocol, sends their transcripts, which are identical to those in World 1. Byzantine can provide the same transcripts as those in World 1. Observe that the transcripts from and presented to the forensic protocol are identical to those in World 1. Thus, the forensic protocol can also outputs replicas in and as culpable. In World 2, this is incorrect since replicas in are honest.
Based on transcripts, World 1 and World 2 are indistinguishable. To obtain an irrefutable proof of culprits, the client needs to collect more than transcripts, more than the number of honest parties available. This completes the proof. ∎
Remark.
The above proof can be easily modified to work with parameters when .
C.3. Proof of Theorem 6.1
Proof.
We construct two worlds where a different set of replicas are Byzantine in each world. Let replicas be split into three partitions , , and , and and is a small constant. Denote the numbers of replicas from in a committee by . Let denote the expected committee size; . With constant probability, we will have , and and in steps 4 to 8.
World 1. Replicas in are Byzantine in this world. We have and . The Byzantine parties follow the protocol in Graded Consensus. Thus, all replicas in step 4 hold the same tuple of and (). Then, the following steps are executed.
-
Step 4
Honest committee members that belong to and broadcast their votes on whereas Byzantine committee members that belong to send votes to replicas in and not .
-
Step 5
Replicas in satisfy Ending Condition 0, and output and the value . Replicas in do not receive votes from committee members in , so they update and broadcast their votes on . Byzantine committee members that belong to pretend not to receive votes from committee members in , and also update . And they send votes to replicas in and not .
-
Step 6
Replicas in update since they receive votes. Replicas in pretend not to receive votes from committee members in , and also update . Committee members in and broadcast their votes.
-
Steps 7-8
Committee members that belong to and receive votes, so they update and broadcast their votes.
-
Step9
Replicas in and satisfy Ending Condition 1, and output and , a disagreement with replicas in .
During the forensic protocol, replicas in send their transcripts and state that they have output . and send their transcripts claiming in steps 4 and 5 they do not hear from the other partition, and they state that output .
If this protocol has any forensic support, then it should be able to detect some replica in as Byzantine.
World 2. This world is identical to World 1 except (i) Replicas in are Byzantine and replicas in are honest, and (ii) the Byzantine set behaves exactly like set in World 1, i.e., replicas in do not send any votes to in steps 4 and 5 and ignore their votes. During the forensic protocol, send their transcripts and state that they have output . and send their transcripts claiming in steps 4 and 5 they do not hear from the other partition, and they state that output .
From an external client’s perspective, World 2 is indistinguishable from World 1. In World 2, the client should detect some replica in as Byzantine as in World 1, but all replicas in are honest. ∎
C.4. Proof of Theorem 7.1
Proof.
Suppose two conflicting blocks are output in views , respectively.
Case .
Culpability. The commitQC of (the QC in ) and commitQC of intersect in replicas. These replicas should be Byzantine since the protocol requires a replica to vote for at most one value in a view.
Witnesses. Client can get the proof based on the two blocks in , so additional witnesses are not necessary in this case.
Case .
Culpability. If , then WLOG, suppose . Since is output in view , it must be the case that replicas are locked on at the end of view . Now consider the first view in which a higher lock is formed where are not on the same chain (possibly is on the chain of ). Such a view must exist since is output in view and a lock will be formed in at least view . For a lock to be formed, a higher prepareQC must be formed too.
Consider the first view in which a prepareQC in chain of is formed. The leader in broadcasts the block containing a highQC on . Since this is the first time a higher prepareQC is formed and there is no prepareQC for chain of formed between view and , we have . The formation of the higher prepareQC indicates that replicas received the block extending with highQC on and consider it a valid proposal, i.e., the view number is larger than their locks because the block is on another chain.
Recall that the output block indicates replicas are locked on at the end of view . In this case, the votes in prepareQC in view intersect with the votes in commitQC in view at Byzantine replicas. These replicas should be Byzantine because they were locked on the block in view and vote for a conflicting block in a higher view whose highQC is from a view . Thus, they have violated the voting rule.
Witnesses. Client can get the proof by storing a prepareQC formed in between and in a different chain from . The prepareQC is for the previous block in whose highQC is formed in a view . For the replicas who have access to the prepareQC, they must have access to all blocks in the same blockchain. Thus only one witness is needed ( to provide the prepareQC and its previous block containing the highQC on , the prepareQC, highQC and the first commitQC act as the irrefutable proof. ∎
Appendix D Description of BFT Protocols
In the protocols in this paper, we assume that replicas and clients ignore messages with invalid signatures and messages containing external invalid values. When searching for an entity (e.g. lock or prepareQC) with the highest view, break ties by alphabetic order of the value. Notice that ties only occur when and Byzantine replicas deliberately construct conflicting quorum certificates in a view.
With , the descriptions of the PBFT protocol and HotStuff protocol are presented in Algorithm 5 and 6.
D.1. A Forensic Attack on HotStuff-view
Compared to HotStuff (Yin et al., 2019, Algorithm 2), Algorithm 6 highlights a slightly different voting rule in line 15. In addition to check whether holds as in HotStuff (Yin et al., 2019, Algorithm 2), when the value in NewView is the same as the value in lock, our voting rule requires .
We argue that the lack of this additional check on the view number will not affect the safety and liveness for HotStuff, but pose a threat for forensics. In the following, we exhibit a forensic attack on HotStuff-view protocol with the original voting rule.
-
•
An honest replica receives a from the leader and updates its lock to be . sends to leader, which is contained in a commitQC denoted as . is output in this view.
-
•
receives and updates its lock to be .
-
•
A leader broadcasts , where highQC is a QC from . Replica receives the message and sends , because by checking the original voting rule. This message is contained into a prepareQC denoted as . Further, is output in this view.
In this execution, replica follows the protocol, however, it will be mistakenly blamed by Algorithm 2 if the client receives the for and the for . Since and according to line 10.
While the actual prepareQC whose intersection with should be blamed is generated in , it is possible that some honest replicas who have the same transcripts as will be improperly held culpable in this case. By adding the condition to check , honest replicas will not vote for a NewView with stale highQC, which prevents them from the attack described above.