1. Introduction
Blockchain technology is considered one of the most prominent post-internet disruptive computing paradigms [
1,
2], featuring unique attributes that make it an ideal set of techniques to register, verify, and manage transactions [
3]. A blockchain network performs the secure administration of the shared ledger, where transactions are verified and stored in a network without a central authority [
4]. Applications that use blockchain, such as cryptocurrencies, decentralized finance applications, video games, and many others, trust that blockchain will prevent problems such as fraud, thanks to the integrated cryptographic mechanisms provided by the data structure and the consensus protocol [
5].
Since blockchain is an emerging technology, its applicability to new domains and challenges is constantly growing. The paper [
6] presented a taxonomy of blockchain-based applications and an analysis of blockchain challenges regarding security and performance. Its study covered 96 papers categorized into 7 application domains: finance (e.g., [
7]), achievement records (e.g., [
8]), energy (e.g., [
9]), healthcare (e.g., [
10]), manufacturing (e.g., [
11]), supply chain (e.g., [
11]), shipping and delivery (e.g., [
12]), and sustainability (e.g., [
13]). Regarding security challenges, they highlighted majority attacks [
5], DDoS attacks, selfish mining, and others [
6]. Concerning performance challenges, they focused on throughput and latency in some blockchains, as well as resource and energy management issues [
6].
The 51% attack (also called majority attack) is categorized into hash-based vulnerabilities (“hash-based attack”). It entails one or more miners taking control of at least 51% of the mined hash or computation in the blockchain network [
14]. Due to this vulnerability, an attacker can perform attacks that involve canceling transactions, creating forks in the blockchain, selfish mining, and double-spending virtual currency [
15].
Consensus protocols are at the core of the inner-working of any blockchain. Proof-of-work (PoW) and proof-of-stake (PoS) protocols are the most popular; however, they still have drawbacks. In particular, the consensus mechanism PoW is inefficient regarding energy consumed by its participants [
16]. As a result of the efforts to improve the PoW and PoS protocols, the so-called alternative consensus protocols were born [
17].
As evinced in
Section 2, there is little research on proof-of-accuracy consensus protocols. In particular, its study and development have been theoretical and are part of the so-called blockchain consensus alternative protocols. According to [
18], realizing it requires some components, such as selection of a coordinator, generation of a secret, generation and distribution in the network of parts of the secret, and competition between the participants to find the parts and reconstruct the secret. However, no proposal has presented a concrete protocol so far. Hence, this paper aims to present a detailed proposal for the formalization of what is called a proof-of-accuracy protocol.
The main contribution of this paper is to introduce a proof-of-accuracy protocol. We present our proposed protocol progressively, starting with an initial blueprint (based on different components described in [
18] and its drawbacks), which is improved further concerning security. Earlier versions of our protocol feature the following phases: selection of a coordinator, generation of a secret, generation and distribution of parts of the shared secret in the network, and competition between the participants to find the shares to reconstruct the secret (proof of work component). However, our last version (see
Section 3.7) removes the need for a coordinator and combines the proof-of-work feature with access to random locations to improve the protocol’s resistance to majority attacks.
The remainder of the article is structured as follows:
Section 2 presents an overview of consensus algorithms.
Section 3 presents our protocol proposal, introducing it progressively from earlier versions. This section presents the notation we use to describe our protocol and its earlier designs, a general description of a proof-accuracy protocol, our assumptions, and the description of our proposed protocol (and its earlier versions).
Section 4 presents an analysis of our proposed protocol. In particular, we present a deep analysis of its mining process, computational costs, and security.
Section 5 presents a proof-of-concept implementation of our proposed protocol.
Section 6 presents a qualitative comparison between our protocol and other consensus protocols proposed in the literature. In
Section 7, we draw our conclusions and describe future research directions.
3. Proposed Protocol
In this section, we introduce our proposed protocol. In
Section 3.1, we introduce the notation that we will use throughout the section. In
Section 3.5 and
Section 3.6, we describe earlier versions of our proposed protocol, highlighting their weaknesses and disadvantages. These earlier versions serve as a base to introduce our proposed protocol. Finally, we present our proposed protocol in
Section 3.7.
3.1. Notation
We introduce the notation that we will use throughout the section. Specifically,
Table 1 summarizes our notation.
3.2. General Description
The progressive versions of our protocol are built upon the cryptographic components required to compose a proof-of-accuracy (PoAc) protocol described by [
18]. In particular, according to [
18], a proof-of-accuracy (PoAc) protocol features the selection of a coordinator among all the participants, the joint generation of a secret by all the participants, the generation of shares of the generated secret, decoy shares, the distribution of all of them over the network participants, the mining process among the mining parties to reconstruct the generated secret, and the proof of recovering the secret by the winning party. We next describe the cryptographic tools we used.
3.2.1. Single Broadcast-Based Joint Random Number Generation Protocol
Our proposed protocol uses a joint random number generation protocol as described in [
30,
31]. According to their designers, these protocols do not require a secure network and need one transmission per network node. The protocol [
30] features additive aggregation instead of a multiplicative aggregation as in the protocol presented in [
31].
The arithmetic carried out by
m participants in the protocol [
30] works over a cyclic group
generated by
g with order
q, where
q and
are prime numbers. Each participant generates a Diffie–Hellman-like key pair
and shares its public key with the other network participants. With the set of public keys, the participant
i computes
, generates
, and calculates
. At the last step, a randomly chosen coordinator takes the role of the combiner and collects all the
values, and computes
since
, which will be the input secret passed to the next sub-protocol.
3.2.2. Shamir’s Secret Sharing Scheme
Shamir’s secret sharing scheme aims to divide a secret
in
s parts (
,
…
) so that with any
t of the
s parts,
can be reconstructed, but every set of
reveals nothing about
[
32]. Shamir’s secret sharing scheme stems from a general fact of polynomial interpolation; A polynomial of maximum degree
defined over a field is fully determined by
t points of the polynomial. In our particular case, we work it over
, which is a field when
q is a prime number [
32].
We call the
s parts the genuine parts, the valid ones to reconstruct the secret; Also,
non-genuine parts are generated and distributed among the participants. Combining genuine and non-genuine parts allows for adjusting the difficulty in collecting
t genuine parts to recover the secret. Algorithms 1 and 2 describe the inner workings of Shamir’s secret sharing scheme.
Algorithm 1 generates the t-out-of-s sharing of |
1: function () |
2: choose at random and define a polynomial
|
3: for to s do |
4: select randomly from , such that for all |
5: |
6: |
7: end for |
8: return |
9: end function |
Algorithm 2 recovers given t genuine shares |
1: function () |
2: |
3: for to t do |
4: |
5: for to t do |
6: if then |
7: |
8: end if |
9: end for |
10: |
11: end for |
12: return |
13: end function |
3.2.3. Schnorr Non-Interactive Zero-Knowledge Scheme
Schnorr non-interactive zero-knowledge (NIZK) scheme is a non-interactive variant of the three-pass Schnorr identification scheme. The Schnorr NIZK scheme allows a prover to prove to any verifier their knowledge of a discrete logarithm without leaking any information about its value [
32]. Algorithm 3 shows how a proof gets generated, while Algorithm 4 shows how a proof gets verified.
Algorithm 3 generates a proof |
1: function () |
2: |
3: |
4: . |
5: |
6: return |
7: end function |
Algorithm 4 verifies a proof |
1: function () |
2: . |
3: |
4: if then |
5: return 1 |
6: else |
7: return 0 |
8: end if |
9: end function |
3.2.4. Digital Signatures
A digital signature scheme
consists of the following algorithms [
32].
is a probabilistic algorithm that takes a security parameter. It outputs a pair , where is a secret signing key, and is a public verification key.
is a probabilistic algorithm that is invoked as , where is a secret key (as output by the key generation algorithm) and m is a message. The algorithm outputs a signature .
is a deterministic algorithm invoked as where b is a bit. If , then it means the signature is accepted, or else it is rejected.
3.3. Threat Model
We assume a semi-honest adversary, i.e., one who corrupts parties but follows the protocol as specified. Under this threat model, the corrupt parties follow the rules of the protocol honestly but they may attempt to learn as much as possible from the messages they receive from other parties to control the creation of blocks in the chain. Furthermore, there may be several colluding corrupt parties combining their partial views to learn information. Semi-honest adversaries are regarded as passive since they do not take any active actions other than attempting to learn private information by observing a view of the protocol execution. Semi-honest adversaries are also commonly called honest-but-curious.
We regard the view of a party as its private inputs, its memory data, and the list of all messages received during the protocol. In this sense, the view of an adversary is composed of the combined views of all corrupt parties. Therefore, under this threat model, any information the adversary learns from the run of the protocol must be a computable function on the input of its combined view [
33].
3.4. Initial Assumptions
We assume that each participant has access to a long-term key pair
generated by a signature scheme
. Furthermore, each participant has access to a digital certificate that proves the validity of the corresponding public verification key
. Additionally, when two participants want to communicate, a secure channel is established between them via a protocol such as transport layer security (TLS) [
32].
3.5. Initial Design
Here, we present our first attempt to build a proof of accuracy protocol. In particular, this initial design is a proof-of-concept based on the cryptographic components required to compose a proof-of-accuracy (PoAc) protocol described by [
18]. Specifically, [
18] presents the main cryptographic constituents to build such a protocol, but they do not present a concrete cryptographic construction of the protocol.
Let us assume that there are participants. One of them assumes the role of coordinator with identifier 0. Additionally, each m remaining participant is given a unique identifier . The arithmetic works over a cyclic group generated by g and whose order is a prime number q with (p a prime number). The initial design runs as follows.
Participant i generates an ephemeral key pair by selecting the private key at random and computing the public key
Participant i sends the ephemeral public key to the other participants.
Once participant
i receives other participants’ ephemeral public keys, the participant computes
as
where
s is the function defined in Equation (
2).
Each participant i selects at random and computes . The participant then sends its to the coordinator.
Once the coordinator receives
’s from all participants, the coordinator will compute the secret
as
since
.
The coordinator generates s shares of , and random points from The coordinator then computes and shuffles the genuine and non-genuine points, forming the list , with . The coordinator now computes where is the last block in the blockchain. The coordinator now makes publicly accessible to all participants.
At this point, the mining process begins. A mining party will attempt to reconstruct the secret by finding t genuine points from A. In particular, the participant first collects from the coordinator, and may check whether is a valid signature for . The participant then selects t points , computes , and checks whether u is equal to . Once the participant finds t suitable points, the participant will proceed with step 8. Otherwise, the participant will attempt to find t genuine points.
A mining party with identifier proves its knowledge of the correct to other participants by using the Schnorr non-interactive zero-knowledge scheme. Specifically,
- (a)
The participant computes
. He then publishes
to the network, where
and
.
- (b)
Any verifier can check a solution by calling the function check shown by Algorithm 5.
Algorithm 5 checks a solution |
1: function check() |
2: |
3: if then |
4: |
5: |
6: |
7: |
8: if and then |
9: return Accept |
10: else |
11: return Reject |
12: end if |
13: else |
14: return Reject |
15: end if |
16: end function |
3.5.1. Analysis of the Initial Design
Here, we analyze the initial design.
Correctness
We analyze step 7 of the initial design. Note that what the coordinator does is to call , creating s genuine shares for , any t of which serves to reconstruct . Hence, any mining party that finds t genuine shares among the n entries in A will successfully reconstruct the secret.
Drawbacks
The major drawback of the initial design is that it heavily relies on the coordinator since this coordinator aggregates all to obtain the secret and then computes the s shares of and random points, which means the coordinator gains too much knowledge of and, hence, may take advantage of this knowledge to favor any mining party.
Ideally, this coordinator must not know
, neither the
s genuine shares of
nor the
random points, i.e., the coordinator only should serve as an aggregator of data. The following design improves upon the initial one by exploiting further the aggregating protocols [
30,
31] to compute the genuine and non-genuine shares securely.
3.6. An Improved Design
Let us assume that there are t participants. One of them assumes the role of the coordinator with identifier 0. Each participant other than the coordinator has a unique identifier . The arithmetic works over a cyclic group generated by g, whose order is a prime number q with (p a prime number). The improved design runs as follows:
Participant
i generates
ephemeral key pairs
by randomly selecting
and computing
for each
.
Participant
i sends its ephemeral public keys
to all other participants.
After receiving the ephemeral public keys from each other participant, the participant
i computes the following vector
where
and
for each
.
Participant
i selects
and a probability
. This participant computes the vector
, where
and sends
to the coordinator
Once the coordinator receives each
for
, the coordinator will compute
The coordinator now computes , where is the last block in the blockchain. The coordinator now makes publicly accessible to all participants.
At this point, the mining process begins. A mining party first collects
A and
from the coordinator, and may check whether
is a valid signature for
. It then will attempt to find
t unique indices
, such that
, where
Once the participants find t suitable points, they will proceed with step 7. Otherwise, they will attempt to find t genuine points.
A mining party with identifier proves its knowledge of the correct to other participants by using the Schnorr non-interactive zero-knowledge scheme. Specifically,
- (a)
The participant computes . He then publishes to the network, where and .
- (b)
Any verifier can check a solution by calling the function check shown by Algorithm 6.
Algorithm 6 checks a solution |
1: function check() |
2: |
3: if then |
4: |
5: |
6: |
7: |
8: if and then |
9: return Accept |
10: else |
11: return Reject |
12: end if |
13: else |
14: return Reject |
15: end if |
16: end function |
3.6.1. Analysis of the Improved Design
Here, we analyze the improved design.
Correctness
We analyze steps 5 and 6 of the improved design. Let us assume that each
obtained from participant
i was created with a fixed probability
. Note that since
where
.
Let us fix a
k with
. Let us assume that
for all
. By construction, this occurs with probability
. Since
then
where
.
If the mining party finds
t suitable
, then
Therefore,
, where
Drawbacks
The improved design still relies on a coordinator, but now this coordinator does not know
, neither the
s genuine shares of
nor the
random points, i.e., the coordinator only serves as an aggregator of data; if the coordinator wants to know the secret
, it will have to perform step 6 of the improved design as any other mining party would. However, having a coordinator still presents a unique point of failure for this approach; Also, it solely relies on the proof of work (which may not have a solution) performed by a mining party at step 6. To reduce power concentration (hence, the
attack [
5]) and increase the fairness of the mining process, a new version should complement the proof of work with other approaches, for example, access to random locations (similar to PoC) [
17].
Another drawback is that any mining party will attempt to recover
from
A at step 6. Ideally, any mining party should only know how to reconstruct
rather than
. Another issue may arise if the cyclic group
is set to another one (e.g., a subgroup of the points of an elliptic curve). If that is the case, a mapping to associate each element of
with an element of
will be required. In this version, this is not a problem since we are assuming the arithmetic works over a cyclic group
generated by
g with order
q, where
and
p,
q are prime numbers. Hence, the computation of
for each
does not present any inconvenient.
Our final version deals with the drawbacks of the improved design by introducing the following features:
Permit a mining party to access at different locations and compute a new vector A independently with the collected ’s.
Use only the multiplicative version of the aggregating protocol [
31] to compute the ciphertexts of the shares.
Exploit the homomorphic properties of ElGamal-based cryptographic schemes to allow any mining party to reconstruct from the ciphertexts of the shares.
3.7. Our Proposed Protocol
Let us assume that there are participants. Each participant has a unique identifier . The arithmetic works over a cyclic group generated by g and whose order is a prime number q. Our proposed protocol runs as follows.
Participant
i generates
ephemeral key pairs
by selecting
at random and computing
for each
.
Participant
i sends its ephemeral public keys
to all other participants.
After receiving the ephemeral public keys from the other
participants, participant
i computes the following vector
where
for each
At this point, the mining process begins. A mining party will have to contact each participant i and request a from it. Specifically, upon request, the participant i executes , shown by Algorithm 7, where is the last block in the blockchain.
Algorithm 7 generates the pair |
1: function () |
2: . |
3: |
4: |
5: |
6: for to n do |
7: |
8: if then |
9: |
10: else |
11: |
12: end if |
13: |
14: end for |
15: . |
16: return |
17: end function |
The participant
i then sends
to the requesting mining party. Note that the mining party may check whether
is a valid signature for
. Once the mining party contacts each participant
i and collects the corresponding
, the party then computes
A as
The mining party’s goal is to find unique indices
, such that
with
and
Once the participant finds t unique indices, the participant will proceed with step 5. Otherwise, this mining party may attempt step 4 again.
When a mining party with identifier
reconstructs
w, i.e., finds suitable unique indices
, it will publish
to the network, where
and
Any verifier can check a solution by calling the function check shown by Algorithm 8.
Algorithm 8 checks a solution |
1: function check() |
2: . |
3: if then |
4: |
5: for to do |
6: if then |
7: return Reject |
8: end if |
9: end for |
10: Compute
|
11: With the given indices , compute |
12: Compute |
13: if then |
14: return Accept |
15: else |
16: return Reject |
17: end if |
18: else |
19: return Reject |
20: end if |
21: end function |
4. Protocol Analysis
In this section, we will make a deeper analysis of our proposed protocol.
4.1. Correctness of Our Proposed Protocol
We now analyze step 4 of our proposed protocol. Let us assume that each
obtained from participant
i was created with a fixed probability
. Note that
for any
, then
where
.
Let us fix a
k with
. Let us assume that
with
for all
. By construction, this occurs with probability
. Therefore,
where
with
If the mining party finds
t suitable
, then
In
Section 4.2, we extend our analysis of this mining process.
4.2. Mining Process
We here further analyze step 4 of our proposed protocol.
4.2.1. Estimating n and s
Let us suppose
t is fixed. Let
be the array obtained from participant
i at step 4 of our proposed protocol for
. Assume that
for
has been created with probability
by the participant
i. Note that the value
depends on
for
. Therefore,
is the probability of obtaining a genuine entry
in
A. If we define the random variable
X as the number of genuine
’s in the sequence of values
, then
X follows a binomial distribution with success probability
in the sequence of
n independent trials. Therefore, the expected number of genuine
’s is given by
. By choosing
n, such that
,
s is expected to be greater than
t. Since
is known and
, then
, and so
when
.
4.2.2. Expected Number of Attempts for Recovering
We want to estimate the expected number of attempts to solve the proof of work assuming that the number of genuine ’s is at least t, i.e., (otherwise, the PoW cannot be solved). Let be the set of all combinations out of .
A first strategy by the miner is to select
and call
as shown by Algorithm 9. We call
a genuine combination if the reconstructed
w is equal to
(i.e., line 7 of the function
satisfies). Otherwise,
is a non-genuine combination.
Algorithm 9 describes the first mining strategy |
1: function () |
2: while do |
3: |
4: |
5: Compute |
6: Compute |
7: if then |
8: return |
9: end if |
10: end while |
11: end function |
Let be the total number of combinations in . Let be the number of genuine combinations in . Therefore, is the number of non-genuine combinations in . When , and
Let
be the random variable that counts the number of iterations to find a genuine combination in
using the strategy
. Therefore,
follows a geometric distribution with success probability
. Hence,
for
and
Note that at any iteration of , nothing is learned about a particular , i.e., it does not learn whether is genuine or non-genuine, but instead, it does learn whether a particular combination is genuine or not.
A seemingly better strategy is to pick
and call
as shown by Algorithm 10. Furthermore, if the mining party has access to computational resources, the party then may make a partition of
, i.e., pick
with
for
with
, and
; and sets and runs
parallel processing tasks, where the processing task
i searches over
, viz. executes
.
Algorithm 10 describes the second mining strategy strategy |
1: function () |
2: for each do |
3: |
4: Compute |
5: Compute |
6: if then |
7: return |
8: end if |
9: end for |
10: return ⊥ |
11: end function |
Let
be the random variable that counts the number of iterations to find a genuine combination in
using the strategy
. According to [
34],
for any
. Hence,
. Since
, then
and, therefore,
4.2.3. Experimental Results
Let be the set and be the set . We carry out the following experiment, in which a trial consists of the following steps.
Choose , . For the selected pair , choose a value for n, such that .
For the selected three-tuple , perform 100 runs of a modified mining phase (step 5 of our proposed protocol). At each run, the corresponding A is constructed; the numbers of genuine (i.e., the value of s), , and are computed. Moreover, and are computed, assuming .
At the end of the trial, the means of all values s, , , , and are respectively computed.
4.3. Computational Cost Analysis
In this section, we analyze the computation costs related to some critical steps of our protocol. Let denote the cost of a group operation, and let , , and denote the costs of a field addition, field multiplication, and field inversion, respectively. We denote by the cost of an exponentiation in the group, i.e., with . Using a generic fast exponentiation algorithm, then will have a cost of, at most, , where .
Computational Costs of Step 4
Once a participant collects all , the participant needs to compute for . Note that computing has a cost of ; hence, computing A has a cost of .
Once the participant computes A, the mining process begins. Until completing the challenge, the participant will keep on selecting t distinct indices out of , computing with , and checking whether .
So the cost of computing w, denoted as , is . Therefore, the whole mining process cost is roughly with being a constant.
4.4. Security Analysis
The goal of the adversary is to gain control over the creation of new blocks in the chain. To that end, he must generate solutions to the proof of works of the protocol and prove their validity to the other participants of the network. Since we assume the adversary is semi-honest, he follows the rules of the protocol but may want to learn as much as possible from the messages he receives from other parties to gain control over the creation of blocks in the chain.
First, note that our proposed protocol in steps 1–3 uses the joint random number generation protocol in parallel. At step 3 of our proposed protocol, what participant
does is to create
ElGamal public keys
from the other participant’s public
for
. Since the
values are constructed from random Diffie–Hellman public-key and cannot be distinguished from random
R’s, the security of this protocol can be reduced to the decisional Diffie–Hellman problem on the group
[
30]. Furthermore, note that the private key associated with the public key
is given by
for each
and is unknown to any participant, even colluding corrupt parties.
At step 4 of the protocol, a participant, say i, will send back with the corresponding signature to any requesting mining party. Note that each is of the form for some , i.e., represents the ElGamal ciphertext of the message under the public key .
Claim 1. A mining party can obtain a proper and fresh if and only if the mining party has access to the corresponding and computes Proof. In a direction (only if), we proved it in
Section 4.1. In the other direction, if the requesting mining party has access to
different
(possibly previous ones) with
, then the computed
will be of the form
for some random
. Hence, the adversary only learns
and nothing else. □
Claim 2. A mining party cannot reuse a for future challenges.
Proof. Upon request to participant i at step 4, a mining party obtains , where , with being the last block. Hence, the mining party cannot reuse any as part of a solution to a future challenge. In particular, by calling the function , as shown by Algorithm 8, any verifier can discover any cheater. □
Moreover, the mining proccess is fair. Let us now assume a mining party (possibly an attacker) constructs a proper and fresh
A, then such a party may start the mining process. By construction, such a party does not know whether he will find
t suitable
in such
A, with
such that
where
If the mining party does not find suitable indices in A, the mining party may contact any of the participants to construct a proper and fresh A and start the mining process again. Furthermore, the party may request multiple ’s from a participant i, and then pick only a from the available ones for each i to obtain proper and fresh A’s, and finally search suitable indices in each created A.
From the previous analysis, we conclude that our proposed protocol can be regarded as secure and fair, assuming a semi-honest adversary.
6. Comparison with Other Approaches
Following a similar approach as in [
16], we carried out a qualitative comparison between our proposed protocol and the following proof-based consensus protocols: Pure PoW [
38], Cuckoo hash function-based PoW [
39], Prime number finding-based PoW [
23], Double puzzles-based PoW [
40], Non-outsourceable puzzles [
41], Bitcoin-NG [
42], GHOST strategy [
43], Generalized PoW [
44], Pure PoS (Nextcoin) [
45], State of the block-based PoS [
19], PoS by coin flipping from many nodes [
46], Delegated PoS [
47], Coin age-based PoW difficulty re-designation (Ppcoin) [
20], Stake-based PoW difficulty re-designation (Blackcoin) [
21], Coin age with an exponential decay function [
48], Combining PoW and PoS to append blocks sequentially [
49], with difficulty adjustment [
50], Proof of activity [
51], Puzzles designed for human PoW [
22], Proof of burn [
24], Proof of space [
25], Proof of elapsed time [
52], Proof of luck [
53], Multichain [
54]; and the following Vote-based consensus protocols: Hyperledger with practical Byzantine fault tolerance [
55], Symbiont, R3 Corda with BFT-SMaRt [
56,
57], Iroha with Sumeragi [
58,
59], Ripple [
60], Stellar [
61], Quorum with Raft [
62], Chain [
63].
To perform our qualitative comparison, we defined a set of features that all of these protocols shared. Additionally, for each feature, we defined a rank of values with their corresponding numeric values.
Table 2 shows the defined features with the values they can assume.
Based on what is found in the literature, we assigned a value per feature per protocol, creating a dataset whose rows represent the names of protocols and columns represent the features. We then applied hierarchical clustering over the dataset to group the protocols; we worked with the method of least variance (Ward’s method); which seeks to obtain the least variability intra-cluster to ensure that each group is the most homogeneous possible. We finally identified the group (and, hence, the features) in which the proposed protocol (PoAc) was located.
Figure 7 shows the groups created by the clustering algorithm.
As a result of the hierarchical clustering, we identified that PoAc is part of a group made up of proof of space, proof of burn, and puzzle designed for human PoW; using as reference the previously defined features, we can say that these protocols share the following features:
Non-energy-efficient.
Their need for modern hardware for its execution is low.
They may present forking.
Resistant to double-spending attack.
Strategies may be deployed to prevent mining pools.
High decentralization.
Trustful
Award-giving to a node adding a block to the chain.
We consider that our proposed protocol may be implemented and deployed in any blockchain, which decides the selection of the winning participant (that is, who wins the right to add a new block to the main chain) through a proof of work-based protocol (PoW). Additionally, our proposed protocol does not require the participants to have any particular hardware, making it implementable in blockchains where the hardware of the participants features any computing power.
A particular use case can be a decentralized application for registering anonymous touristic information where each participant in the network corresponds to a touristic operator. For this application, the integrity and availability of the data are crucial, and so there must be a control on registering data in the blockchain (making a consensus necessary). The touristic operators feature pieces of hardware that may not be homogeneous and typically present a low level of computation.
Additionally, this scenario may use its cryptocurrency for the consortium of touristic operators. A tourist can use it to carry out monetary transactions with the different operators, requiring trust between the participants. In addition to the touristic operators and their resources, tourists would participate in the network (even in the protocol) with mobile devices featuring varying computing power.
7. Conclusions and Future Work
Although the study of alternative consensus protocols has taken an interest in the scientific blockchain community recently, most of the related works are still theoretical ideas. Proof-of-accuracy protocols are a particular case since there are few papers about them in the literature, presenting neither concrete proof-of-accuracy protocols nor implementations.
This paper introduced a proof-of-accuracy protocol, starting with an initial and insecure design, which we progressively improved regarding security. Our proposed protocol removed the need for a coordinator and combined the proof of work component with access to random locations to improve the protocol’s resistance to majority attacks. Our analysis pointed out that it is secure and fair assuming a semi-honest adversary.
In future work, we would like to analyze and improve our proposed protocol in a scenario with dishonest participants, where they may not follow its rules or carry out attacks that may compromise its secret information. Another research topic is to make the protocol quantum-resistant since it is a Diffie-Hellman-like cryptographic construction, which is not quantum-resistant.