2013 in a document describing the ’CryptoNote v
2.0’ technology by Nicolas van Saberhagen, and the
first implementation is dated September 12, 2014.
The Monero network is updated usually every six
months(Noether et al., 2014). Since the first imple-
mentation, 8 major updates have been created, each
time introducing a series of changes that increase the
level of security and comfort of using cryptocurren-
cies(Alonso, 2018).
The ring signature technology in Monero is used
to protect the privacy of the sending transaction. It is
a kind of electronic signature in which a group of po-
tential transaction participants is combined to create
a unique transaction authorization(Courtois, 2016).
The right signer, or ”one-time key”, associated with
the ”output” of the transaction, and the others - ac-
quired from past transactions recorded in Blockchain,
are equal and impossible to identify. Together, they
form a list of ”inputs” of transactions, of which only
one is appropriate. This allows masking the origin of
the transmitted cryptocurrency. To eliminate the pos-
sibility of double release, ”Key image” was used. It
is a cryptographic security key, which is part of ev-
ery transaction signed ”Ring Signature”. Each ”out-
put” transaction has only one ”Key image”, and their
list is stored in Blockchain, so that anyone who ex-
tracts the currency can verify that no resulting transac-
tions have been doubled. Monero users have a pair of
public keys as public address(Mercer, 2016). Adress
is based on Diffie-Hellman exchange created before
each transaction made by user. The one-time keys for
the output are:
K
0
= H
n
(rK
B
1
)G + k
B
2
G = (H
n
(rK
B
1
) + k
B
2
)G (1)
k
0
= H
n
(rK
B
1
) + k
B
2
(2)
where r is random number such that 1 < r < N, and
public key is K
0
= H
n
(rK
B
1
)G + k
B
2
. The rG value is
used to calculate a Diffie-Hellman like shared secret.
Then k
B
1
rG = rK
B
1
is calculated. A private key k
B
1
is called also the view key, as it allows to verify if an
output is valid and properly addressed(Alonso, 2018).
The operating principle looks as follows, if user
X wants to send Monero to user Y, with the size of
the ring six, one of the ”inputs” will be taken from
the X wallet and placed in the ring, and the rest of the
past transactions saved in Blockchain. Together they
form a group of six potential signers, and from out-
side it will not be possible to determine which ”input”
is the right one signed by ”One time key” from user
X, and thanks to the verification of ”Key image”, the
Monero network will be able to confirm that sent to Y,
they were not issued before. RingCT, is an algorithm
by which the value of each ”output” is encrypted and
saved in the transaction. Only the recipient can de-
code the value. Encryption is done by the sender us-
ing the private transaction key. This information is
provided in the ”ecdhInfo” section. The private trans-
action key is created by combining the private ”view
key” of the recipient and the public transaction key.
1.2 Related Work
As presented in the research paper ”An Empirical
Analysis of Tracebility in the Monero Blockchain”,
Authors: Malte M
¨
oser, Kyle Soska, Ethan Heilman,
Kevin Lee, Henry Heffan, Shashvat Srivastava, Kyle
Hogan, Jason Hennessey, Andrew Miller, Arvind
Narayanan and Nicolas Christin, the Monero soft-
ware allows you to configure users with many vari-
ables(Moser et al., 2018). At the beginning of the ex-
istence of Monero, it was not determined what is the
minimum number of additional ”outputs” required,
called ”mixins”. According to research, about 64% of
transactions did not have them at all, they are 0-mixin
transactions. The reason for this behavior could have
been lower fees for transactions due to its size. This
creates a problem not only for these operations, but
also for future ones that will use them, because the
”output” X, which is the only one in transaction A,
and for example one of two (X and Y) in transaction
B, makes it unambiguously we can determine that Y
is the correct ”output” for transaction B.
The above-mentioned research focused on several
periods related to network updates in terms of the
policy of adding ”mixins” to the transaction and an-
alyzed the data from Blockchain to block 1288774,
until April 15, 2017:
• before January 1, 2016: ”mixins” selected evenly,
all had to have the same value, older ones selected
more often than new ones,
• after January 1, 2016, version 0.9.0: the minimum
number of ”mixins” is two, and favoring newer
ones,
• after September 19, 2016, version 0.10.0: Intro-
duction of the ”CT Ring”, which was finally avail-
able from January 10, 2017,
• after December 13, 2016, version 0.10.1: match-
ing ”mixins”, min. 25% of the last 5 days.
To conduct the research, an iterative algorithm was
used, which in each operation on a set of transaction
data retrieved from Blockchain, selects all ”mixins”
which can not be the correct ”output” because they
were issued earlier(Kumar et al., 2017). The results
show that in the first version of Monero, for the trans-
action ”0-mixins”, about 89% of the relevant ”inputs”
ENASE 2020 - 15th International Conference on Evaluation of Novel Approaches to Software Engineering
262