mirror of
https://github.com/Ownercz/ssme-thesis.git
synced 2025-03-02 07:31:08 +01:00
Docs - cryptocurrency usage
This commit is contained in:
parent
f7b18cede6
commit
51984f8c5b
234
docs/_posts/2019-05-03-Monero-cryptocurrency-and-usage.md
Normal file
234
docs/_posts/2019-05-03-Monero-cryptocurrency-and-usage.md
Normal file
@ -0,0 +1,234 @@
|
||||
---
|
||||
layout: post
|
||||
title: Cryptocurrency
|
||||
subtitle: Introduction to Cryptocurrency terminology
|
||||
tags: [introduction,cryptocurrency,terminology]
|
||||
gh-badge: [star, fork, follow]
|
||||
---## 3 Monero Cryptocurrency
|
||||
Monero is an open-source cryptocurrency that is developed under the Monero project to create a decentralized and anonymous currency. Its main goal is to make the user the one who has complete control over funds.
|
||||
Meaning that every single digital transaction and the exact number of coins in users wallet cannot be traced back to the user without sharing the view key of the transaction [2]. Main distinctive points compared to other cryptocurrencies are:
|
||||
|
||||
- The blockchain is public, but a large part of it is encrypted.
|
||||
- The sender of the transaction is hidden by using Ring Signatures
|
||||
explained in the Chapter 3.5.2.
|
||||
- The exact amount of transferred coins is encrypted using RingCT
|
||||
as described in the Chapter 3.5.3.
|
||||
- Transaction history and receiving party is hidden by the usage
|
||||
of stealth addresses that are referenced in the Chapter 3.5.1.
|
||||
|
||||
### 3.1 Origin and the main focus
|
||||
|
||||
Monero (XMR) started its way by forking from Bytecoin, which was proof-of-concept cryptocurrency that used as first of its kind protocol called CryptoNote. CryptoNote was published by the start of the year 2014 [3].
|
||||
Although Bytecoin had a promising protocol aimed at privacy, there was a problem with premine, meaning that cryptocurrency at the time of publishing had already 82% of the coins already emitted [4]. That was the reason why people interested in anonymous cryptocurrencies decided to create a Bytecoin fork under the name of
|
||||
BitMonero [5].
|
||||
Next important moment was when a significant part of the developers decided to abandon the project in favor of creating a new fork named Monero in 06.23.2014. By this action, Monero cryptocurrency was created with publicly known blockchain from the start, strictly defined goals and motivated team of developers [6].
|
||||
|
||||
|
||||
3. Monero Cryptocurrency
|
||||
|
||||
### 3.2 Monero market cap
|
||||
|
||||
As Monero is often mentioned for its privacy features, decentralization
|
||||
in mind and fungibility as main asset, the Table 3.1 puts Monero in
|
||||
the direct comparison against the Top 5 cryptocurrencies.
|
||||
To compare different cryptocurrency projects, market capitaliza-
|
||||
tion (market cap) is often used as a way of ranking [7]. It indicates
|
||||
the relative size of cryptocurrency by the formula:
|
||||
|
||||
Market Cap = Circulating Supply * Price
|
||||
|
||||
**Privacy** in cryptocurrency is a feature that assures that amount of
|
||||
coin user owns, sends or receives cannot be seen on the blockchain.
|
||||
|
||||
**Decentralization** in cryptocurrency network all nodes are equals.
|
||||
That means that no supernode can override how transactions are being
|
||||
processed as well as there is no single entity in control.
|
||||
|
||||
**Fungibility** means that every coin ever emitted has the same value
|
||||
as the others and cannot be traced back; thus there cannot be coin
|
||||
blacklist.
|
||||
|
||||
### 3.4 Development cycle
|
||||
|
||||
Monero development cycle is based on planned network updates that
|
||||
occur every six months. By this developers want to encourage work on
|
||||
the project with regular updates in contrast to other cryptocurrencies
|
||||
that don’t want any new hard forks in the future as it brings the danger
|
||||
of splitting the coin into several versions [23].
|
||||
|
||||
```
|
||||
03.03.2014 ······• Bytecoin - published on GitHub.
|
||||
```
|
||||
#### 04.17.2014 ······•
|
||||
|
||||
```
|
||||
ByteCoin fork - the creation of BitMonero
|
||||
cryptocurrency.
|
||||
```
|
||||
#### 07.23.2014 ······•
|
||||
|
||||
```
|
||||
BitMonero Fork - the creation of Monero
|
||||
cryptocurrency.
|
||||
```
|
||||
#### 03.22.2016 ······•
|
||||
|
||||
```
|
||||
Monero v2 - ring size change, block time set to 120
|
||||
seconds.
|
||||
```
|
||||
```
|
||||
09.21.2016 ······• Monero v3 - transactions are split into smaller
|
||||
amounts.
|
||||
```
|
||||
```
|
||||
01.05.2017 ······•
|
||||
Monero v4 - the concurrent run of normal and
|
||||
RingCT transactions.
|
||||
```
|
||||
#### 04.15.2017 ······•
|
||||
|
||||
```
|
||||
Monero v5 - block size update and fee algorithm
|
||||
adjustments.
|
||||
```
|
||||
#### 09.16.2017 ······•
|
||||
|
||||
```
|
||||
Monero v6 - RingCT forced on the network with
|
||||
ring size set to 5.
|
||||
```
|
||||
#### 04.06.2018 ······•
|
||||
|
||||
```
|
||||
Monero v7 - change of CryptoNight mining
|
||||
algorithm to prevent ASIC on the network, ring size
|
||||
set to set to 7.
|
||||
```
|
||||
```
|
||||
10.11.2018 ······•
|
||||
Monero v8 - enabled Bulletproofs for reduced
|
||||
transaction sizes, global ring size set to 11.
|
||||
```
|
||||
#### 02.25.2019 ······•
|
||||
|
||||
```
|
||||
Monero v9 - new PoW based on Cryptonight-R, new
|
||||
block weight algorithm.
|
||||
```
|
||||
```
|
||||
Figure 3.1: Monero development timeline.
|
||||
```
|
||||
|
||||
Updates are meant to improve and enhance the previously es-
|
||||
tablished codebase as well as fixing already existing bugs that are
|
||||
continuously being resolved. Known problems in Monero history
|
||||
were:
|
||||
|
||||
- **Spam attack**
|
||||
**-** Was aimed to oversaturate the Monero network by sending
|
||||
minimal transactions and leveraging low transaction fee of
|
||||
0.005 XMR. Immediate fix was established by raising the
|
||||
fee to 0.1 XMR. This problem led to the implementation of
|
||||
dynamic transaction fee based on the chosen transaction
|
||||
priority [24].
|
||||
- **Split chain attack**
|
||||
**-** The successful exploit of Merkle root calculation vulnerabil-
|
||||
ity led to the creation of two blocks of the same height and
|
||||
hash, but with two different transactions on the end of the
|
||||
block [25]. By this, two separate Monero chains were cre-
|
||||
ated. The exploit could be applied to all CryptoNote based
|
||||
cryptocurrencies. In the case of Monero, all transactions
|
||||
were stopped on exchanges until next day, when the fix was
|
||||
issued [26].
|
||||
- **Transaction analysis in Monero blockchain**
|
||||
**-** Research published in 2017 uncovered past and present
|
||||
problems in anonymity with Monero transaction system.
|
||||
The most significant discovery was that a substantial por-
|
||||
tion of transactions used a Ring Signature of zero which
|
||||
caused traceability of the amount of coin in the transaction
|
||||
output on the blockchain [27].
|
||||
**-** This issue was resolved by Monero team already in 2016
|
||||
with Monero v2, where Ring Signature was set to set to
|
||||
3 [28]. Soon after the paper was released, Monero got its
|
||||
v6 update with enforced use of RingCT technology for all
|
||||
transaction outputs [29].
|
||||
|
||||
|
||||
3. Monero Cryptocurrency
|
||||
|
||||
### 3.5 Transactions in Monero network
|
||||
|
||||
|
||||
Monero uses a distributed peer-to-peer consensus network to record
|
||||
transaction outputs in a blockchain. It means that balance is not stored
|
||||
in a wallet, but is represented by control over outputs of transactions
|
||||
accessible with wallet keys [30].
|
||||
By that when a user A wants to send funds to a user B, the trans-
|
||||
action happens in the way of transformation of controlled outputs in
|
||||
one wallet to a new output that belongs to the other wallet. As this is
|
||||
only a principle of how coins are transferred between wallets, Monero
|
||||
uses additional technology to make transactions private.
|
||||
|
||||
#### 3.5.1 Monero wallet and stealth addresses
|
||||
|
||||
Monero wallet seed is 95 characters long string that consists of public
|
||||
view and spend key. To send funds from one wallet to another, a
|
||||
one-time public key is created, that contains senders public view and
|
||||
spend key as well as randomized data.
|
||||
This one-time public key is also referred to as a stealth address
|
||||
and is generated and recorded as part of the transaction to set the
|
||||
controller of the output of the transaction [31].
|
||||
Stealth address is visible on the blockchain, by this receiving party
|
||||
can scan the blockchain to find exact transaction using their private
|
||||
view key. After locating transaction output, wallet software is then
|
||||
able to calculate one-time private key that aligns with the one-time
|
||||
public key and can spend this output using private spend key [32].
|
||||
By this, no one from outside can link nor wallet addresses nor
|
||||
people involved in a particular transaction by scanning the blockchain
|
||||
as there is no association with receivers address.
|
||||
To prove that funds were sent from one wallet to another, the sender
|
||||
has to disclose transactions ID, receivers address and transactions key.
|
||||
|
||||
#### 3.5.2 Ring Signatures
|
||||
|
||||
Ring Signatures present a way to create a distinctive signature that
|
||||
authorizes a transaction. The digital signature of the transaction is
|
||||
compiled from the signer together with past outputs of transactions
|
||||
(decoys) to form a ring where all members are equal and valid. By
|
||||
that, the outside party cannot identify the exact signer as it is not clear
|
||||
which input was signed by one time spend key [33].
|
||||
To prevent double spend, a cryptographic key image is derived
|
||||
from the spent output and is part of the Ring Signature. As each key
|
||||
image is unique, miners can verify that there is no other transaction
|
||||
with the same key image, thus preventing the double-spending attack
|
||||
[13].
|
||||
|
||||
|
||||
#### 3.5.3 RingCT
|
||||
So far, senders anonymity is ensured by Ring Signatures, receivers
|
||||
anonymity relies on stealth addresses, but the amount of Monero
|
||||
transferred would be still visible on the blockchain. To hide transaction
|
||||
amounts, Ring Confidential Transactions are implemented [34].
|
||||
As one output cannot be spent twice, the sender has to spend entire
|
||||
output in the transaction. That typically results in a transaction having
|
||||
two outputs, one for the receiver and one for the original wallet, where
|
||||
the excess amount of coins is returned.
|
||||
To prevent manipulation during a transaction, the total input amount
|
||||
must equal the output amount of coins in each transaction. As one
|
||||
could exploit this by committing to value less than zero, range proofs
|
||||
are there to ensure cryptographic evidence of amounts used in trans-
|
||||
actions is greater than zero and falls into the valid transaction amount
|
||||
range.
|
||||
To confirm the transaction, the sender reveals the masked amount
|
||||
of coins being sent in the transaction to the network that is later verified
|
||||
by miners [35].
|
||||
By that, amounts transferred between wallets in the form of outputs
|
||||
of transactions are hidden, and the network can still confirm that
|
||||
transaction is valid.
|
||||
#### 3.5.4 Kovri
|
||||
|
||||
Kovri is a C++ implementation of the Internet Invisible Project (I2P)
|
||||
anonymous network, that under heavy development process in the
|
||||
Monero project. It aims to offer secure network transmissions where a
|
||||
users IP cannot be associated with a particular transaction ID [36].
|
Loading…
Reference in New Issue
Block a user