<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Resilient and Scalable Architecture for Permissioned Blockchain Fabrics</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Suyash Gupta</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Exploratory Systems Lab Department of Computer Science University of California, Davis Supervised by Mohammad Sadoghi</institution>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Since the introduction of Bitcoin|the rst widespread application driven by blockchains|the interest in the design of blockchain-based applications has increased tremendously. At the core of these blockchain applications are consensus protocols that aim at securely replicating a client request among all replicas, even if some replicas are Byzantine faulty. Unfortunately, modern consensus protocols either yield low throughput or face design limitations. In this work, we present the design of three consensus protocols that facilitate e cient consensus among the replicas. Our protocols help to scale consensus through the principles of phase-reduction, parallelization, and geo-scale clustering while ensuring no compromise in fault-tolerance. Further, we believe that the focus on consensus protocols is only oneside of the story. In speci c, we present the design of a wellcrafted permissioned blockchain fabric that can help even a slow consensus protocol outperform a faster protocol.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCTION</title>
      <p>
        Since the introduction of Bitcoin the interest in the
design of blockchain-based applications has increased
tremendously [
        <xref ref-type="bibr" rid="ref13 ref17">13, 17</xref>
        ]. Blockchain-based solutions have garnered
community interest as they guarantee democracy and
decentralization. To exploit these guarantees, in recent years,
several new blockchain databases and fabrics have been
proposed [
        <xref ref-type="bibr" rid="ref1 ref11 ref18 ref2">1, 2, 11, 18</xref>
        ]. These blockchain databases achieve
decentralization by employing age-old replication semantics
and ensure democracy by running a fault-tolerant
consensus protocol. At the core of any blockchain application is
a BFT consensus protocol that ensures all replicas of this
blockchain application reach consensus on the ordering of
incoming client requests, this even if some of the replicas
are byzantine [
        <xref ref-type="bibr" rid="ref11 ref16 ref21 ref4 ref9">4, 9, 11, 16, 21</xref>
        ].
      </p>
      <p>
        On looking closely, we nd an unusual trend: even after
a decade of its introduction and after several prominent
research projects, crypto-currencies are still the major known
use-cases of blockchains. This raises a key question: Why
have blockchain applications seen such a slow wider
adoption? The low throughput and high latency of BFT
consensus are cited as key reasons for this. Prior works [
        <xref ref-type="bibr" rid="ref14 ref19">14,
19</xref>
        ] have shown that traditional distributed databases can
achieve throughputs of the order 100K transactions per
second, while the initial permissionless blockchain applications,
Bitcoin [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] and Ethereum [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], reach throughputs of only
a few transactions per second. In these crypto-currency
applications, low throughputs are seen as acceptable, as the
techniques used enable an alternative currency that is
unregulated by any government or corporation. Notice that these
crypto-currency blockchains support open-membership, as
anyone can anonymously join these blockchains.
      </p>
      <p>
        Recent attacks on permissionless blockchains have
highlighted that their open-membership is often unnecessary and
undesirable [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. This led to industry-grade permissioned
designs, where only a select group of users, some of which
may be untrusted, can participate [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. A majority of these
permissioned designs employ the classical Pbft protocol
and achieve throughputs of up-to 10K transactions per
second [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ], which is still short of the performance expected
of modern systems. This isn't surprising because Pbft
achieves consensus in three phases, of which two
necessitate quadratic communication complexity. Moreover, since
the introduction of Pbft, several new BFT protocols have
been proposed [
        <xref ref-type="bibr" rid="ref16 ref21 ref6">6, 16, 21</xref>
        ]. We believe the inherent
limitations of these protocols as a logical consequence for existing
blockchain databases to skip these protocols.
      </p>
      <p>In this work, we present the design of three new BFT
protocols that yield high-throughput while providing the same
fault-tolerance guarantees as the Pbft protocol. First, we
employ speculation and facilitate out-of-order processing of
messages to achieve consensus in just two phases. Second,
we scale up the Pbft protocol by allowing multiple
consensuses to happen in parallel. Third, we scale out the Pbft
protocol by clustering replicas, which permits consensus on
a global scale. Further, we also observe that the low
throughputs of existing permissioned fabrics are due to missed
opportunities during their design and implementation. Hence,
we present the design of a well-crafted blockchain fabric that
can achieve an order-of-magnitude increase in throughput by
exploiting parallelization and pipelining opportunities.
2.</p>
      <p>BYZANTINE FAULT-TOLERANCE
p
r1
r2
b</p>
      <p>Pre-prepare</p>
      <p>Prepare</p>
      <p>Commit</p>
      <p>
        Pbft [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] is often described as the rst BFT protocol to
allow consensus to be incorporated by practical systems.
Pbft follows the primary-backup model where one replica is
designated as the primary while other replicas act as
backups. Pbft guarantees a successful consensus among n
replicas if at most f of them are byzantine, where n 3f + 1.
      </p>
      <p>When the primary replica receives a client request, it
assigns it a sequence number and sends a Pre-prepare
message to all the backups to execute this request in the
sequence order (refer to Figure 1). Each backup replica on
receiving the Pre-prepare message from the primary shows
its agreement to this order by broadcasting a Prepare
message. When a replica receives Prepare message from at
least 2f distinct backup replicas, then it achieves a
guarantee that a majority of the non-faulty replicas are aware
of this request. Such a replica marks itself as prepared and
broadcasts a Commit message. Next, when this replica
receives Commit messages from 2f + 1 distinct replicas, then
it achieves a guarantee for the order of this request, as a
majority of the replicas must have also prepared this
request. Finally, this replica executes the request and sends a
response to the client.</p>
      <p>
        Multi-Path Execution. Zyzzyva [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] introduces a
multipath protocol to achieve e cient consensus. In the fast-path,
the consensus happens in a single linear phase. When a
backup replica receives a Pre-Prepare message from the
primary, it executes the request and sends a response to the
client. Hence, a replica does not even wait to con rm that
the order is the same across all the replicas. However, if the
primary is malicious, Zyzzyva switches to the slow-path. In
speci c, for the fast-path to be successful, the client waits for
responses from all the replicas. If the client timeouts while
waiting for responses, it switches to the slow-path. Hence,
the fast-path of Zyzzyva cannot handle even one simple
failure. Note that Zyzzyva depends on good clients to
ensure correct order if the primary is malicious. Moreover, a
recent work has uncovered a aw in Zyzzyva's design [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>
        Sbft [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] removes the aw from Zyzzyva's design but
requires two linear phases in its fast-path and an additional
third phase in its slow-path. Moreover, in all the
protocols we have discussed until now, if the primary is
malicious, then it is replaced. This replacement requires
detecting the faulty primary and exchanging correct states among
the replicas. Hotstuff [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] suggests switching primary
after each consensus. However, this comes at a signi cant
cost; Hotstuff requires sequential consensus processing.
In Hotstuff, each subsequent primary needs to wait for
messages from a quorum of replicas before starting the next
consensus. This negatively impacts the system throughput
as messages can no longer be processed out-of-order.
      </p>
    </sec>
    <sec id="sec-2">
      <title>PROOF-OF-EXECUTION</title>
      <p>
        Our rst step is to concoct a fast yet reliable consensus
protocol. We call this protocol Proof-of-Execution (PoE) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ],
c
      </p>
      <p>
        propose support certify inform
Figure 2: Normal-case algorithm of PoE: Client c sends its
request containing transaction T to the primary p, which
proposes this request to all replicas. Although replica b is
Byzantine, it fails to a ect PoE.
which employs three ingredients for ensuring e cient
consensus. First, PoE prevents use of any multi-path design
as switching from fast to slow path requires dependence on
timeouts, which degrades system performance [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Second,
PoE allows replicas to speculatively execute the requests
but facilitates rollbacks in case of inconsistencies. Final,
PoE allows out-of-order processing, which eliminates any
bottlenecks associated with sequential consensus protocols.
      </p>
      <p>
        In Figure 2, we sketch the normal-case working of PoE.
As no one size ts all systems, we believe the design of a
BFT protocol should be independent of the choice of
underlying cryptographic signature scheme. Hence, PoE can
adapt itself to both symmetric and asymmetric-cryptographic
signature schemes [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. For the sake of brevity, we will
describe PoE built on top of Threshold Signatures TS.
      </p>
      <p>The consensus steps of the PoE protocol are sketched in
Figure 2. In PoE, the client c initiates execution by sending
its request m to the primary p. To initiate replication and
execution of m as the k-th transaction, the primary proposes
m to all replicas by broadcasting a Propose message.</p>
      <p>After a replica r receives a Propose message from p, it
checks whether at least 2f other replicas also received the
same proposal from p. To perform this check, each replica
agrees to support the rst k-th proposal it receives from the
primary by sending a Support message that includes its
unique threshold share to the primary. The primary p waits
for 2f + 1 threshold shares, and on receiving such shares,
it combines them into a threshold signature and broadcasts
as a Certify message. When a replica r receives the
Certify message, it view-commits to m as the k-th transaction
in view v. After r view-commits to m, r schedules T for
speculative execution. Consequently, m will be executed by
r after all preceding transactions are executed. After
execution, r informs the client of the order of execution and
of any execution result r. A client considers its
transaction successfully executed after it receives identical response
messages from 2f + 1 distinct replicas.
4.</p>
    </sec>
    <sec id="sec-3">
      <title>PARALLEL CONSENSUS</title>
      <p>Until now, all the BFT protocols that we studied
followed a primary-backup model. This dependence on the
primary severely a ects the throughput and scalability of
these protocols. The primary replica not only receives all
client requests but is also responsible for ensuring consensus
is reached on the order for these requests among all other
replicas. If the primary fails to ensure consensus, then all
remaining replicas need to replace this primary. This
replacement process is necessary as, without it, non-faulty replicas
may never converge. Unfortunately, primary replacement is
not cheap, as it requires pausing consensus on all
outstanding requests until the primary is replaced.</p>
      <p>A promising solution to all these problems is to make a
BFT consensus primary agnostic. Such a solution would</p>
      <sec id="sec-3-1">
        <title>Run z parallel PBFT instances.</title>
        <sec id="sec-3-1-1">
          <title>Unification</title>
          <p>Create a secure
global order of all
the requests.</p>
        </sec>
        <sec id="sec-3-1-2">
          <title>Execution</title>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>Execute the requests and reply to clients.</title>
        <p>
          require us to give all replicas the power to act as a
primary. This brings us to the design of our Multiple Byzantine
Fault-Tolerance (MultiBFT) paradigm [
          <xref ref-type="bibr" rid="ref10 ref9">9, 10</xref>
          ]. MultiBFT
parallelizes the consensus by requiring each replica to run
multiple instances of the Pbft protocol in parallel.
        </p>
        <p>Using parallelization, MultiBFT ensures that the
nonfaulty replicas are always accepting and ordering client
requests, this independent of any malicious behavior or attack.
Figure 3 illustrates a succinct representation of our
MultiBFT paradigm. For the sake of explanation, we assume
MultiBFT works in rounds. Each round of MultiBFT
includes three stages: parallel consensus, uni cation, and
execution. The notion of a round helps in generating a common
order and recovering from instance failures but it does not
prevent individual primaries from working independently.</p>
        <p>Prior to any round, MultiBFT requires each replica to
prepare to run z instances of Pbft protocol in parallel. A
round r begins when the primary of each instance proposes
a client request. Firstly, in the parallel consensus stage, each
instance runs Pbft on its client request. Secondly, in the
uni cation stage, the replica waits for all its z instances to
complete replication (reach consensus on their respective
requests). If every instance successfully replicates a request,
then a common order for execution of these requests is
determined. If one or more instances are unable to replicate
requests, then the primaries for those instances must be faulty
and recovery is initiated. Finally, in the execution stage,
each replica executes all the client requests in the common
order. Notice that in Figure 3, we have a loop. This loop
states that while uni cation and execution are ongoing for
requests of round r, the instances are already replicating
requests for round r + 1.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>GEO-SCALE CONSENSUS</title>
      <p>
        To enable geo-scale deployment of a permissioned
blockchain system, we believe that the underlying consensus
protocol must distinguish between local and global
communication. To resolve this challenge, we present our Geo-Scale
Byzantine Fault-Tolerant consensus protocol (GeoBFT) [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]
that uses topological information to group all replicas in a
single region into a single cluster. Likewise, GeoBFT
assigns each client to a single cluster. This clustering helps
in attaining high throughput and scalability in geo-scale
deployments. GeoBFT operates in rounds, and in each round,
every cluster will be able to propose a single client request for
execution. Each round consists of the three steps sketched
in Figure 4: local replication, global sharing, and ordering
and execution, which we further detail next.
      </p>
      <p>At the start of each round, each cluster chooses a single
transaction of a local client. Next, each cluster locally
replicates its chosen transaction in a Byzantine fault-tolerant
manner using Pbft. At the end of successful local
replication, Pbft guarantees that each non-faulty replica can prove
successful local replication via a commit certi cate.</p>
      <p>Next, each cluster shares the locally-replicated transaction
along with its commit certi cate with all other clusters. To
minimize inter-cluster communication, we use a novel
optimistic global sharing protocol. Our optimistic global
sharPC1
r1;1
C1 r1;2
r1;3</p>
      <p>c2
PC2
r2;1
C2 r2;2
r2;3
Local
Request</p>
      <p>Local Pbft
Consensus</p>
      <p>on m1
Local Pbft
Consensus
on m2</p>
      <p>Local
Replication
E
x
e
c
u
t
e
m
1
m
Global Local 2
Sharing Sharing</p>
      <p>Local</p>
      <p>Inform
ResilientDB
Zyzzyva
ing protocol has a global phase in which clusters exchange
locally-replicated transactions, followed by a local phase in
which clusters distribute any received transactions locally
among all local replicas. Finally, after receiving all
transactions that are locally-replicated in other clusters, each
replica in each cluster can deterministically order all these
transactions and proceed with their execution. After
execution, the replicas in each cluster inform only local clients
of the outcome of the execution of their transactions (e.g.,
con rm execution or return any execution results).
6.</p>
    </sec>
    <sec id="sec-5">
      <title>RESILIENTDB</title>
      <p>Although e cient consensus can help increase the
throughput of a permissioned blockchain application, we believe this
philosophy only re ects a one-sided story. In speci c, the
design and implementation of the underlying system also plays
a major role in determining its scalability.</p>
      <p>
        We use Figure 5 to illustrate such a possibility. In this
gure, we measure the throughput of our optimally designed
permissioned blockchain system ResilientDB [
        <xref ref-type="bibr" rid="ref11 ref12">11, 12</xref>
        ] against
a protocol centric permissioned blockchain system that adopts
practices suggested in BFTSmart [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. We intentionally make
ResilientDB adopt the slow Pbft protocol while the other
system employs the fast Zyzzyva protocol. Despite this,
ResilientDB achieves a throughput of 175K transactions
per second, scales up to 32 replicas, and attains up to 79%
more throughput.
      </p>
      <p>ResilientDB lays down an e cient client-server
architecture. At the application layer, we allow multiple clients to
co-exist, each of which creates its own requests. For this
purpose, clients can either employ an existing benchmark suite
or design a Smart Contract suiting to the active application.
Next, clients and replicas use the transport layer to exchange
messages across the network. ResilientDB also provides a
storage layer where all the metadata corresponding to a
request and the blockchain is stored. At each replica, there is
an execution layer where the underlying consensus protocol
is run on the client request, and the request is executed.</p>
      <p>ResilientDB includes multi-threaded deep pipelines that
allow it to achieve high-throughput consensus among its
replicas (refer to Figure 6). We permit increasing (or
decreasing) the number of threads of each type. With each
replica, we associate multiple input and output threads to
communicate with the network. ResilientDB also
associates multiple batch-threads with the primary replica to
batch client requests. Using an optimal batching policy can
help mask consensus costs. To process other messages and
run the phases of an underlying consensus protocol,
ResilientDB also includes several worker-threads. Once a
request is replicated, each replica asks its execute-thread to
execute the request and reply to the client. Depending on
the underlying protocol, we also allow threads for
checkpointing, garbage collection, and certi cate exchange.</p>
    </sec>
    <sec id="sec-6">
      <title>CONCLUSIONS</title>
      <p>In this work, we present design of three e cient BFT
protocols that aim to reduce the costs associated with BFT
consensus. Our protocols present mechanisms to reliably
reduce phases of Pbft protocol, parallelize Pbft protocol and
scale Pbft to global setting by clustering replicas.
Moreover, these protocols can be easily combined to yield a single
high-throughput consensus protocol. Further, we illustrate
that the design and implementation of the underlying
permissioned blockchain fabric is equally important.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Amiri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Agrawal</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <surname>A. E. Abbadi.</surname>
          </string-name>
          <article-title>CAPER: A cross-application permissioned blockchain</article-title>
          .
          <source>Proceedings of the VLDB Endowment</source>
          ,
          <volume>12</volume>
          (
          <issue>11</issue>
          ):
          <volume>1385</volume>
          {
          <fpage>1398</fpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>E.</given-names>
            <surname>Androulaki</surname>
          </string-name>
          et al.
          <article-title>Hyperledger Fabric: A distributed operating system for permissioned blockchains</article-title>
          .
          <source>In Proceedings of the Thirteenth EuroSys Conference</source>
          , pages
          <volume>30</volume>
          :1{
          <fpage>30</fpage>
          :
          <fpage>15</fpage>
          . ACM,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A.</given-names>
            <surname>Bessani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sousa</surname>
          </string-name>
          , and
          <string-name>
            <surname>E. E. P. Alchieri.</surname>
          </string-name>
          <article-title>State machine replication for the masses with bft-smart</article-title>
          .
          <source>In DSN</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Castro</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Liskov</surname>
          </string-name>
          .
          <article-title>Practical byzantine fault tolerance</article-title>
          .
          <source>In Proceedings of the Third Symposium on Operating Systems Design and Implementation</source>
          , pages
          <volume>173</volume>
          {
          <fpage>186</fpage>
          . USENIX Association,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A.</given-names>
            <surname>Clement</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Wong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Alvisi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Dahlin</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Marchetti</surname>
          </string-name>
          .
          <article-title>Making byzantine fault tolerant systems tolerate byzantine faults</article-title>
          .
          <source>In Proceedings of the 6th USENIX Symposium on Networked Systems Design and Implementation</source>
          , NSDI, pages
          <volume>153</volume>
          {
          <fpage>168</fpage>
          . USENIX Association,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>G.</given-names>
            <surname>Golan Gueta</surname>
          </string-name>
          , I. Abraham,
          <string-name>
            <given-names>S.</given-names>
            <surname>Grossman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Malkhi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Pinkas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Reiter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Seredinschi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Tamir</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Tomescu</surname>
          </string-name>
          .
          <article-title>Sbft: A scalable and decentralized trust infrastructure</article-title>
          .
          <source>In 49th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN)</source>
          , pages
          <fpage>568</fpage>
          {
          <fpage>580</fpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>S.</given-names>
            <surname>Gupta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hellings</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Rahnama</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Sadoghi</surname>
          </string-name>
          .
          <article-title>An in-depth look of BFT consensus in blockchain: Challenges and opportunities</article-title>
          .
          <source>In Proceedings of the 20th International Middleware Conference Tutorials</source>
          , pages
          <volume>6</volume>
          {
          <fpage>10</fpage>
          . ACM,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S.</given-names>
            <surname>Gupta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hellings</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Rahnama</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Sadoghi</surname>
          </string-name>
          .
          <article-title>Proof-of-Execution: Reaching Consensus through Fault-Tolerant Speculation</article-title>
          . CoRR, abs/
          <year>1911</year>
          .00838,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>S.</given-names>
            <surname>Gupta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hellings</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Sadoghi</surname>
          </string-name>
          .
          <article-title>Brief announcement: Revisiting consensus protocols through wait-free parallelization</article-title>
          .
          <source>In 33rd International Symposium on Distributed Computing (DISC</source>
          <year>2019</year>
          ), volume
          <volume>146</volume>
          , pages
          <issue>44:1</issue>
          {
          <issue>44</issue>
          :
          <fpage>3</fpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.</given-names>
            <surname>Gupta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hellings</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Sadoghi</surname>
          </string-name>
          .
          <article-title>Scaling blockchain databases through parallel resilient consensus paradigm</article-title>
          .
          <source>CoRR</source>
          , abs/
          <year>1911</year>
          .00837,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>S.</given-names>
            <surname>Gupta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Rahnama</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hellings</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Sadoghi</surname>
          </string-name>
          . Resilientdb:
          <article-title>Global scale resilient blockchain fabric</article-title>
          .
          <source>PVLDB</source>
          ,
          <volume>13</volume>
          (
          <issue>6</issue>
          ):
          <volume>868</volume>
          {
          <fpage>883</fpage>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>S.</given-names>
            <surname>Gupta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Rahnama</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Sadoghi</surname>
          </string-name>
          .
          <article-title>Permissioned blockchain through the looking glass: Architectural and implementation lessons learned</article-title>
          .
          <source>In 40th IEEE International Conference on Distributed Computing Systems</source>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>S.</given-names>
            <surname>Gupta</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Sadoghi</surname>
          </string-name>
          .
          <source>Blockchain Transaction Processing</source>
          , pages
          <volume>1</volume>
          {
          <fpage>11</fpage>
          . Springer International Publishing,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>S.</given-names>
            <surname>Gupta</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Sadoghi</surname>
          </string-name>
          .
          <article-title>EasyCommit: A non-blocking two-phase commit protocol</article-title>
          .
          <source>In Proceedings of the 21st International Conference on Extending Database Technology</source>
          , pages
          <volume>157</volume>
          {
          <fpage>168</fpage>
          .
          <string-name>
            <surname>Open</surname>
            <given-names>Proceedings</given-names>
          </string-name>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>J.</given-names>
            <surname>Katz</surname>
          </string-name>
          and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lindell</surname>
          </string-name>
          . Introduction to Modern Cryptography.
          <source>Chapman and Hall/CRC, 2nd edition</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>R.</given-names>
            <surname>Kotla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Alvisi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Dahlin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Clement</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E.</given-names>
            <surname>Wong</surname>
          </string-name>
          . Zyzzyva:
          <article-title>Speculative byzantine fault tolerance</article-title>
          .
          <source>In Proceedings of Twenty- rst ACM SIGOPS Symposium on Operating Systems Principles</source>
          , pages
          <volume>45</volume>
          {
          <fpage>58</fpage>
          . ACM,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>S.</given-names>
            <surname>Nakamoto</surname>
          </string-name>
          .
          <article-title>Bitcoin: A peer-to-peer electronic cash system</article-title>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>F.</given-names>
            <surname>Nawab</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Sadoghi</surname>
          </string-name>
          . Blockplane:
          <article-title>A global-scale byzantizing middleware</article-title>
          .
          <source>In 35th International Conference on Data Engineering (ICDE)</source>
          , pages
          <fpage>124</fpage>
          {
          <fpage>135</fpage>
          . IEEE,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>T.</given-names>
            <surname>Qadah</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Gupta</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Sadoghi</surname>
          </string-name>
          .
          <article-title>Q-store: Distributed, multi-partition transactions via queue-oriented execution and communication</article-title>
          .
          <source>In Proceedings of the 23nd International Conference on Extending Database Technology</source>
          , pages
          <volume>73</volume>
          {
          <fpage>84</fpage>
          . OpenProceedings.org,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>G.</given-names>
            <surname>Wood.</surname>
          </string-name>
          <article-title>Ethereum: a secure decentralised generalised transaction ledger</article-title>
          ,
          <year>2016</year>
          . EIP-
          <volume>150</volume>
          revision.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>M.</given-names>
            <surname>Yin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Malkhi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. K.</given-names>
            <surname>Reiter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. G.</given-names>
            <surname>Gueta</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Abraham.</surname>
          </string-name>
          <article-title>HotStu : BFT consensus with linearity and responsiveness</article-title>
          .
          <source>PODC</source>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>