You are on page 1of 34

Introduction to

Cryptographic Currencies
Claudio Orlandi
cs.au.dk/~orlandi
Thanks to: Jon K. Srensen and Peter S. Nordholt
Leave while you can!
Politics
Economics

Coming up next:
Algorithms
Cryptography

Outline
Part 0: a little history

Part 1: TheoryCoin
How to create coins
How to transfer coins
How to store coins

Part 2: diff( , )

Part 3: Problems and issues

crypto currency
The 1990s
David Chaum and anonymous ecash
The difference between
and well-developed digital cash
will determine whether
we will have a dictatorship
or a real democracy
(attributed to Chaum)
Anonymous payments
withdraw
withdraw
M or L?
Chaums anonymous e-cash
anonymous
secure (no double-spending)
only transfer (no creation/storage)

and bankrupted in 1999

2009: Bitcoin announced by Satoshi Nakamoto
Pseudonym for person or group of person

2009-2011: slow start

End 2013: Bitcoin price skyrockets
and the world notices!

Outline
Part 0: a little history

Part 1: TheoryCoin
How to create coins
How to transfer coins
How to store coins

Part 2: diff( , )

Part 3: Problems and issues

TheoryCoin:
How to create money
1. Everyone
tries to solve a puzzle

2. The first one to solve
the puzzle gets 1 TC

3. The solution of puzzle i
defines puzzle i+1
TheoryCoin:
How to create money
H
L {0,1}* R {0,1}*
T {0,1}
d

SolvePuzzle(L){
repeat{
R = my_name || i++
T = H(L,R)
}while(T 0
d
)
return R
}

The puzzle:
given L, find R
such that T=0
d
(a random function)
* aka Proof-of-Work
TheoryCoin: (coins to ppl)
How to create money
H
x
0
= Start!
x
1
=(P
1
, i
1
)
000000

x
2
=(P
2
, i
1
)
H
000000

x
3
=(P
3
, i
3
)
H
000000

P
3
P
1
P
2
x
1

x
1

x
2

x
2

x
3

x3
* aka the blockchain
x
7
=(P
3
, i
7
) x
6
=(P
3
, i
6
)
x
5
=(P
5
, i
5
)
x
0
=Start! x
1
=(P
1
, i
1
) x
2
=(P
2
, i
2
)
x
3
=(P
3
, i
3
)
x
4
=(P
4
, i
4
)
TheoryCoin:
How to create money
* aka the 51% attack
TheoryCoin:
How to create money
Recap:
Solve the next puzzle get a coin

To solve puzzle i find x
i
s.t H(x
i-1
,x
i
)=0
d

The longest chain defines next puzzle

The name in block x
i
gets coin i.
Outline
Part 0: a little history

Part 1: TheoryCoin
How to create coins
How to transfer coins
How to store coins

Part 2: diff( , )

Part 3: Problems and issues

TheoryCoin:
How to transfer money
(Digital) Signatures
Only you can sign
Everyone can verify
You cannot deny

Give coin 3 to Jesper
Claudio
TheoryCoin:
How to transfer money
Gen
Sign Verify
message
message, signature accept/reject
secret key public key
P
3
P
1
m=P3 gives coin 3 to P1
s=Sig(sk3,m)
If
Ver(pk3,m,s) = accept
and
P3 owns coin 3
then
return accept
TheoryCoin:
How to transfer money
P
3
P
1
P
2
accept
accept
TheoryCoin:
How to transfer money
m1=P3 gives coin 3 to P1
s1=Sig(sk3,m1)
m2=P3 gives coin 3 to P2
s2=Sig(sk3,m2)
* aka double spending
P
3
P
1
TheoryCoin:
How to transfer money
...
(m1,s1)
...
(m2,s2)
...
(m4,s4)

m1 = P3 gives coin 3 to P1
s1 = Sig(sk3,m1)

m2 = P3 gives coin 3 to P2
s2 = Sig(sk3,m2)
write
(m1,s1)
write
(m2,s2)
(m1,s1)
P
2
(m2,s2)
accept
reject
P
4
m4 = P1 gives coin 3 to P4
s4 = Sig(sk1,m4)
write
(m4,s4)
(m4,s4)
Outline
Part 0: a little history

Part 1: TheoryCoin
How to create coins
How to transfer coins
How to store coins

Part 2: diff( , )

Part 3: Problems and issues

TheoryCoin:
How to store money

Main Idea:
Record transfers in the blockchain
x
4
=(P4, (m,s), i
4
)
P
1
TheoryCoin:
How to store money
P
3
P
2
P
4
(m,s)
(m,s)
(m,s)
SolvePuzzle(L,...){
repeat{
R = my_name||(m,s)|| i++
T = H(L,R)
}while(T 0
d
)
return R
}
Outline
Part 0: a little history

Part 1: TheoryCoin
How to create coins
How to transfer coins
How to store coins

Part 2: diff( , )

Part 3: Problems and issues

diff( , )
How is money created in Bitcoin?
New block every ~10 mins

H = 2-SHA2

Initial reward: 50 BTC
Halved every ~4 years (now 25 BTC)
diff( , )
How is money transferred in Bitcoin?
P1 gives 14 to P1
Transaction fee 1
Example: P1 wants to give 60 to P2
... gives 50 to P1
gives 25 to P1
P1 gives 60 to P2
P2 gives 42 to P3
P2 gives 17 to P2
Transaction fee 1
diff( , )
How is money stored in Bitcoin?
Transaction in orphaned blocks are invalid
Wait 6 blocks (~1 hour) before accepting transaction.
Checkpoints to prevent complete history rollback.

All transaction are stored in the blockchain
(Currently ~14 GB)

Outline
Part 0: a little history

Part 1: TheoryCoin
How to create coins
How to transfer coins
How to store coins

Part 2: diff( , )

Part 3: Problems and issues

Anonymity?
Problem:
Every transaction ever made is recorded forever
Solution?
Use new identity for each transaction
But:
Heuristics allow to cluster identities

Anonymous alternatives:
Zerocoin, Zerocash

Users?
(and their devices)
Unfortunate property of DSA

1HKywxiL4JziqXrzLKhmB6a74ma6kxbSDj
probably stole ~250000kr this way
(due to bug in Android Java based random generator)
Extractor
Sig(sk,m1,r)
Sig(sk,m2,r)
sk
Programmable money?
Bitcoin uses a scripting system for transactions. Forth-like,
Script is simple, stack-based, and processed from left to
right. It is purposefully not Turing-complete, with no loops.

E.g., P1 gives 1 BTC to P2 if at least
2 out of (P1,P2,P3) sign this transaction

Functionality: more than money?
Security: malware payments?
Mining pools
Solving puzzles (mining) is hard!
Miners join pools and share work/reward

How to optimally split work?

Mechanism design?
rational miner?
how to allocate reward?
A final word
Distributed currencies:
for the good guys or the bad guys?

But sometimes governments are bad too!

Thanks! Questions?
Sources:
Story of Chaum and DigiCash (to be taken with a grain of salt)
http://cryptome.org/jya/digicrash.htm
Bitcoin paper and announcement
http://article.gmane.org/gmane.comp.encryption.general/12588/
http://www.mail-archive.com/cryptography@metzdowd.com/msg10142.html
This pizza cost 750,000 usd
http://motherboard.vice.com/blog/this-pizza-is-worth-750000
Lily Allen turns down btcs
Signature attack
http://eprint.iacr.org/2013/734
Deanonymizing
http://cseweb.ucsd.edu/~smeiklejohn/files/imc13.pdf
http://eprint.iacr.org/2012/584
Zerocoin/Zerocash
http://zerocoin.org/
Graphs, stats etc
www.blockchain.info
Comparison with Altcoins
http://www.coinwarz.com/cryptocurrency
Bitcoin stolen from TV
http://nymag.com/daily/intelligencer/2013/12/bloomberg-anchors-christmas-bitcoin-gets-stolen.html
Visa/Mastercard vs Wikileaks
http://www.forbes.com/sites/andygreenberg/2010/12/07/visa-mastercard-move-to-choke-wikileaks/
Not in the talk, but very interesting:
{"found_math": false, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0}