handouts/ho08.tex
author Christian Urban <christian dot urban at kcl dot ac dot uk>
Thu, 20 Nov 2014 14:48:11 +0000
changeset 319 e6afcdabd3ea
parent 318 f376d16470e0
child 320 bd5775cc8a45
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     1
\documentclass{article}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     2
\usepackage{../style}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     3
\usepackage{../graphics}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     4
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     5
\begin{document}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     6
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     7
\section*{Handout 7 (Bitcoins)}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     8
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
     9
In my opinion Bitcoins are an elaborate Ponzi
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    10
scheme\footnote{\url{http://en.wikipedia.org/wiki/Ponzi_scheme}}---still
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    11
the ideas behind them are really beautiful and not too
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    12
difficult to understand. Since many colourful claims about
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    13
Bitcoins float around in the mainstream media, it will be
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    14
instructive to re-examine such claims from a more technically
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    15
informed vantage point. For example, it is often claimed that
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    16
Bitcoins are anonymous and free from any potential government
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    17
meddling. It turns out that the first claim ignores a lot of
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    18
research in de-anonymising social networks, and the second
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    19
underestimates the persuasive means a government has at their
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    20
disposal. 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    21
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    22
There are a lot of articles, blogposts and so on available
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    23
about Bitcoins. Below I will follow closely the very readable
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    24
explanations from
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    25
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    26
\begin{center}
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    27
\url{http://www.michaelnielsen.org/ddi/how-the-bitcoin-protocol-actually-works/} \;\;and\smallskip\\
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    28
\url{http://www.imponderablethings.com/2013/07/how-bitcoin-works-under-hood.html}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    29
\end{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    30
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    31
\noindent 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    32
The latter also contains a link to a nice youtube video.
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    33
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    34
Let us start with the question who invented Bitcoins? You
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    35
could not make up the answer, but we actually do not know who
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    36
the inventor is. All we know is that the first paper
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    37
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    38
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    39
\url{https://bitcoin.org/bitcoin.pdf}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    40
\end{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    41
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    42
\noindent is signed by Satoshi Nakamoto, which however is
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    43
likely only a pen name. There is a lot of speculation who
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    44
could be the inventor, or inventors, but we simply do not
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    45
know. This part of Bitcoins is definitely anonymous. The first
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    46
Bitcoin transaction was made in January 2009. The rules in
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    47
Bitcoin are set up so that there will ever only be 21 Million
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    48
Bitcoins with the maximum reached around the year 2140.
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    49
Contrast this with traditional fiat currencies where money can
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    50
be printed almost at will. The smallest unit of a Bitcoin is
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    51
called a Satoshi which is the $10^{-8}$th part of a Bitcoin.
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    52
Remember a Penny is the $10^{-2}$th part of a Pound.
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    53
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    54
The two main cryptographic building blocks of Bitcoins are
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    55
cryptographic hashing (SHA-256) and public-private keys using
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    56
the elliptic-curve encryption scheme for digital signatures.
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    57
Hashes are used to generate `fingerprints' of data that ensure
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    58
integrity. Public-private keys are used for signatures. For
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    59
example sending a message, say $msg$, together with the
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    60
encrypted version
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    61
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    62
\[
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    63
msg, \{msg\}_{K^{priv}}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    64
\]
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    65
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    66
\noindent allows everybody with access to the public key to
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    67
verify the message came from the person who knew the private
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    68
key. Signatures are used in Bitcoins for verifying the
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    69
addresses where the Bitcoins are sent from. Addresses in
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    70
Bitcoins are essentially the public keys. There are $2^{160}$
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    71
possible addresses, which is such a vast amount that there is
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    72
not even a check for duplicates, or already used addresses. If
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    73
you start with a random number to generate a public-private
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    74
key pair it is very unlikely that you step on somebody else's
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    75
shoes. Compare this with email-addresses you ever wanted to
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    76
register with, say, Googlemail, but which were always already
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    77
taken.
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    78
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    79
One main difference between Bitcoins and, say, traditional
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    80
banking is that you do not have a place that records the
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    81
balance on your account. Traditional banking involves a
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    82
central ledger which specifies the current balance in each
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    83
account, for example 
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    84
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    85
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    86
\begin{tabular}{l|r}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    87
account & balance\\\hline
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    88
Alice   & \pounds{10.01}\\
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    89
Bob     & \pounds{4.99}\\
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    90
Charlie & -\pounds{1.23}\\
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    91
Eve     & \pounds{0.00}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    92
\end{tabular}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    93
\end{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    94
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    95
\noindent Bitcoins work differently in that there is no such
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    96
central ledger, but instead a public record of all
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    97
transactions ever made. This means spending money corresponds
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
    98
to sending messages of the (rough) form 
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    99
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   100
\begin{equation}
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   101
\{\text{I, Alice, am giving Bob one Bitcoin.}\}_{K^{priv}_{Alice}}
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   102
\end{equation}
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   103
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   104
\noindent These are the transactions that are the only data
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   105
that is ever stored (we will come to the precise details later
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   106
on). The transactions are encrypted with Alice's private key
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   107
such that everybody, including Bob, can use Alice's public key
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   108
$K^{pub}_{Alice}$ for verifying that this message came really
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   109
from Alice, or more precisely from the person who knows
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   110
$K^{priv}_{Alice}$. 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   111
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   112
The problem with such messages in a distributed system is what
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   113
happens if Bob receives 10, say, of these transactions. Did
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   114
Alice intend to send him 10 Bitcoins, or did the message get
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   115
duplicated by for example an attacker re-playing a sniffed
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   116
message? What is needed is a kind of serial number for such
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   117
transactions. This means transaction messages look more like 
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   118
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   119
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   120
$\{\text{I, Alice, am giving Bob Bitcoin \#1234567.}\}_{K^{priv}_{Alice}}$
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   121
\end{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   122
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   123
\noindent There are two difficulties, however, that need to be
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   124
solved. One is who is assigning serial numbers to Bitcoins and
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   125
also how can Bob verify that Alice actually owns this Bitcoin
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   126
to pay him? In a system with a bank as trusted third-party,
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   127
Bob could do the following:
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   128
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   129
\begin{itemize}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   130
\item Bob asks the bank whether the Bitcoin with that serial
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   131
      number belongs to Alice and Alice hasn’t already spent
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   132
      this Bitcoin.
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   133
\item If yes, then Bob tells the bank he accepts this Bitcoin.
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   134
      The bank updates the records to show that the Bitcoin
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   135
      with that serial number is now in Bob’s possession and
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   136
      no longer belongs to Alice. 
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   137
\end{itemize}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   138
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   139
\noindent But for this banks would need to be trusted and
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   140
would also be an easy target for any government interference,
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   141
for example. Think of the early days of music sharing where
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   142
the company Napster was the single point of ``failure'' which
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   143
was taken offline by law enforcement. 
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   144
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   145
Bitcoin solves the problem of not wanting to rely on a bank by
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   146
making everybody the ``bank''. Everybody who cares can have
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   147
the entire transactions history starting with the first
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   148
transaction made in January 2009. This history of transactions
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   149
is called \emph{blockchain}. Bob, for example, can use his
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   150
copy of the blockchain for determining whether Alice owned the
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   151
Bitcoin and if yes transmits the message to every other
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   152
participant on the Bitcoin network. The blockchain looks
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   153
roughly like a very long chain of individual blocks
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   154
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   155
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   156
\includegraphics[scale=0.4]{../pics/bitcoinblockchain0.png}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   157
\end{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   158
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   159
\noindent Each block contains a list of individual
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   160
transactions, called txn in the picture above, and also a
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   161
reference to the previous block, called prev. The data in a
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   162
block (txn's and prev) is hashed so that the reference and
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   163
transactions in them cannot be tampered with. This hash is the
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   164
unique serial number of each block. Since this
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   165
previous-block-reference is also part of the hash, the whole
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   166
chain is robust against tampering. I let you think why this is
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   167
the case. \ldots{}But does it eliminate all possibilities of
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   168
fraud?
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   169
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   170
We can check the consistency of the blockchain by checking the
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   171
entire block\-chain whether the references and hashes are
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   172
correctly recorded. I have not tried it myself, but it is said
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   173
that with the current amount of data (appr.~12GB) it takes
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   174
roughly a day to check the consistency of the blockchain on a
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   175
``normal'' computer. Fortunately this ``extended'' consistency
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   176
check usually only needs to be done once.
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   177
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   178
Recall I wrote earlier that Bitcoins do not maintain a ledger
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   179
listing all the current balances in each account. Instead they
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   180
record only transactions. Therefore it is possible to extract
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   181
from the blockchain a transaction graph that looks like the
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   182
picture shown in Figure~\ref{txngraph}. Take for example the
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   183
rightmost lower transaction from Charles to Emily. This
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   184
transaction has as receiver the address of Emily and as the
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   185
sender the address of Charles. In this way no Bitcoins can
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   186
appear out of thin air (we will discuss later how Bitcoins are
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   187
actually generated). If Charles did not have a transaction of
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   188
at least the amount he wants to give Emily to his name
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   189
(i.e.~send to an address with his public-private key) then
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   190
there is no way he can make a payment to Emily. Equally, if
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   191
now Emily wants to pay for a coffee, say, with the Bitcoin she
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   192
received from Charles she can only make a transaction to
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   193
forward the message she received. The only slight complication
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   194
with is that incoming transactions can be combined in a
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   195
transaction and ``outgoing'' Bitcoins can be split. For
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   196
example in the leftmost upper transactions in
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   197
Figure~\ref{txngraph} Fred makes a payment to Alice. But this
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   198
payment (or transaction) combines the Bitcoins that were send
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   199
by Jane to Fred and also by Juan to Fred. This allows you to
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   200
``consolidate'' your funds: if there was always only a way to
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   201
split transactions, then the amounts would get smaller and
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   202
smaller. But it is also important to be able to split the
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   203
money from one or more incoming transaction to more than one
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   204
receiver. Consider again the rightmost transactions in
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   205
Figure~\ref{txngraph} and suppose Alice is a coffeeshop owner
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   206
selling coffees for 1 Bitcoin. Charles received a transaction 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   207
from Zack over 5 Bitcoins. How does he pay for the coffee? 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   208
There is no real notion of change in the Bitcoin system. What 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   209
Charles has to do instead is to make one single transaction 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   210
with 1 Bitcoin to Alice and with 4 Bitcoins going back to 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   211
himself. Which Charles can then use to give to Emily.
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   212
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   213
\begin{figure}[t]
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   214
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   215
\includegraphics[scale=0.4]{../pics/blockchain.png}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   216
\end{center}
319
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   217
\caption{Transaction graph that is implicitly recorded in the
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   218
public blockchain.\label{txngraph}}
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   219
\end{figure}
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   220
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   221
Let us make another example. Let us assume Emily received 4
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   222
Bitcoins from Charles and independently has another
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   223
transaction (not shown in the picture) that sends 6 Bitcoins
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   224
to her. If she now wants to buy a coffee from Alice for 1
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   225
Bitcoin she has two possibilities. She could just forward the
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   226
transaction from Charles over 4 Bitcoins to Alice splitted in
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   227
such a way that Alice receives 1 Bitcoin and Emily sends the
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   228
remaining 3 Bitcoins `back' to herself. In this case she would
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   229
now be in the ``posession'' of two unspend Bitcoin
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   230
transactions, one over 3 Bitcoins and the independent one over
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   231
6 Bitcoins. Or, Emily could combine both transactions (one
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   232
over 4 Bitcoins from Charles and the independent one over 6
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   233
Bitcoins) and then split this amount with 1 Bitcoin going to
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   234
Alice and 9 Bitcoins going back to herself. 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   235
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   236
I let you have time to let this concept of transactions sink
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   237
in\ldots{}in the words of a famous 60ies Band: ``All you need
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   238
is transactions''. There is no need for a central ledger and
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   239
no need for an account balance from traditional banking. The
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   240
closest what Bitcoin has to offer for a notion of a balance in
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   241
a bank account are the unspend transaction that a person (that
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   242
is public-private key address) received. That means
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   243
transactions that can still be forwarded. 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   244
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   245
Also consider the fact that whatever transaction is recorded
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   246
in the blockchain is what will set the ``historical record''.
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   247
If a transaction says 1 Bitcoin from address $A$ to address
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   248
$B$, then this is what will be recorded. This is also how
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   249
Bitcoins can actually get lost: if you forget your private key
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   250
and you had just a message forwarded to you address of the
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   251
public key, then bad luck: you will never be able to forward
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   252
this message again, because you will not be able to form a
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   253
valid message that sends this to somebody else (we will see
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   254
the details of this later). But this is also a way how you can
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   255
get robbed of your Bitcoins. An attacker might get hold of
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   256
your private key and then quickly forward the Bitcoins in your
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   257
name to an address the attacker controls. You have never again
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   258
access to these Bitcoins, because for the Bitcoin system they
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   259
are assumed to be spend. And remember with Bitcoins you cannot
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   260
appeal to any higher authority. Once it is gone, it is gone.
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   261
This is different with traditional banking where at least you
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   262
can try to harass the bank to rollback the transaction.
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   263
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   264
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   265
This brings us to back to problem of double spend. Say Bob is
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   266
a merchant. How can he make sure that Alice does not cheat.
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   267
She could for example send a transaction to Bob. But also to
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   268
Charlie, or even herself. If Bob is also in the coffee
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   269
business, he would potentially be cheated out of his money.
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   270
The problem is how should people update their blockchain?
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   271
You might end up with a picture like this
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   272
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   273
\begin{center}
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   274
\includegraphics[scale=0.3]{../pics/bitcoindisagreement.png}
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   275
\end{center}
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   276
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   277
\noindent Alice convinced some part of the ``world'' that she 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   278
is still owner of the bitcoin and some other part of the 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   279
``world'' thinks its Bob's. How should such a disagreement be 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   280
resolved? This is actually the main hurdle where Bitcoin 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   281
really innovated. The answer is that Bob needs to convince 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   282
``enough'' people on the network that the transaction from 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   283
Alice to him is legit. But what means enough in a distributed 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   284
system? If Alice sets up network of a billion puppy identidies
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   285
and whenever Bob tries to ask whether Alice is the rightful 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   286
owner of the Bitcoin and Alice just send a transaction to him,
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   287
the puppy network of identities just says yes. Bob would then 
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   288
give the coffee to Alice, but then for everybody else the
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   289
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   290
e6afcdabd3ea updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 318
diff changeset
   291
318
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   292
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   293
\end{document}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   294
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   295
bit coin
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   296
https://bitcoin.org/bitcoin.pdf
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   297
https://bitcoin.org/bitcoin.pdf
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   298
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   299
A fistful of bitcoins
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   300
http://cseweb.ucsd.edu/~smeiklejohn/files/imc13.pdf
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   301
http://cseweb.ucsd.edu/~smeiklejohn/files/imc13.pdf
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   302
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   303
Ross Anderson & Co (no dispute resolution; co-ercion)
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   304
http://www.cl.cam.ac.uk/~sjm217/papers/fc14evidence.pdf
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   305
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   306
http://www.michaelnielsen.org/ddi/how-the-bitcoin-protocol-actually-works/
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   307
http://www.imponderablethings.com/2013/07/how-bitcoin-works-under-hood.html
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   308
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   309
http://randomwalker.info/bitcoin/