Ecdsa Bitcoin
Ecdsa Bitcoin
Mathematics of ECDSA
N. Mistry B121555
Supervisor: Dr B. Winn
Module Code: MAC200
21.4.2015
Abstract
Bitcoin is a completely revolutionary peer to peer electronic cash sys-
tem that is decentralised and removes the need for trusted third parties like
banks. Instead Bitcoin creates trust by using an area of mathematics known
as cryptography. Cryptography is usually based on the mathematics of prime
numbers, however Bitcoin uses the mathematics of elliptic curves as the foun-
dation for its cryptography. By using cryptographic methods the Bitcoin
protocol can replace a central institution such as a bank or reserve and carry
out the functions of cash generation and transaction authorisation using its
decentralised peer to peer network. In this project I will introduce the fun-
damental concepts of cryptography and explain how transactions are created
and processed in the Bitcoin system. The Bitcoin system relies on both cryp-
tographic hashes and digital signatures to keep the system secure and create
trust. I will provide a quick primer on elliptic curves and point operations
and will explain how Bitcoin uses digital signatures based on elliptic curves
to authenticate transactions and keep the system secure.
Contents
1 Introduction 3
2 Background 4
2.1 Styling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Key Vocabulary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1 Decentralised . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.2 Peer to Peer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.3 Digital and Crypto Currencies . . . . . . . . . . . . . . . . . . 4
2.3 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Cryptography Background . . . . . . . . . . . . . . . . . . . . . . . . 5
1
CONTENTS 2
A References 25
1 INTRODUCTION 3
1 Introduction
Bitcoin is a cryptographically secure decentralised peer to peer (P2P) electronic
payment system which enables transactions involving virtual currency. To compare
this to everyday examples; PayPal, Visa and MasterCard are all payment systems
that most readers are familiar with. PayPal has the most parallels with Bitcoin since
they both involve transactions occurring online with digital cash. All the mentioned
systems involve payments being made in everyday currencies (known as fiat curren-
cies) such as the pound, dollar and euro. However the currency used by the Bitcoin
system to store and transfer value is a virtual currency called bitcoin (BTC). Fiat
currencies rely on banks and reserves to generate new currency and validate trans-
actions. Since Bitcoin is decentralised, it can’t rely on a single entity to control the
currency, instead Bitcoin relies on cryptography to generate currency and validate
transactions. Unlike traditional fiat currencies, bitcoins are entirely virtual meaning
there are no tangible coins or digital files. The coins are implied in transactions that
transfer value between sender and recipient [1].
Cryptography is a relatively new area of mathematics that deals with keeping mes-
sage sent between two parties secure. Cryptography has its foundations in number
theory, specifically using the mathematics of prime numbers to keep messages secure.
Bitcoin does not make use of prime numbers in its cryptographic functions instead
it uses elliptic curves. Bitcoin uses the elliptic curve digital signature algorithm
(ECDSA) as the basis of its security and trust. The reason Bitcoin uses elliptic
curves instead of prime numbers is because computations using elliptic curves use
less CPU and memory, making it a more efficient method.
This report will outline how the Bitcoin system operates, i.e. how currency is gen-
erated, how transactions are kept secure and processed. There are two major areas
of mathematics used in the Bitcoin system. The first is related to digital signatures
and how transactions are authenticated and the second is related to the SHA-256
hashing algorithm used in the processing of transactions. This report will focus
on the authentication of Bitcoin transactions. The Bitcoin system uses the Elliptic
Curve Digital Signature (ECDSA) cryptographic algorithm to authenticate Bitcoin
transactions.
2 Background
2.1 Styling
Firstly we need to introduce some styling that will be used throughout this report
to differentiate between Bitcoin the payment network and bitcoin the currency.
According to the official Bitcoin Foundation “Bitcoin - with capitalization, is used
when describing the concept of Bitcoin, or the entire network itself. e.g. ‘I was
learning about the Bitcoin protocol today.’ bitcoin - without capitalization, is used
to describe bitcoins as a unit of account. e.g. ‘I sent ten bitcoins today.’; it is also
often abbreviated BTC or XBT.” [2]
2.2.1 Decentralised
Bitcoin is described as a decentralised currency. To explain this I will first outline
what a centralised currency is. Fiat money is currency that derives its value from
government legislation. Examples of this include the dollar, pound and euro. Lets
take the instance of the dollar. The dollar is controlled by the US Federal Reserve.
It controls the printing, distribution and value of the currency. The dollar is con-
trolled by a single entity and this is what we call a centralised currency. Hence a
decentralised currency is the opposite of this; it is not controlled by one single entity.
In the case of Bitcoin the currency is controlled by all the members that participate
in Bitcoin transactions.
2.3 History
Bitcoin was first proposed by Satoshi Nakamoto in 2008 when he published the
paper, ‘Bitcoin: A Peer-to-Peer Electronic Cash System’ through a cryptography
mailing list [16]. Satoshi Nakamoto is a pseudonym, and to this day it is not known
who he/she is. Bitcoin was first introduced in 2009 as open source software and
became the world’s first decentralised cryptocurrency [16]. As per the Nakamoto
paper Bitcoin is essentially a “peer to peer version of electronic cash that would
allow online payments to be sent directly from one party to another without going
through a financial institution”[9].
This is where the newer Public key system comes in. Public key algorithms re-
quire two separate keys; a private key which is kept secret, and a public key which
is shared with other parties. The public key is mathematically derived from the
private key. The public key is used to encrypt plaintext (and as discussed below
verify digital signatures), whereas the private key is used to decrypt ciphertext (or
create digital signatures).
The key property of a public key cryptosystem is that someone who knows the
public encrypting key cannot use this to derive the private decrypting key with-
out carrying out a long winded computation which makes the process essentially
impossible. So in other words the encrypting function:
f :P →C
is easy to compute with knowledge of the encrypting key KE . However it is very
difficult to compute the inverse function:
2 BACKGROUND 6
f −1 : C → P
with only the knowledge of the encrypting key KE .
So a trap door function f is “a function which is easy to compute but whose in-
verse f −1 is hard to compute without having some additional auxiliary information
beyond what is necessary to compute f ” [8]. Trap door functions are based on
mathematical problems that are inherently easy to compute in one direction, but
difficult in the opposite. Examples of such problems include prime number factori-
sation, the discrete logarithm problem and elliptic curve multiplication. Bitcoin is
built upon the public key cryptosystem and as mentioned previously relies on elliptic
curve mathematics. The trap door function employed by Bitcoin is based upon the
multiplication of points on an elliptic curve over a finite field. An in depth insight
into this will be given in Section 4
Let A (Alice) and B (Bob) be two users of a public key system. Let fA be the
encrypting transformation with which any users of the public key system sends a
message to Alice (i.e. Alice’s public key), and let fB be the same for Bob. Let P be
Alice’s signature. Alice could send Bob the encoded message
fB (P )
as a signature. However Bob has no way of knowing that the signature P is not
forged. Anyone could forge Alice’s signature and send it to Bob. To overcome this
Alice transmits
fB fA−1 (P )
at the end of the message. When Bob decrypts the whole message by applying
his decryption function based on his private key fB−1 , he will find that everything
becomes plain text except for
fA−1 (P ).
Since Bob knows that the message is from Alice, he applies fA (which is known,
since Alice’s encrypting key is public) and obtains P. Since no one other then Alice
could have applied Alice’s decryption function fA−1 , since Alice keeps this private,
2 BACKGROUND 7
he knows that this message is from Alice. This is the basis of the digital signatures
used by Bitcoin to authenticate transactions and ensure that imposters cannot spend
other people’s bitcoins.
f : x 7→ h
from a very long input x to a much shorter output h called the hash (e.g. from
about 106 bits to string of 150 or 200 bits)” [8]. This output h has the property that
it is “not computationally feasible to find two different inputs x and x0 such that
f (x0 ) = f (x)” [8]. This means that two different inputs will never give the same
output. Hence the hash function gives unique outputs.
The hash function can be used to help sign a document. Alice should take a hash
of her message x giving the hash h = f (x). She should then include this in her
signature when sending the message to Bob. Bob can now verify that the message
x hasn’t been interfered with by taking a hash of the message he receives and com-
paring it to the hash Alice included in her signature. Since the hash function gives
unique outputs, if A’s and B’s hashes match, Bob knows that the message has not
been tampered with.
Hash functions are used throughout the Bitcoin system, however the ones used
here are cryptographic hash functions. These are hash functions that make use of
trap door functions in the same way as public key cryptography does. As a result
these hash functions are considered impossible to invert. That is, if someone knows
h they are not able to recreate the original message x using the hash function f .
Cryptographic hash functions are most notably used in the creation of Bitcoin ad-
dresses, Digital signatures and the processing of Bitcoin transactions by members
of the network called miners. The two cryptographic hash functions used by Bit-
coin are the Secure Hash Algorithm (SHA-256) and the RACE Integrity Primitives
Evaluation Message Digest (RIPEMD160).
3 HOW BITCOIN WORKS 8
The hashing algorithms used to process transactions also regulate the speed of min-
ing. As per Antonopoulos [1] the difficulty of the proof of work task is adjusted
dynamically so that on average someone succeeds every ten minutes regardless of
how many miners are working on the task. The number of bitcoins rewarded is
halved every four years and the issuance of bitcoins stops when a total of 21 million
bitcoins are in existence. This means that the circulation of bitcoins follows an
easy to predict curve (Figure 1) that reaches 21 million in 2140 [1]. After this no
more bitcoins are produced. Miners also earn bitcoins from fees that are built into
transactions. After 2140 this will be the main way to earn bitcoins for miners.
Mining of bitcoins has many analogues to the mining of gold. There is only a
finite supply of gold and there is diminishing returns; the more you mine it, the
more scarce it gets and the more difficult it is to mine.
3 HOW BITCOIN WORKS 9
The double spending problem is the result of successfully spending some money
twice. This was a major issue for early digital currencies. The problem of double
spending is largely irrelevant in paper money, since a physical coin cannot be in two
places at once and hence cannot be spent twice at the same time. When money
is transmitted digitally (e.g. Paypal), the problem of double spending is overcome
by the use of central clearing houses that have a global view of the money supply
[1]. Paper money attempts to overcome counterfeiting by using increasingly ad-
vanced printing techniques such as holograms. The aim of a decentralised digital
currency is for there to be no central authority to clear transactions. Instead Bit-
coin uses cryptography as “the basis for trusting the legitimacy of a user’s claim
to value” [1]. Cryptography is based on mathematics, whose operations and proofs
are irrefutable and hence provides a solid foundation for trust in Bitcoin. Bitcoin
specifically employs cryptographic digital signatures (2.4.2) that enable users to sign
a digital transaction proving ownership of that transaction.
In his work paper Satoshi Nakamoto built on the ideas of Dai’s ‘b-money’ and
Back’s ‘HashCash - a denial of service counter-measure’ to develop a decentralised
electronic cash system. As Antonopoulos describes “ [t]he key innovation was to use
a distributed computation system called a ‘Proof-Of-Work algorithm’ [as described
above] to conduct a ‘global election’ every ten minutes, allowing the de-centralised
network to arrive at a consensus about the state of transactions” [1]. This key
innovation overcomes double spending and also is the mechanism that allows trans-
actions to be verified. This invention by Nakamoto is what has made Bitcoin the
most successful digital currency and differentiated it from earlier attempts.
3 HOW BITCOIN WORKS 10
The mathematical properties of both elliptic curve multiplication and hash functions
mean that it is computationally impossible to reverse. Hence a user can publicly
publish their Bitcoin address in the knowledge that other people cannot compute
their private key from it. In Section 4.5 we explain with reference to elliptic curves
how the public key is generated. Each address has its own balance of bitcoins, and
transactions are essentially the transfer of bitcoins between these addresses. In a
transaction between Alice and Bob worth 5BTC a transaction can be thought of
an instruction to reduce the balance of Alice’s address by 5BTC and increase Bob’s
address by 5BTC.
party spending bitcoins actually owns them. This is key in the process of verifying
transactions as will be described in 3.4.
3.4 Transactions
3.4.1 Motivating Example
We will explain how transactions work by using an example taken from Mastering
Bitcoin, Antonopoulos [1]. The parties involved in this example are Alice (A) her
friend Joe (J) and the coffee shop owner Bob (B). Let’s say A exchanges cash with
J for some bitcoins. The transaction created by J funded A’s wallet with 0.1BTC.
Using her bitcoin balance A is now able to buy coffee for 0.015BTC from B who now
accepts bitcoins at his store. As Antonopoulos notes, simplistically “a transaction
tells the network that the owner of a number of bitcoins has authorised the transfer
of some of those bitcoins to another owner. The new owner can now spend those
bitcoins by creating another transaction that authorises transfer of them to another
owner, and so on, in a chain of ownership” [1].
Using this we can ascertain that spending a bitcoin is essentially the transfer of
value from transaction inputs to outputs and this is authorised by the use of a dig-
ital signature. This process creates a chain of digital signatures as more outputs
are used as inputs in new transactions and value is moved between different Bitcoin
addresses. So this creates a chain of ownership for each bitcoin. It is useful to now
think of a bitcoin as a chain of digital signatures rather than an actual coin.
3 HOW BITCOIN WORKS 12
2. Two outputs are created. One output is to Alice’s address for 0.0845BTC
and this represents the change she will receive. The second output is to Bob’s
address for 0.0150BTC and this is the payment for the coffee.
3. Note the inputs and outputs do not total to the same value and this is due to
the transaction fee taken by miners. In the case of this transaction the fee is
0.0005 BTC.
Recall that when Alice ‘locks’ the 0.015 BTC to Bob’s Bitcoin address, Bob must
present his digital signature to spend these bitcoins in future transactions as inputs.
The chain of transactions can be seen in Figure 4. The wallet software of the user
builds the transaction by selecting appropriate inputs and outputs. All Alice has
3 HOW BITCOIN WORKS 13
Figure 4: The chain of transaction between Joe Alice and Bob [1]
3.5 Mining
So the transaction has been broadcast to the whole network, however it doesn’t
become part of the block chain till it is verified by a miner. The process of mining
as discussed in 3.1.1 firstly generates new bitcoins and secondly verifies transactions.
To confirm that a transaction is legitimate we need to place trust in it. Bitcoin use
computation to create trust. During the process of mining transactions are sorted
into blocks and the miner must solve the proof of work to verify these transactions
and add them to the block chain. The proof of work requires a lot of computation to
solve but it is easy to verify as solved. Transactions are only confirmed (i.e. marked
as trusted) if enough computational power was dedicated to the block that contains
it [1]. The principle is that “[m]ore blocks mean more computation which means
more trust” [1].
Bitcoin uses the HashCash proof of work. The difficulty of this work is dynamically
changed so that a new block is generated once every ten minutes. The probabil-
ity that a successful block is generated is low, meaning that it is unlikely that one
worker computer can generate consecutive blocks. So what must a miner do to solve
a proof of work? Well firstly the miner collects a group of transaction in a block.
This block will have something called a header which contains a hash of the previ-
ous block, a hash of the transactions in this block and a time stamp. To solve the
proof of work the miner must repeatedly hash the header of the block and a random
number called a nonce with the SHA256 cryptographic algorithm until a solution
matching a predetermined pattern emerges. This pattern usually requires the hash
to start with a defined sequence of zero bits.
So the solution to the mathematical problem/the proof of work that we have men-
tioned throughout the report is this random number - the nonce. Miners are search-
ing for the nonce that when hashed with the transactions produces a hash with a
defined number of zero bits at the start. This is a process of trial and error and can
only be achieved by brute force computation (trying random numbers till you get
the solution). “The average work required [to do this] is exponential in the number
of zero bits required but can be verified by executing a single hash” [9]. This gives
us a puzzle that is asymmetrically hard to solve but easy to verify, and its difficulty
can be adjusted (by changing the number of zero bits required).
So recall that mining can be thought of as a big competition, and we now know
that the competition is to find the nonce for the block in question. The first miner
to find the nonce wins the competition and publishes his block along with the nonce
that when hashed with the block header produces the required zero bits. All the
other miners are able to easily verify that this nonce satisfies the zero bit require-
ment by hashing the block with the nonce. So it is computationally difficult to find
the nonce for a block, but it is easy to verify, much like a Sudoku puzzle once you
are given the solution you can easily verify that it works.
Once the other miners agree that the block has been ‘solved’ and hence all the
transaction within it verified, the block is added to the block chain and the success-
ful miner receives his reward of bitcoins (currently 25BTC). An updated block chain
is distributed throughout the network, and once the miners receive this new block
chain they know they have lost the competition to mine the previous block. Trans-
actions are constantly entering into the network, and so miners group another lot of
transactions into a block and begin solving the proof of work for these transactions.
Since the proof of work takes approximately ten minutes to solve, a new block is
mined every ten minutes. Also note that each block contains a hash of the previous
3 HOW BITCOIN WORKS 15
block, and this links blocks together in a chain - hence the term block chain.
Once verified this block will be added to block chain as block 277316 for exam-
ple and the successful miner gets the reward of mined bitcoins and the transaction
fees. The new block chain is sent out to the network, and once other miners receive
this new updated block chain they begin to mine the next block. Lets say another
miner mines the next block - 277317. This block must have a hash of the previous
block 277316 within it, thus linking 277317 and 277316. Since the new block is based
on the previous block (277316) that contained Alice’s transaction, we have added
extra computation on top of that block (277316). Recall that trust is created in
Bitcoin by computation; the more computation the more trust. Block 277316 now
has another blocks worth of computation on top of it which increases the trust in
the transactions in this block. One of the transactions in the block is Alice’s, and
we now have one ‘confirmation’ of this transaction. Each block mined on top of the
one containing Alice’s transaction is an additional confirmation [1].
As the blocks are added on top of each other, it becomes exponentially harder
to reverse the transaction. The later blocks are chained after Alice’s block, and
the work needed to change this block would include redoing all the blocks after it,
which would take a lot of computation. Hence the more blocks added on top of a
transaction the more computation is needed to change the transaction and hence
the more trusted it is by the network. “By convention, any block with more than
six confirmations is considered irrevocable, as it would require an immense amount
of computation to invalidate and recalculate six blocks” [1].
This chapter has given a brief insight into the workings of Bitcoin. As per the aim
of this report, we go on to discuss the mathematics of key generation and digital
signatures.
4 BITCOIN AND ELLIPTIC CURVES 16
Fp = Z/pZ = {0, 1, . . . , p − 1}
where the operations are defined by performing the operation in the set of integers Z,
dividing by p and taking the remainder [15]. This is called modular arithmetic. The
key point here is that a finite field contains only integer numbers and no decimals.
4 BITCOIN AND ELLIPTIC CURVES 17
y 2 = x3 + ax + b (1)
together with a single element O called the point at infinity [8]. An example of an
elliptic curve can be seen in Figure 5
• −P to be O
• P + Q to be Q
Hence O serves as the the additive identity (zero element) of the group of points.
In what follows we will assume that P 6= O. Now we define −P . This is the point
with the same x coordinate but negative y coordinate. So if the coordinates of P
are (x, y) then −P is (x, −y), which is also on the curve E. We will define two
operations for elliptic curves; point addition and point multiplication.
kP = 23.P = 2(2(2(2P ) + P ) + P ) + P .
Thus point multiplication uses point addition and doubling repeatedly to find the
result. This method is called the double and add method for point multiplication.
A key point to note here is that if you have the point Q and you know P , there is no
way to find the value of k. Since there is no point subtraction or point division, you
cannot simply solve k = Q/P . This makes point multiplication essentially an irre-
versible operation, i.e. a one way function. As per 2.4.1 this is the trap door function
employed by Bitcoin to keep the system cryptographically secure. The irreversibility
of point multiplication is the basis of the security of the ECDSA algorithm.
Let (x1 , y1 ), (x2 , y2 ) and (x3 , y3 ) denote the coordinates of P , Q and P + Q re-
spectively. Suppose P 6= Q. We want to express x3 and y3 in terms of x1 , y1 , x2 , y2 .
Let y = αx + β be the equation of the line through P and Q. Then,
(y2 −y1 )
α= (x2 −x1 )
and β = y1 − αx1 .
A point on the line l i.e. a point (x, αx + β), lies on the elliptic curve if and only if
(αx + β)2 = x3 + ax + b.
Hence, there is one intersection point for each root of the cubic equation
x3 − (αx + β)2 + ax + b.
4 BITCOIN AND ELLIPTIC CURVES 20
We already know that there are two roots x1 ,x2 , because (x1 , αx1 + β), (x2 , αx2 + β)
are the points P and Q on the curve. Since the sum of a monic polynomial (A
polynomial where the leading coefficient is equal to 1) is equal to minus the coefficient
of the second-to-highest power, we conclude that the third root in this case is
x3 = α 2 − x1 − x2 .
This leads to an expression for x3 , and hence P + Q = (x3 , −(αx3 + β)), in terms of
x1 , x2 , y1 , y2 :
y2 − y1 2 y2 − y1
x3 = ( ) − x1 − x2 ; y3 = −y1 + (x1 − x3 ) (2)
x2 − x1 x2 − x1
3x21 + a 2 3x21 + a
x3 = ( ) − 2x1 ; y3 = −y1 + (x1 − x3 ) (3)
2y1 2y1
Bitcoin uses a specific elliptic curve with a set of constants which is defined in the
secp256k1 standard established by the National Institute of Standards and Tech-
nology (NIST). As per [4] the elliptic curve domain parameters over FP associated
with a Koblitz curve secp265k1 are specified by the sextuple:
T = (p, a, b, G, n, h)
where the finite field FP is defined by (note parameters are given in hexadecimal):
h = 01
y 2 = x3 + 7 over Fp or
y 2 (mod p) = x3 + 7 (mod p) [1]
With mod p (modulo prime number p) meaning the curve is over a finite field of
prime order p, which is also written as Fp , where in the case of Bitcoin
p = 2256 − 232 − 29 − 28 − 27 − 26 − 24 − 1
a very large prime number. Also note G is the base point/generator point and is
very important in the proceeding sections.
The graph of this is very big, so in order to provide an example of what such a
graph looks like, we will use a smaller finite field of prime order 17. As you can see
in Figure 8 this graph is also symmetrical about x.
Kpub = Kpriv × G
So we are trying to find the public key Kpub which is a point on the elliptic curve.
We find this by multiplying the private key in the form of a randomly generated
number Kpriv by a point on the elliptic curve called the generator point G. The
generator point is specified as part of the secp256k1 standard and is always the
same for all Bitcoin keys (see T in 4.4). Hence a private key multiplied with G will
always result in the same public key.
It is quite straight forward to find Kpub from Kpriv using the double and add method
described in 4.3.4. However the reverse operation is very difficult to do, and this is
why the public key can be shared without anyone deriving the initial private key.
4 BITCOIN AND ELLIPTIC CURVES 22
In order to visualise this process we will use an elliptic curve over the real num-
bers, the mathematics of elliptic curves over finite fields and real numbers is the
same. Our goal is to find the multiple Kpriv G. As we saw in 4.3.4 point multiplica-
tion on an elliptic curve can be broken down into point addition and doubling. For
example lets take Kpriv = 8 and hence we are calculating 8G. The resulting process
is showed in Figure 9. Taking into consideration that Kpriv is usually a very large
number, we can see that it is very difficult to start with the public key (other users
are not aware that this is 8G) and generator point and deduce what Kpriv is.
4.6 ECDSA
A brief outline of how digital signatures work was given in 2.4.2. Bitcoin uses the
mathematics of elliptic curves as the underlying basis for its digital signature. Recall
elliptic curves are defined by T = (p, a, b, G, n, h), with Bitcoin using parameters
prescribed by sep256k1. We also have the private and public key pair (Kpriv , Kpub )
where Kpub = Kpriv × G, as explained in 4.5. If Alice (A) and Bob (B) wanted
to send a message (or transaction) to each other, this is how they would create and
verify a digital signature.
5. Compute X = u1 G + u2 Kpub .
X = u1 G + u2 Kpub .
Using the relation between the private and public key, gives:
X = kG.
A References
References
[1] Antonopoulos. A. Mastering Bitcoin - Unlocking Digital Cryptocurrencies.
O’Reilly Media, 2014.
[2] Bitcoin Foundation. Some Bitcoin words you might hear. [online]. N.d. [Last ac-
cessed February 25th 2015]. Available from: https://bitcoin.org/en/vocabulary.
[3] Certicom. 1.0 Introduction. [online]. N.d. [Last accessed March 14th 2015].
Available from: https://www.certicom.com/10-introduction.
[6] Dai. W. b-money. [online]. 1998. [Last accessed February 25th 2015]. Available
from: http://www.weidai.com/bmoney.txt.
[8] Koblitz. N. A course in number theory and cryptography. Second edition. New
York: Springer-Verlag, 1948.
[10] Simonite. T. What Bitcoin Is, and Why It Matters. [online]. May
25nd 2011. [Last accessed February 25th 2015]. Available from:
http://www.technologyreview.com/news/424091/what-bitcoin-is-and-why-
it-matters/.
[12] The Royal Fork [online]. N.d. [Last accessed April 8th 2015]. Available from:
http://www.royalforkblog.com/
[13] Bitcoin - Proof of Work [online]. N.d. [Last accessed April 25th 2015]. Available
from: https://en.bitcoin.it/wiki/Proof of work
REFERENCES 26
[14] Bitcoin definition investopedia [online]. N.d. [Last accessed May 4th 2015].
Available from: http://www.investopedia.com/terms/b/bitcoin.asp
[15] Field (mathematics) [online]. N.d. [Last accessed May 4th 2015]. Available from:
http://en.wikipedia.org/wiki/Field (mathematics)