dit-upm
bitcoins & blockchain
José A. Mañas < http://www.dit.upm.es/~pepe/>
Information Technology Department
Universidad Politécnica de Madrid
27 October 2017
index
dit
1. bitcoins
2. blockchain
bitcoin & blockchain 2
money
dit
what is money?
an amount
signed by the issuer
who is the owner?
the holder
if you lose the token
the money goes to the finder
+ integrity
+ authenticity
cash anonymity
bitcoin & blockchain 3
bitcoin
dit
what is a crypto coin? value
an amount
address
for an owner (address)
signed by previous
signed by the previous owner
who is the owner?
digital signature
the one who knows the private key Ks + integrity
that matches the verification key Kp + authenticity
tech: hash(Kp) = address anonymity
that is, a proof of possesion
if Ks is lost, there is no owner
if P guesses Ks, P becomes the owner
bitcoin & blockchain 4
cryptography
dit
256 bits elliptic curve
secp256k1
y2 = x3 + 7 over Zp
p = 2256 – 232 -29 – 28 - 27 – 26 – 24 -1
G = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB
2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC
0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8
http://www.secg.org/sec2-v2.pdf
bitcoin & blockchain 5
example
dit
bitcoin & blockchain 6
paper bitcoin
dit
for you to receive money,
you need the owner to sign the transfer
the owner can provide the signing key
for you to transfer yourself
bitcoin & blockchain 7
addresses
dit
A = ripemd160(sha256(public)) (160 bits)
base58check encoding
e.g. 174sG4urSK4zoqFw6T8AQwMuhLj6u2wL9W
https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses
bitcoin & blockchain 8
transaction
dit
change hands (that is, change address ownership)
https://bitcoinfees.21.co/
bitcoin & blockchain 9
value moves from address(es)
dit to address(es)
proof of ownership: source signs
bitcoin & blockchain 10
anonymity
dit
very difficult to trace
bitcoin & blockchain 11
derived keys
dit
https://iancoleman.github.io/bip39/
mnemonic root key address tree
bitcoin & blockchain 12
copay wallet
dit
bitcoin & blockchain 13
money creation
dit
out of nothing
the network subsidizes blockchain maintenance
you build a block, you get some coins
bitcoin & blockchain 14
money creation
dit
The number of Bitcoins generated per block starts at 50
and is halved every 210,000 blocks (about four years).
28.11.2012: 210.000 blocks: 50 BTC 25 BTC
10.7.2016: 420.000 blocks: 25 BTC 12.5 BTC
expected: x.x.2020: 630.000 blocks: 12.5 BTC 6.25 BTC
bitcoin & blockchain 15
money creation
dit
bitcoin & blockchain 16
index
dit
1. bitcoins
2. blockchain
bitcoin & blockchain 17
balance (ledger)
dit
how to know the money associated to an address now?
so nobody pays with others’ money digital signature
so nobody double spends blockchain
traditional answer: universal balance
traditional bank with its superhost
the bank intermediates every transaction
the bank has all the moves, and the last word
I may have a local copy (e.g. excel)
bitcoin & blockchain 18
distributed ledger
dit
everybody knows everbody’s transactions
bitcoin & blockchain 19
shared log
dit
https://www.youtube.com/watch?v=l9jOJk30eQs
bitcoin & blockchain 20
distributed ledger
dit
no central registry
nobody is more than anybody else
peer-to-peer: no central authority
how do we get everyone to have the same record?
how to deal with transmission delays?
how to deal with liers?
solution: blockchain
there is no absolute guarantee;
simply, it is highly unlikely that a lie lasts for long time
it is settled in < 10 min
you may be confident after ~60 min
bitcoin & blockchain 21
linked blocks
dit
each block has a few transactions
each block contains the hash of the previous one (linked)
there is a starting block: The Genesis Block (hardcoded)
1 transaction (3.1.2009)
https://en.bitcoin.it/wiki/Genesis_block
bitcoin & blockchain 22
genesis: block #0
dit
https://blockchain.info/en/block/000000000019d6689c085ae16583
1e934ff763ae46a2a6c172b3f1b60a8ce26f
bitcoin & blockchain 23
blocks
dit
anyone may generate a block (it is called a miner)
collecting fresh transactions (in order to receive the fees)
getting a reward for building the block
and broadcasts the new block to be chained to the previous one
two or more miners may build a new block before simultaneously
(concurrency race) …
bitcoin & blockchain 24
merkle tree
dit
eficient algorithm O(log n) to build (and rebuild) a hash merging N
entries
n = sha256(sha256(n1, n2))
bitcoin & blockchain 25
SPV
dit
Simple Payment Verification
enables lighweight wallets (the most usual ones)
that only know the transactions affecting their addresses
transactons have to be verified on full nodes that do have all the
blocks
bitcoin & blockchain 26
consensus
dit
proof of work
a block is valid if its hash is above a given threshold
the miner tries, and tries, until a valid hash is fund
verification is simple and fast
generation is tuned to require 10 min(on average)
the threshold is revised reularly to adapt
there may be 1, 2, 3, … collisions, but as ther chain grows it is
more and more difficult that two chains remain feasible
after 6 blocks in a row, it is assumed that there is no change for ther
chain(s)
the winner means that we trust the longest chain
bitcoin & blockchain 27
proof of work
dit
find X such that
hash(X | transaction_list | previous_hash) < N
N is evaluated every 2016 blocks (~14 days)
bitcoin & blockchain 28
51% attack
dit
if one miner (or mining lobby) controls 51% os hash calculation
power, it may overtake the others and take control of the chain
consensus is no longer a distributed matter
https://learncryptography.com/cryptocurrency/51-attack
bitcoin & blockchain 29
index
dit
1. bitcoins
2. blockchain
bitcoin & blockchain 30
usefulness
dit
bitcoin is a coin without a central authority
that fact rises strong opinions, in favor, against
banks are looking carefully what does it mean
blockchain is a technology that provides a distributed ledger
without a central authority
the ledger is provably secure
problems of centralized solutions are over
it applies to many scenarios where an agreed ledger is needed
it requires connectivity
it requires to hold the complete history
Partition tolerance is
the ability of a distributed system to continue operating correctly
even in the presence of a network partition.
bitcoin & blockchain 31