<!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>ElasticBloC: A Massively Scalable Architecture For Blockchain Based Applications</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Hadi Jibbawi</string-name>
          <email>hadi.jibbawi@gmail.com</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yehia Taher</string-name>
          <email>yehia.taher@uvsq.fr</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ali Jaber</string-name>
          <email>ali.jaber@ul.edu.lb</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Rafiqul Haque</string-name>
          <email>Rafiqul.Haque@intelligencia.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Intelligencia R&amp;D</institution>
          ,
          <addr-line>Paris</addr-line>
          ,
          <country country="FR">France</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Lebanese University</institution>
          ,
          <addr-line>Beirut</addr-line>
          ,
          <country country="LB">Lebanon</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Université de Versailles - ParisSaclay</institution>
          ,
          <addr-line>Versailles</addr-line>
          ,
          <country country="FR">France</country>
        </aff>
      </contrib-group>
      <fpage>73</fpage>
      <lpage>82</lpage>
      <abstract>
        <p>-Blockchain is an emerging technology that would Security is an ever-growing concern in the financial industry. possibly disrupt the existing centralized financial systems lead With the advent of digital financial information systems and to the rise to a new technology era for the financial sector. rich transaction technologies, the operations have become Amdadniatgioenmaellnyt,, deitfcf.erseungtgensetwthuasteBclaoscekschsuacinh haasshmeaulcthhcwaried,eirdaenptpiltiy- faster and the operational activities have spanned largely; at cations. Blockchain is founded on distributed ledger technology the same time, the risk of breaching information has been that ensures trust through consensus between parties in a peer- increased enormously. Although, there are advanced technoloto-peer network instead of the need to a third party or central gies encryption technologies that enable cryptic transmission authority. However, blockchain has several limitations such as of financial data between financial actors (e.g., banks, insider fsocralBabloilciktyc,hlaaitnenbceyi,ngloawdothprteodugbhyputhtewinhdicuhstarriees.thOef malal,inscbalaarbriileirtys intruder), security remain a problem because cryptographic is the most critical limitation of blockchain that needs an algorithms are still weak to many attacks launched by the efficient and effective solution. In this paper, we aim to enhance adversaries. Blockchain was deemed a major breakthrough the scalability of blockchain by designing and implementing technology that would prevent some unsolved security issues. a massively scalable architecture for private blockchain-based Therefore, the huge adoption of Blockchain was forecasted by awpeplciocantdiounctse,dcaslelveedraEl laesxtpiceBrilmoCen.tTsoonevEalluaasttiecBoluorC.coTnhteribruestiuolnts, many such as Gartner within not only the financial industry showed that ElasticBloC is a high-performant architecture that but also the other industries. scales massively. Furthermore, trust is critical when it is related to commuIndex Terms-Blockchain, Performance, Scalability nication between two or more parties. Historically and till now, trust is achieved mostly by the third party like banks or I. INT RO D U CTI O N authorities, that holds our data. In other words, communicating Over the last few years, Blockchain has drawn huge atten- parties rely on a common ledger which is held and managed tion to industry experts, technology evangelists, and academic by this third party. As a typical example, Clearing Households researchers due to its immense potentiality described in a large validates and manages the communication between trading body of literature and other sources such as blogs, forums, parties. So Blockchain technology comes as a potential techetc. Many researchers and industry experts argued that it is nology. Its disruptive aspect is that it eliminates the need for a revolutionary technology like the Internet that will provide intermediaries while performing transactions [7]. Hence, it can a highly efficient way to transact in a secure, immutable, empower groups of parties to agree on events without needing transparent, and auditable manner. In 2016, it was one of the the third party, such as the promise of this new technology [8]. technologies that reached a peak in inflated expectation; since Our study revealed several limitations of Blockchain techthen the interests in blockchain have been soaring to different nologies, as mentioned in the earlier section. However, the types of industries. In particular, the interest of Blockchain major concerns of Blockchain technologies are two-fold: scaltechnology among the financial industry started to grow as ability and performance. Scalability is considered the critical it might be a potential one that would enable them to avoid drawback that stands against blockchain technology. In fact, financial debacles such as the Heartland Payment Systems data it is the first limitation that must be addressed to make breach that had happened in 2008. blockchain an acceptable technology. The reason is obvious. Consider a Walmart payment system that processes more 250 transactions every hour. Since Blockchain technology</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>replicates blocks in different consensus servers hosted in dif- jointly manage a public Blockchain (BC) that ensures
endferent locations to increase trust and guarantee security against to-end privacy and security. The overlay is organized as
any odd modification, Blockchain must require a scalable distinct clusters to reduce overheads and the cluster heads are
infrastructure not only at the operational level but also at the responsible for managing the public BC. LSB incorporates
physical level. Because blockchain technologies are founded several optimizations which include algorithms for lightweight
on immutability principle which means that every block cre- consensus, distributed trust and throughput management. To
ated cannot be updated or replaced by a new block. All new ensure scalability, the overlay nodes are organized as clusters
blocks will be appended only which will require physical and only the cluster heads (CH) are responsible for managing
scalability especially for retail companies like Walmart, banks, the public BC. Technically speaking, this is a conventional
and high-end manufacturing companies. approach to gain scalability which is very limited. However,</p>
      <p>
        In the existing blockchain protocols such as Ethereum, Bit- it is not possible to gain massive scalability because it is not
coin, Ripple, and Tendermint, each participating node should supported by underlying system-level technologies such as file
process every transaction in the network. In this case, nodes system.
need more storage, bandwidth, and computation power as Zamani et al. [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] developed a solution called RapidChain
the blockchain expands. Indeed, this technology will lose its sharding-based public blockchain protocol that is resilient to
decentralization, because the blockchain will reach a limit Byzantine faults from up to a 1/3 fraction of its
particithat only specific nodes can process a block [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. According pants and achieves complete sharding of the communication,
to Vitalik, with the current design of blockchain technology, computation, and storage overhead of processing transactions
scalability cannot be achieved because it focuses on decentral- without assuming any trusted setup. RapidChain employs an
ization and security, not scalability. While a decentralization optimal intra-committee consensus algorithm that can achieve
consensus mechanism offers some critical benefits, such as very high throughputs via block pipelining, a novel gossiping
fault tolerance, a strong guarantee of security, political neu- protocol for large blocks, and a provably-secure
reconfigutrality, and authenticity, it comes at the cost of scalability. ration mechanism to ensure robustness. Using an efficient
Existing solutions, some as to be mentioned in Section 2, vary cross-shard transaction verification technique, the proposed
in their aspects. Some scale to a limit, another downgrade the protocol avoids gossiping transactions to the entire network.
performance [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ], etc. The empirical evaluations suggest that RapidChain can
pro
      </p>
      <p>
        Realizing the significance of a massively scalable infras- cess (and confirm) more than 7,300 tx/sec with an expected
tructure of Blockchain technology which cannot be addressed confirmation latency of roughly 8.7 seconds in a network of
by existing solutions, in this paper we developed a scalable 4,000 nodes with an overwhelming time-to-failure of more
Blockchain technology in which scalability is strongly corre- than 4,500 years. RapidChain is focused more on performance.
lated with the performance that has an impact on blockchain A limited effort was put on scalability; not to mention that the
efficiency. scalability is logical like the one proposed in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. This does
      </p>
      <p>
        The remainder of this paper is organized as follows. Section not address the massive scalability limitation.
2 discusses works related to the core issue of this paper. We Eyal et al. [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] proposed a protocol called Bitcoin-NG that
explained our solution ElasticBloc in section 3. We reported is founded on several novel metrics of interest in
quantiour experiments with ElasticBloc and discussed the results in fying the security and efficiency of Bitcoin-like blockchain
Section 4. We present a conclusion in Section 5. protocols. We implement Bitcoin-NG and perform large-scale
experiments at 15% the size of the operational Bitcoin system,
II. RELATED W O RKS using unchanged clients of both protocols. These experiments
demonstrate that Bitcoin-NG scales optimally, with bandwidth
      </p>
      <p>
        This research revolves around the scalability issue of limited only by the capacity of the individual nodes and
blockchain technology. In this section, we described a review latency limited only by the propagation time of the network.
of works related to this issue. Ehmke et al. [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] proposed a The scalability yet again is achieved at logical, not at the
solution based on the idea of Ethereum to keep the state of physical level. Zhang and Jacobsen proposed DCS properties
the system explicitly in the current block but further pursues (Decentralization, Consistency, and Scalability) as an analogy
this by including the relevant part of the current system state to the CAP theorem. The authors provided a general structure
in new transactions as well. This enables other participants of the blockchain platform which decomposes the distributed
to validate incoming transactions without having to download ledger into six layers: Application, Modeling, Contract,
Systhe whole blockchain initially. The scalability in the proposed tem, Data, and Network. Finally, we classify research angles
solution is the logical level that is, the authors’ developed across three dimensions: DCS properties impacted, targeted
techniques extending Merkle Patricia Tree [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. In [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], Dorri et applications, and related layers. The proposed solution is yet
al. proposed a tiered Lightweight Scalable Blockchain (LSB) again limited in terms of scalability. Guo et al. [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] proposed
that is optimized for IoT requirements. The authors explored a solution that relies on two key techniques: a fair contract
LSB in a smart home setting as a representative example partition algorithm leveraging integer linear programming to
of broader IoT applications. LSB achieves decentralization partition a set of smart contracts into multiple subsets, and
by forming an overlay network where high resource devices a random assignment protocol assigning subsets randomly
to a subgroup of users. This is a logical model for gaining used technology that relies on Byzantine Consensus Protocol
scalability as all the other authors proposed. which reduces the computational cost significantly. The core
      </p>
      <p>
        To sum up, the research on Blockchain technology is still of this protocol Byzantine Fault Tolerance [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The extreme
limited. Most of the research focuses on the performance of parallelism ensued by the file system and BFT based consensus
blockchain applications. The solutions concerning scalability protocol makes ElasticBloC high-performant.
proposed in the literature by far deals with logical scalability
such as partitioning/sharding blocks. However, it is not ade- B. Architecture of ElasticBloC
quate to gain massive scalability which needs physical level
scalability that is achieved through system-level technologies
such as distributed file systems.
      </p>
      <p>ElasticBloC is composed of several components. Fig. 1
depicts the architecture of ElasticBloC. The components are
briefly explained in the following:
III. ELASTICBLOC – THE MASSIVELY SCALABLE</p>
      <p>BLOCKCHAIN SOLUTION</p>
      <p>This section provides a detailed description of the core
contribution of this paper. It begins with an overview of
ElasticBloC, then a description of the high-level architecture
of ElasticBloC is provided followed by a presentation of
the solution workflow. The functionalities of ElasticBloC are
briefly explained and finally, I explained the implementation
of ElasticBloC.</p>
    </sec>
    <sec id="sec-2">
      <title>A. A Brief Overview of ElasticBloC</title>
      <p>ElasticBloC is a solution for developing blockchain
applications. It is a generic solution that aims to support building
all types of blockchain-based applications such as asset
management, smart contract or notarization in a scalable manner.
The users can deploy these applications on ElasticBloC which
perform the internal blockchain functions such as generating
blocks, adding blocks in the storage, retrieving the blocks,
etc. ElasticBloC guarantees scalability at the physical level
for blockchain applications.</p>
      <p>ElasticBloC relies on a cluster computing paradigm that
underpins developing an ecosystem consisting of a massive
number of physical nodes (servers). As mentioned earlier, the
focus of the solution proposed in this paper is to achieve
the scalability of the physical layer instead of the logical
layer. The scalability at the logical layer can be achieved in
many ways such as the logical partition of blocks and then
store the partition in different nodes within the cluster which
consists of the limited number of nodes. However, scalability
at the physical level needs extensible architecture. ElasticBloC
architecture is extensible which enables users to add physical
nodes on the fly or offline to enhance the capability to store
any number of blocks generated by transaction applications. In
order to gain easy extensibility, it reuses an existing distributed
file system that simplifies adding new nodes. This file system
supports commodity hardware; therefore, building a large
cluster using ElasticBloC is cost-effective.</p>
      <p>
        Performance is another issue dealt with by ElasticBloC. The
file system adopted in blockchain support extreme parallelism
as it underlies the MapReduce functional programming model
used by the applications to read and write blocks. Furthermore,
ElasticBloC adopted a technology that avoids computationally
expensive proof of work [48]. Proof-of-work based consensus
protocols are also slow, requiring up to an hour to reasonably
confirm a payment to prevent double-spending. ElasticBloC
• Transaction Gateway: The transaction gateway is a
connection component that enables to discover and connect
with blockchain endpoint. It is also a channel through
which users launch a transaction request.
• Request Receiver: It is an upfront server that receives
the HTTP requests.
• Communication Interface: It is a standard interface
for communication with Python applications. Since
ElasticBloC is developed using Python programming
language, this component is critical in communicating with
Python applications
• Operation Synthesizer: It handles various operations
including scaling up complex applications, object-relational
mapping, validation of a request, authentication checking,
and upload handling, etc.
• Blockchain Engine: It is one of the key components that
perform a multitude of tasks including handling events,
data modeling, and operation orchestration.
• Functional Interface: It is another important component
of ElasticBloC. It allows for Byzantine Fault Tolerant
replication of applications written in any programming
language. The consensus engine communicates with the
application via a socket protocol that satisfies the
functional interface. This interface consists of 3 primary
message types that get delivered from the core to the
application. The application replies with corresponding
response messages. It consists of three message types:
– DeliverTx Messages: Each transaction in the
blockchain is delivered with this message.
– CheckTx Messages: The CheckTx message is similar
to DeliverTx, but it is only for validating transactions.
– Commit Messages: The Commit message is used to
compute a cryptographic commitment to the current
application state, to be placed into the next block
header.
• Broadcasting Interface: It receives HTTP post request
from blockchain engine and broadcast it blockchain
repository.
• Blockchain Repository: It securely and consistently
replicates an application on many nodes. It works even
if up to 1/3 of machines fail in arbitrary ways [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Every
machine that is not faulty sees the same transaction log
and computes the same state. Secure and consistent
replication is a fundamental problem in distributed systems;
it plays a critical role in the fault tolerance of a broad
range of applications, from currencies, to elections, to
infrastructure orchestration, and beyond.
      </p>
      <p>
        The ability to tolerate machines failing in arbitrary ways,
including becoming malicious, is known as Byzantine
fault tolerance (BFT) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
• Blockchain Database Network: It is a network of four
or more nodes.
• Scalable Block Storage Cluster: This is the most
important component that enhances physical infrastructure
to a massive number of nodes. It enormously increases
the capability of storing blocks as records. It is founded
on column-oriented databases that are supported by a
distributed file system that can support building a blockchain
lake consisting of thousands of nodes. The cluster consists
of one or more master nodes and hundreds of data
nodes that essentially store the blocks. It is highly faulted
tolerant because each block is replicated into three nodes
(can be more depending on users’ preference). If any node
is not functioning two other nodes are available.
      </p>
      <p>In fact, it is not only a storage cluster, but the
columnoriented database also enables querying and managing
blocks.</p>
    </sec>
    <sec id="sec-3">
      <title>C. ElasticBloC Operational Methods</title>
      <p>ElasticBloC enables us to perform different blockchain
operations using various methods that are described into
two categories: BigchainDB methods that are provided by
BigchainDB server and HBase connection methods for
establishing a connection with BigchainDB and performing various
operations. I implemented all HBase connection methods
within the scope of this paper. These methods are presented
in the following subsections.</p>
      <p>a) BigchainDB Methods</p>
      <p>ElasticBloC provides a library that allows the
client to perform ElasticBloC functionalities.
This library is called “bigchaindb driver”. The
table below lists the major methods that a client
can use to transact or operate in ElasticBloC.
The above table represents the interface of functions
that a client can use to communicate with ElasticBloC.
This facilitates dealing with such modular architecture.
The reason behind this facilitation is that once a client
transacts or operates via these functions, the rest of
the flow is automated i.e. the operation flows through
the required components automatically. So, the client
communicates with one component.</p>
      <p>BigchainDB driver calls in its method’s implementation
the methods of the BigchainDB-HBase connector, that
will be explained in the successive section, to perform
any operation that accesses HBase, such as retrieving data
(transactions, assets, metadata, etc.), checking the
preexistence of a newly submitted transaction, or storing of
committed block with its details.
b) BigchainDB-HBase Connector</p>
      <p>BigchainDB-HBase connector is considered the core of
our contribution. In this connector, I implemented a group
of methods that BigchainDB can expose in order to
connect and operate with HBase as a backend database.
The following table describes the methods implemented
with the connector.</p>
      <p>Hence the preceding methods represent the interface
of the connector that integrates BigchainDB sever with</p>
      <sec id="sec-3-1">
        <title>HBase.</title>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>D. Solution Workflow</title>
      <p>
        ElasticBloC has a unique general workflow. In fact, this
workflow differs in its small parts according to the submitted
transaction mode or the nature of the desired operation. The
diagram below shows the general workflow of ElasticBloC.
Once the client has a valid transaction i.e. the transaction
conforms to the BigchainDB Transactions Specification, he
submits it to one or more ElasticBloC nodes through the
BigchainDB HTTP API [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. In particular, it embeds the
transaction in an HTTP request and specifies one of the
predefined ends points to send through. These endpoints are:
• POST /API/v1/transactions
• POST /API/v1/transactions?mode=async
• POST /API/v1/transactions?mode=sync
• POST /API/v1/transactions?mode=commit
      </p>
      <p>
        After that, the HTTP request holding the transaction arrives
at the BigchainDB node at the Gunicorn [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] web server
in that node. Then Gunicorn forwards the request towards
the BigchainDB server using its exposed Web Server
Gateway Interface (WSGI). The request reaches the BigchainDB
server through the Flask web application development
framework which simplifies working with WSGI/Gunicorn. The
BigchainDB server uses a Python method to check the
transaction’s validity. If the transaction is not valid, then the HTTP
response status code is 400 which means error. Otherwise, it
is put into a new JSON string and sent to the local Tendermint
instance via Tendermint Broadcast API.
      </p>
      <p>Method
connect
create tables
delete tables
store transaction
store transactions
get transaction
get transactions
store metadatas
get metadata
store asset
store assets
get asset
get assets
store block
get block
get spent
get latest block
get txids filtered
get owned ids
get spending
transactions
get block with
transaction
delete transaction
connection,
transaction ids
connection,
metadata
connection,
transaction ids
connection, asset
connection,
assets
connection,
asset id
connection,
asset ids
connection, block
connection,
block id
connection,
transaction id,
output index
Connection
connection,
asset id,
operation
connection,
owner
connection,
inputs
connection,
transaction id
connection,
transaction id
delete transactions connection,</p>
      <p>transaction ids
delete latest block connection
store unspent
outputs
get unspent
outputs
delete unspent
outputs
store pre commit
state
get pre commit
state
connection,
unspent outputs
connection,
query</p>
      <p>*,
connection,
unspent outputs
Connection, state
Connection,
commit id
Parameters
backend, host,
port, name,
connection timeout
connection,
dbname
connection,
dbname
connection,
signed transaction</p>
      <p>Description
Creates a new connection
to the backend database
(HBase)
Creates tables in HBase to
be used by BigchainDB
Deletes the created tables
in HBase
Stores a transaction in</p>
      <p>Transactions table
connection, Stores a list of
transacsigned transactions tions in Transaction table
connection, Gets a transaction from
transaction id Transactions table</p>
      <p>Gets a list of transactions
from Transactions table
Stores metadata in
Metadata table
Gets metadata from
Metadata table
Stores asset in Assets
table
Stores a list of assets in
Assets table
Gets an asset from Assets
table
Gets a list of assets from
Assets table
Stores a block in Blocks
table
Gets a block from Blocks
table
Check if a transaction id
was already used as
an input. A transaction
can be used as an input
for another transaction.</p>
      <p>Bigchain needs to make
sure that a given txid is
only used once Gets the
spending transaction
Gets the latest committed
block
Gets all transactions for
a particular asset id and
optional operation
Gets a list of transactions
ids we can use which has
inputs
Gets transactions which
spend given inputs
Gets block holding a
specific transaction
Deletes a transaction from
database and its relevant
asset and metadata
Deletes transactions from
database and their relevant
assets and metadata
Delete the latest commited
block
Stores unspent outputs in
utxos table
Gets unspent outputs
Deletes unspent outputs
from utxos table
Stores pre commit state
Gets pre commit state of
a commit id</p>
      <p>Now, the operations between the local Tendermint
instance and BigchainDB are established by the
Application Blockchain Interface (ABCI) which is an integral part
of Tendermint and implemented also at the BigchainDB
server side. In this case, Tendermint uses the broadcast
endpoint which is relevant to the initial BigchainDB’s
request chosen. For example, if a client sent a transaction
through /API/v1/transactions?mode=commit endpoint,
Tendermint uses /broadcast tx commit endpoint respectively.
Tendermint stores the initial validated transactions in its own
mempool (memory pool). When it decides to create a block,
Tendermint sends the creation request to BigchainDB by
exposing a specific ABCI method. Then, it starts to send initial
validated transactions that needed to be grouped in the desired
block also using another ABCI method to BigchainDB which
rechecks the validity of the transaction before it is added to
the block.</p>
      <p>The proposed block is then broadcasted to the network by
Tendermint. Then it makes sure that all the nodes agree on this
block in a Byzantine fault tolerance way. When the network
agrees on a new block, Tendermint appends the new block
to the blockchain in its local LevelDB, and the BigchainDB
server receives a commit message enforcing it to write the
new block and the including transactions, assets, and metadata
in a separate way to the HBase repository. HBase then writes
these data into the Hadoop Distributed File System underlying
it. The same process is done at each node in the ElasticBloC
network.</p>
    </sec>
    <sec id="sec-5">
      <title>E. Implementation of ElasticBloC</title>
      <p>As mentioned earlier, my goal is to use existing technologies
for building ElasticBloC. The reason is two-fold: avoiding
reinventing the same technology that already exists and it
would be impractically ambitious to develop a complex
architecture like ElasticBloC. I developed ElasticBloC using
the most advanced technologies. I briefly described the main
technologies in the following:
a) Tendermint</p>
      <p>
        Tendermint is a secure state-machine replication
algorithm in the blockchain paradigm. It provides a form
of BFT-ABC (Atomic Broadcast) that is furthermore
accountable - if safety is violated, it is always possible
to verify who acted maliciously [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        Tendermint begins with a set of validators, identified by
their public key, where each validator is responsible for
maintaining a full copy of the replicated state, and for
proposing new blocks (batches of transactions), and
voting on them [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. Each block is assigned an incrementing
index, or height, such that a valid blockchain has only
one valid block at each height. At each height, validators
take turns proposing new blocks in rounds, such that for
any given round there is at most one valid proposer. It
may take multiple rounds to commit a block at a given
height due to the asynchrony of the network, and the
network may halt altogether if one-third or more of the
validators are offline or partitioned [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Validators engage
in two phases of voting on a proposed block before it
is committed, and follow a simple locking mechanism
which prevents any malicious coalition of less than
onethird of the validators from compromising safety [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
In this, the broadcast interface and the Blockchain
repository (See in Fig. 1) are implemented using Tendermint.
b) BigchainDB
      </p>
      <p>
        The Blockchain Engine of ElasticBloC is implemented
using BigchainDB, which is for database-style
decentralized storage: a blockchain database. BigchainDB
combines the key benefits of distributed DBs and
traditional blockchains, with an emphasis on the scale [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ].
BigchainDB on top of an enterprise-grade distributed
DB, from which BigchainDB inherits high throughput,
high capacity, low latency, a full-featured NoSQL query
language, and permissioning. Nodes can be added to
increase throughput and capacity.
c) HBase
      </p>
      <p>The scalable block storage cluster (See Fig. 1) is
implemented using HBase technology. Although BigchainDB
aims at increasing scalability, yet massive scalability
could not be achieved using BigchainDB.</p>
      <p>
        Therefore, I implemented the scalable block storage
of using HBase. HBase [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] is modeled on Google’s
BigTable database [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. HBase provides a distributed,
fault-tolerant scalable database, built on top of the HDFS
file system [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], with random real-time read/write access
to data. Each HBase table is stored as a multidimensional
sparse map, with rows and columns, each cell having a
timestamp [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. A cell value at a given row and column
is uniquely identified by:
(Table, Row, Column-Family: Column, Timestamp)
⇒
Value
HBase has its own Java client API, and tables in HBase
can be used both as an input source and as an output
target for MapReduce jobs through Table Input and Table
Output Format. There is no HBase single point of failure.
HBase uses Zookeeper [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ], another Hadoop subproject,
for the management of partial failures.
      </p>
      <p>The HBase connector which is the primary
contribution of this paper was implemented using Python. The
first step of building the connector was to indicate the
tables that are needed to store the architecture data
(blocks, transactions, assets . . . ). The second step was
to write a file that opens a connection to Hbase, based
on the connection parameters and values given by the
BigchainDB configuration file, and return an instance of
this connection.</p>
      <p>In the next, the schema file was written. The schema
file defines and creates the database schema at HBase
once BigchainDB is initialized. After that, the required
querying methods were implemented. Some of these
methods are for retrieving data, others for storing,
updating or deleting data. In addition to the above, some
web application development tools have been used in
developing.</p>
    </sec>
    <sec id="sec-6">
      <title>F. Experiments &amp; Results</title>
      <p>This section describes some experiments that we conducted
on ElasticBloC and discusses its results. The goal of the
experiments is to evaluate two characteristics of ElasticBloC:
scalability and performance. I conducted the following
experiments are: Initial loading experiment, functionality
experiment, and its result, scalability experiment and its result, and
the ElasticBloC performance evaluation.</p>
      <sec id="sec-6-1">
        <title>a) Initial Loading Experiment</title>
        <p>• Purpose:</p>
        <p>Testing the start-up running and initializing of the
whole architecture.
• Requirements:</p>
        <p>The required steps are to run the ElasticBloC
components and check the connectivity between these
components. The following summarizes these steps:
– Run the Hadoop cluster and HBase.
– Run the BigchainDB server.</p>
        <p>– Run Tendermint instance.
• Results:</p>
        <p>The architecture components run successfully and the
connection between the components is established.
Once established, BigchainDB executed the schema
file in the implemented connector and created the
needed tables in HBase. The following screenshots
represent some results of the successful initial start-up.</p>
        <p>As we can see above, the components ran
successfully and Tendermint opened the required sockets and
established the ABCI Handshaking. It compares the
application’s highest height and the application hash
Fig. 4. BigchainDB Web Interface After Startup.</p>
        <p>Fig. 5. Tendermint Start-up.
to that stored in HBase in order to confirm that the
data is the same.
b) Functionality Experiment
• Purpose: Test if ElasticBloC performs operations
normally.
• Required Steps: Testing the functionality of
ElasticBloC is done through writing and executing a Python
script that gets uses of the bigchaindb driver library.
The steps below show the required steps:
– Run ElasticBloc components.
– Write a Python script that creates a transaction,
fulfills it with the sender private key, sends the
transaction in a commit mode. The following
Figure represents the testing Python script.
• Results</p>
        <p>The transactions are successfully created and sent.
Because the sent transactions are in commit mode,
so directly BigchainDB created a block for the
transaction. This block was appended to the Tendermint
local copy of the blockchain, and the block, including
transaction, assets, and metadata are stored in their
specific tables at HBase.</p>
        <p>Fig. 7 shows the created block in the blockchain stored
at Tendermint.</p>
        <p>Fig. 8 shows the result of the submitted transaction
with its details retrieved from HBase.
• Discussion</p>
        <p>The experiment is conducted successfully and the
architecture is working finely.</p>
        <p>One of the positive aspects of the architecture is that
creation, fulfillment, sending, and validating of the
transaction, with the block creation and appending to
the blockchain, and its storage in HBase took around
only one second.</p>
        <p>One major limitation of the experiment is that these
experiments were conducted on a limited blockchain
dataset. The reason behind this is that there was neither
possibility to access a large blockchain dataset nor time
to build our own large dataset. Instead, we take into
consideration previous benchmarks and experiments
were done using huge bulks of data in which it helps
us to evaluate our architecture.
c) Scalability Experiment
• Purpose</p>
        <p>Test if ElasticBloC can scale massively.
• Required Steps</p>
        <p>Massive scalability means that ElasticBloC has the
ability to scale as much as it needs on its physical layer.
This could be ensured if we succeeded in adding new
data nodes to the ElasticBloC node. To do that we tried
to add new Hadoop nodes to the Hadoop cluster either
while ElasticBloC is running or when it is offline.
• Results</p>
        <p>The previous experiment is conducted successfully and</p>
      </sec>
      <sec id="sec-6-2">
        <title>ElasticBloC runs normally.</title>
        <p>• Discussion</p>
        <p>As ElasticBloC scales by adding a new server to the
Hadoop cluster, it is feasible to add data nodes either
on fly or offline. This means that ElasticBloC has the
ability to scales massively.
d) Performance Evaluation</p>
        <p>Concerning the large blockchain dataset, we were not able
to access a large blockchain dataset rather than building it.
For that, we could not test ElasticBloC on a massive scale
dataset. Accordingly, we rely on this section on some
previously conducted experiments and workbenches that
give us, theoretically, a clear idea on the performance of
the overall architecture.</p>
        <p>The overall performance of ElasticBloC is evaluated by
its components, in particular, the performance of
Tendermint as a consensus engine and HBase as a backend
database.</p>
        <p>
          Tendermint acts as a high-performant in a large
distributed environment. According to Cosmos white paper
[
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]:
“Despite its strong guarantees, Tendermint provides
exceptional performance. In benchmarks of 64 nodes
distributed across 7 data centers on 5 continents, on
commodity cloud instances, Tendermint consensus can
process thousands of transactions per second, with commit
latencies on the order of one to two seconds. Notably, the
performance of well over thousands of transactions per
second is maintained even in harsh adversarial conditions,
with validators crashing on broadcasting maliciously
crafted votes.”
On the other side, building MongoDB on the top of HDFS
is less efficient than building HBase on the top of the
mention file system. The reason behind this argument is
that HBase is natively developed to run on the top of
HDFS, while MongoDB needs a connector as the third
party to be built on the top of HDFS.
        </p>
        <p>
          Moreover, based on several benchmarks, such as [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] and
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], HBase acts more efficiently than MongoDB in large
Number
of
Nodes
1
2
4
8
16
32
Number
of
Nodes
1
2
4
8
16
32
Number
of
Nodes
1
2
4
8
16
32
Number
of
Nodes
1
2
4
8
16
32
clusters. For instance, End Point [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] performed a series
of tests for the performance of several NoSQL databases
including HBase and MongoDB. The following are some
comparison results for ‘the performance of HBase and
MongoDB in different tests based on [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ].
The above experiment is tangible evidence of how HBase
is more efficient than MongoDB.
        </p>
        <p>Hence, according to theory and pre-existing experiments,
HBase would also enhance the overall performance of
ElasticBloC. However, in its worth case, replacing
MongoDB with HBase will not downgrade the performance
of ElasticBloC.</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>G. Conclusion &amp; Future Work</title>
      <p>Blockchain has not been adopted widely until now except
for cryptocurrency applications, however, it has been identified
as potential technologies for several areas that need trust and
security.</p>
      <p>It is relatively a new technology that needs various
improvements to reach to a maturity level. It has several limitations that
are the main barriers to the wider adoption of this technology.
Of all, scalability and performance are the major limitations
that must be addressed.</p>
      <p>This research primarily aims at addressing the
scalability problem. There are some solutions that offer techniques
methods, and guidelines for scalable blockchain. However, we
found that state-of-the-art technologies focus on scalability at
the logical level which is an inadequate approach if scalability
at the physical level is to be guaranteed. In this paper,
we designed and implement a scalable architecture called
ElasticBloC which enables users to build a highly scalable
blockchain-based ecosystem consisting of tens or more of
physical nodes.</p>
      <p>In this paper, we proposed a solution for the scalability
limitation of blockchain technology. We discussed our solution
ElasticBloC which is a scalable architecture for building
blockchain-based applications such as payment system,
notarization, the smart contract can be implemented by
ensuring scalability. ElasticBloC is a built on cluster computing
paradigm that building infrastructure with a massive
number of nodes. We presented the components with a detailed
description. We discussed the workflow of ElasticBloc. We
discussed technologies that we used in implementing the
proposed solution.</p>
      <p>We tested ElasticBloc to evaluate the scalability. Our
experiment shows that ElasticBloc has the ability to scale up; it is
flexible for adding as many servers. We discussed the results
of our experiments in this paper. Additionally, we provided
some previous workbenches to provide a comparative view of
the abilities of ElasticBloc.</p>
      <p>Several works are lined up for a future extension of
ElasticBloC. However, to the best of our knowledge, the imminent
critical task that must be accomplished in the near future
is extending the functional capabilities of our solution. We
planned to enhance add new modules to ElasticBloC to enable
users to develop permission-less blockchain-based applications
or for permission blockchain-based applications.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Anonymous</surname>
          </string-name>
          . Available Retrieved from https://tendermint.readthedocs.io/en/latest/introduction.html.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Branden</surname>
            ,
            <given-names>J. V.</given-names>
          </string-name>
          <string-name>
            <surname>Building</surname>
          </string-name>
          <article-title>a Performance Model of the Tendermint Concensus Algorithm</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Buchman</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          (
          <year>2016</year>
          ).
          <article-title>Tendermint: Byzantine fault tolerance in the age of blockchains (Doctoral dissertation)</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Buterin</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>A next-generation smart contract and decentralized application platform</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Castro</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Liskov</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          (
          <year>2003</year>
          ). U.S. Patent No.
          <volume>6</volume>
          ,
          <issue>671</issue>
          ,
          <fpage>821</fpage>
          . Washington, DC: U.S. Patent and
          <string-name>
            <given-names>Trademark</given-names>
            <surname>Office</surname>
          </string-name>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Chang</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dean</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ghemawat</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hsieh</surname>
            ,
            <given-names>W. C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wallach</surname>
            ,
            <given-names>D. A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Burrows</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , ... &amp;
          <string-name>
            <surname>Gruber</surname>
            ,
            <given-names>R. E.</given-names>
          </string-name>
          (
          <year>2008</year>
          ).
          <article-title>Bigtable: A distributed storage system for structured data</article-title>
          .
          <source>ACM Transactions on Computer Systems (TOCS)</source>
          ,
          <volume>26</volume>
          (
          <issue>2</issue>
          ),
          <fpage>4</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Condos</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sorrell</surname>
            ,
            <given-names>W. H.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Donegan</surname>
            ,
            <given-names>S. L.</given-names>
          </string-name>
          (
          <year>2016</year>
          ).
          <article-title>Blockchain technology: Opportunities and risks</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8] DBS Group Research. (
          <year>2016</year>
          ).
          <article-title>Understanding blockchain technology and what it means for your business</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Dorri</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kanhere</surname>
            ,
            <given-names>S. S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jurdak</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Gauravaram</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          (
          <year>2017</year>
          ).
          <article-title>LSB: A Lightweight Scalable BlockChain for IoT Security and Privacy</article-title>
          .
          <source>arXiv preprint arXiv:1712</source>
          .
          <fpage>02969</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Ehmke</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wessling</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Friedrich</surname>
            ,
            <given-names>M. C.</given-names>
          </string-name>
          (
          <year>2018</year>
          ).
          <article-title>Proof-of-property: a lightweight and scalable blockchain protocol</article-title>
          .
          <source>In Proceedings of the 1st International Workshop on Emerging Trends in Software Engineering for Blockchain</source>
          . (pp.
          <fpage>48</fpage>
          -
          <lpage>51</lpage>
          ). ACM.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>End</surname>
            <given-names>Point.</given-names>
          </string-name>
          (
          <year>2015</year>
          ). Benchmarking Top NoSQL Databases: Apache Cassandra, Couchbase, Hbase, and MongoDB.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Gandini</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Knottenbelt</surname>
            ,
            <given-names>W. J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Osman</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Piazolla</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          (n.d.).
          <article-title>Performance evaluation of NoSQL databases</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Gao</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xu</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shah</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lu</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Shi</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          (
          <year>2017</year>
          , December).
          <article-title>Scalable blockchain based smart contract execution</article-title>
          .
          <source>In Parallel and Distributed Systems (ICPADS)</source>
          ,
          <year>2017</year>
          IEEE 23rd International Conference on (pp.
          <fpage>352</fpage>
          -
          <lpage>359</lpage>
          ). IEEE.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Gencer</surname>
            ,
            <given-names>E. A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sirer</surname>
            ,
            <given-names>G. E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Van</surname>
            <given-names>Renesse</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            , &amp;
            <surname>Eyal</surname>
          </string-name>
          ,
          <string-name>
            <surname>I.</surname>
          </string-name>
          (
          <year>2016</year>
          ).
          <article-title>BitcoinNG: A Scalable Blockchain Protocol</article-title>
          .
          <source>In NSDI.</source>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>George</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          (
          <year>2011</year>
          ).
          <article-title>HBase: the definitive guide: random access to your planet-size data</article-title>
          . ”
          <string-name>
            <surname>O'Reilly Media</surname>
          </string-name>
          , Inc.”.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Gunicorn - Python WSGI HTTP</surname>
          </string-name>
          <article-title>Server for UNIX. (n.d</article-title>
          .). Retrieved from https://gunicorn.org.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>The</surname>
            <given-names>HTTP</given-names>
          </string-name>
          <string-name>
            <surname>Client-Server</surname>
            <given-names>API</given-names>
          </string-name>
          -
          <source>BigchainDB Server 0.8.2 documentation. (n.d.)</source>
          . Retrieved from http://docs.bigchaindb.com/projects/server/en/v0.
          <article-title>8.2/drivers-clients/httpclient-server-api</article-title>
          .html.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          <source>[18] Internet of Blockchains - Cosmos Network. (n.d.)</source>
          . Retrieved from https://cosmos.network/resources/whitepaper.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>James-Lubin</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          (
          <year>2015</year>
          , January 22).
          <article-title>Blockchain scalability</article-title>
          . Retrieved from https://www.oreilly.com/ideas/blockchain-scalability.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Kwon</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>Tendermint: Consensus without Mining</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>McConaghy</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marques</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , Mu¨ ller, A.,
          <string-name>
            <surname>De Jonghe</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McConaghy</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McMullen</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          , ... &amp;
          <string-name>
            <surname>Granzotto</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          (
          <year>2016</year>
          ).
          <article-title>BigchainDB: a scalable blockchain database</article-title>
          . white paper,
          <source>BigChainDB.</source>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22] Out of Asia. (
          <year>2017</year>
          , December 27).
          <article-title>Five Issues Preventing Blockchain From Going Mainstream: The Insanely Popular Crypto Game Etheremon Is One Of Them</article-title>
          . Retrieved from https://www.forbes.com/sites/outofasia/2017/12/22/five-issuespreventing
          <article-title>-blockchain-from-going-mainstream-the-insanely-popularcrypto-game-etheremon-is-one-of-them/#6d364bb66fad.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>Secure</given-names>
            <surname>Business Solutions - End Point</surname>
          </string-name>
          . (n.d.). Retrieved from http://www.endpoint.com/.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Shvachko</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuang</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Radia</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Chansler</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          (
          <year>2010</year>
          , May).
          <article-title>The hadoop distributed file system</article-title>
          .
          <source>In Mass storage systems and technologies (MSST)</source>
          ,
          <source>2010 IEEE 26th symposium on</source>
          (pp.
          <fpage>1</fpage>
          -
          <lpage>10</lpage>
          ). Ieee.
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Vukolic</surname>
            <given-names>´</given-names>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          (
          <year>2015</year>
          ,
          <article-title>October)</article-title>
          .
          <article-title>The quest for scalable blockchain fabric: Proof-of-work vs. BFT replication</article-title>
          . In International Workshop on Open Problems in Network Security (pp.
          <fpage>112</fpage>
          -
          <lpage>125</lpage>
          ). Springer, Cham.
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <surname>Zamani</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Movahedi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Raykova</surname>
            ,
            <given-names>M. (n.d.).</given-names>
          </string-name>
          <article-title>RapidChain: A Fast Blockchain Protocol via Full Sharding</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <surname>ZooKeeper</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          (
          <year>2017</year>
          ).
          <source>The Apache Software Foundation. Accessed December</source>
          ,
          <volume>29</volume>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>