Digitaal Vertrouwen - de werking van Bitcoin en de Blockchain uitgelegd door Arnoud Warmerdam -...

Post on 14-Apr-2017

391 views 0 download

Transcript of Digitaal Vertrouwen - de werking van Bitcoin en de Blockchain uitgelegd door Arnoud Warmerdam -...

Digitaal vertrouwenArnoud Warmerdam

aw@warpnet.nl

Teamleden

Alternatieve serie

Alternatieve cryptocurrency

begin jaren ‘80

Lupo & Cannell

script/formule

Bedenkers

2008

“Satoshi Nakamoto”

whitepaper, protocol en

software

“Mexican Slayride” (part 1)

23 januari 1983

Pilot episode

3 januari 2009:

block 0

9 januari 2009:

Bitcoin software versie 0.1 en

block 1

Genesis block

1/week 1/10 min

Keten

#1

#2

#3

#4

#5

0

1

2

3

4

Lengte serie

1983-1987

98 episodes

2009-????

351.020 blocks

31,5 GigaByte

14.028.150 Bitcoins

Structuur episode

THE END

INTRO

Structuur block

Merkle root

time

nonceversion

previous block di culty target

transactie

coinbase

SHA-256

SHA-256

transactie

transactie

SHA-256

transactie

transactie

SHA-256

SHA-256

transactie

transactie

SHA-256

Creatie eerste Bitcoins

transactie

Coinbase: 50 Face: 50

50 btc

uituitin

Block 0

Eerste transactie tussen gebruikers

transactie

inFace: 50 Hannibal: 10

10 btc

uituit

uit Face: 40

Block 1

Netwerk

Node types

Wallet node

Network node

Full Blockchain node

Mining node

Simpel netwerk

Gespecialiseerd netwerk

transactie

in uituit

Merkle root

time

nonceversion

previous block di�culty target

transactie

coinbase

SHA-256

SHA-256

transactie

transactie

SHA-256

transactie

transactie

SHA-256

SHA-256

transactie

transactie

SHA-256

X

Nodes

Mining fee

transactie

inHannibal: 10

Hannibal: 5,9999

4 btc

uituit

uit

Murdock: 4

fee: 0,0001 (coinbase)uit

Block 2

Mining

Merkle root

time

nonceversion

previous block di culty target

transactie

coinbase

SHA-256

SHA-256

transactie

transactie

SHA-256

transactie

transactie

SHA-256

SHA-256

transactie

transactie

SHA-256

Hashing

Hashing

origineel hash

- makkelijk te berekenen/valideren

Eigenschappen hash

- makkelijk te berekenen/valideren

- onmogelijk terug te rekenen

Eigenschappen hash

- makkelijk te berekenen/valideren

- onmogelijk terug te rekenen

- zelfde input, zelfde output

Eigenschappen hash

- makkelijk te berekenen/valideren

- onmogelijk terug te rekenen

- zelfde input, zelfde output

- output altijd even lang

Eigenschappen hash

- makkelijk te berekenen/valideren

- onmogelijk terug te rekenen

- zelfde input, zelfde output

- output altijd even lang

- effectief uniek

Eigenschappen hash

- makkelijk te berekenen/valideren

- onmogelijk terug te rekenen

- zelfde input, zelfde output

- output altijd even lang

- effectief uniek

- output volledig onvoorspelbaar

Eigenschappen hash

Hashing (SHA256)

text hash

“NBA test” fd23c3a4b41c13f2 55c780c12bc6e5dd 3a240bc141809f71 113b50fb806faa32

“NBA Test” 55cae5b33afc239f 4df9c70a821ec097 fa2868ddd428538e 267fef02610f2dcb

Mining

Merkle root

time

nonceversion

previous block di culty target

transactie

coinbase

SHA-256

SHA-256

transactie

transactie

SHA-256

transactie

transactie

SHA-256

SHA-256

transactie

transactie

SHA-256

Nonces

text hash kans 1 op

NBA 12 --> 00b53718e3c95111 256 e4c28093ee890068 665a634967e77a35 2cfbac7891c45c17

NBA 2.960 --> 0006ea7626740791 4.096

NBA 390.904 --> 00003c6d59f12e85 65.536

NBA 1.331.724 --> 0000043fd0302f60 1.048.576

NBA 1.474.606 --> 000000a43c64cc41 16.777.216

Proof of work

Difficulty target

Zon: 2197 counts/jaar

Thermodynamica

Uitbetaling mining fee

transactie

inCoinbase: 50,0001 Face: 50,0001

50,0001 btc

uituit

Block 2

- start: 50 BTC / block

Mining opbrengsten

- start: 50 BTC / block

- halveert elke 210.000 blocks

Mining opbrengsten

- start: 50 BTC / block

- halveert elke 210.000 blocks

- huidig: 25 BTC / block

Mining opbrengsten

- start: 50 BTC / block

- halveert elke 210.000 blocks

- huidig: 25 BTC / block

- huidige koers: € 234,-

Mining opbrengsten

Opbrengsten per block

25 x € 234,-

€ 5.850,-

COMES TOGETHER

I LOVE IT WHENa Block

Combineren inputs

transactie

in

in

Face: 40 B.A.: 75

75 btc

uituit

uitFace: 50,0001 Face: 15

Block 3

fee: 0,0001 (coinbase)uit

Block explorer

50 40

75

15

10

coinbase

0,0001 coinbase

50,0001

(90,0001)

+0,0001

block 0coinbase

coinbase

block 1 block 2

block 3

5,99994

Combineren inputs

transactie

in

in

Face: 40 B.A.: 75

75 btc

uituit

uitFace: 50,0001 Face: 15

Block 3

fee: 0,0001 (coinbase)uit

Wallet

wallet

Deterministische wallet

deterministische wallet

Private keys:

Absolute geheimhouding

Private keys:

1. Een private key is een geheim dat nooit dient te worden prijsgegeven aan derden.

Absolute geheimhouding

Private keys:

1. Een private key is een geheim dat nooit dient te worden prijsgegeven aan derden.

2. Op basis van de private key wordt een ‘public address’ berekend.

Absolute geheimhouding

Private keys:

1. Een private key is een geheim dat nooit dient te worden prijsgegeven aan derden.

2. Op basis van de private key wordt een ‘public address’ berekend.

3. Uitsluitend de bezitter van de private key kan berichten (zoals Bitcoin transacties) signeren voor dat public address.

Absolute geheimhouding

Private key

Private key

Private key

1 1 1 1 1 0 1 00 0 1 0 0 1 0 11 1 0 0 1 1 0 01 1 1 1 0 1 0 00 0 0 1 1 0 0 11 0 1 0 0 1 1 01 1 1 0 1 0 1 00 1 1 1 1 0 1 1

1 0 0 1 1 1 1 11 1 0 1 0 1 1 01 0 0 0 1 0 1 00 0 0 0 1 0 0 01 1 0 1 1 0 0 01 0 1 0 0 1 0 11 1 0 1 0 0 0 10 0 1 1 0 1 1 0

0 1 1 0 0 0 1 11 0 1 0 1 0 1 10 1 1 1 1 1 0 00 0 1 1 0 0 1 00 1 1 0 1 0 1 00 1 0 0 0 1 0 00 1 0 1 0 0 1 00 1 0 0 1 0 0 0

0 0 1 1 0 1 1 10 1 0 0 0 1 1 11 1 1 1 0 1 1 11 1 0 1 0 0 0 01 1 1 1 0 1 0 10 0 1 1 1 1 0 10 1 0 0 1 1 0 01 0 1 0 0 1 0 1

Private key: binair formaat

1 1 1 1 1 0 1 00 0 1 0 0 1 0 11 1 0 0 1 1 0 01 1 1 1 0 1 0 00 0 0 1 1 0 0 11 0 1 0 0 1 1 01 1 1 0 1 0 1 00 1 1 1 1 0 1 1

1 0 0 1 1 1 1 11 1 0 1 0 1 1 01 0 0 0 1 0 1 00 0 0 0 1 0 0 01 1 0 1 1 0 0 01 0 1 0 0 1 0 11 1 0 1 0 0 0 10 0 1 1 0 1 1 0

0 1 1 0 0 0 1 11 0 1 0 1 0 1 10 1 1 1 1 1 0 00 0 1 1 0 0 1 00 1 1 0 1 0 1 00 1 0 0 0 1 0 00 1 0 1 0 0 1 00 1 0 0 1 0 0 0

0 0 1 1 0 1 1 10 1 0 0 0 1 1 11 1 1 1 0 1 1 11 1 0 1 0 0 0 01 1 1 1 0 1 0 10 0 1 1 1 1 0 10 1 0 0 1 1 0 01 0 1 0 0 1 0 1

Private key: hexadecimaal

1 1 1 1 1 0 1 00 0 1 0 0 1 0 11 1 0 0 1 1 0 01 1 1 1 0 1 0 00 0 0 1 1 0 0 11 0 1 0 0 1 1 01 1 1 0 1 0 1 00 1 1 1 1 0 1 1

1 0 0 1 1 1 1 11 1 0 1 0 1 1 01 0 0 0 1 0 1 00 0 0 0 1 0 0 01 1 0 1 1 0 0 01 0 1 0 0 1 0 11 1 0 1 0 0 0 10 0 1 1 0 1 1 0

0 1 1 0 0 0 1 11 0 1 0 1 0 1 10 1 1 1 1 1 0 00 0 1 1 0 0 1 00 1 1 0 1 0 1 00 1 0 0 0 1 0 00 1 0 1 0 0 1 00 1 0 0 1 0 0 0

0 0 1 1 0 1 1 10 1 0 0 0 1 1 11 1 1 1 0 1 1 11 1 0 1 0 0 0 01 1 1 1 0 1 0 10 0 1 1 1 1 0 10 1 0 0 1 1 0 01 0 1 0 0 1 0 1

F A2 5C CF 41 9A 6E A7 B

9 FD 68 A0 8D 8A 5D 13 6

6 3A B7 C3 26 A4 45 24 8

3 74 7F 7D 0F 53 D4 CA 5

FA25CCF49FD68A08

19A6EA7BD8A5D136

3747F7D063AB7C32

F53D4CA56A445248

Private key: hexadecimaal

F A2 5C CF 41 9A 6E A7 B

9 FD 68 A0 8D 8A 5D 13 6

6 3A B7 C3 26 A4 45 24 8

3 74 7F 7D 0F 53 D4 CA 5

Decimaal:113.145.000.024.396.601.903.642.215.847.186.050.526.428.259.473.235.057.017.621.237.640.478.262.055.496

Compressed WIF formaat:5KiTGUqw6rkGhc3FsqZY7fJy1W6Mrtx3jciPZg1u99vZH8Avfno

Compressed WIF als QR-code:

Private key: decimaal en WIF, QR-code

Trapdoor

Trapdoor algoritmes

origineel

afgeleide

origineel

afgeleide

Elliptic Curve Digital Signature Algorithm

y2 mod p = (x3+7) mod p

Elliptic Curve Digital Signature Algorithm

y2 mod p = (x3+7) mod pECDSA:- gebaseerd op coördinaten en afstanden op een elliptische curve binnen een extreem groot vlak- de private key is een afstand- de public key is de coördinaat op die afstand (vanaf het beginpunt gedefiniëerd in ‘secp256k1’)- alleen optellen en vermenigvuldigen mogelijk- hierdoor kun je ‘vooruit’, maar niet ‘terug’- alleen mbv de private key kun je een coördinaat kiezen die een relatie legt tussen een message(hash) en de public key

Public address (‘bankrekeningnummer’)

publickey

privatekey

publicaddress…

publickey

privatekey

publicaddress…

ECDSA SHA256 RIPEMD160

Berichten (transacties) signeren

messageprivatekey

privatekey

signatureNB:Versimpeldeomschrijving,technisch nietcorrect!

+

message publickey

publickey

signature +

messagesignature ++

Is Bitcoin veilig?

Digitaal vertrouwen

Is Bitcoin veilig?

- met ‘brute kracht’ private key raden is ondoenlijk

Digitaal vertrouwen

Is Bitcoin veilig?

- met ‘brute kracht’ private key raden is ondoenlijk

- quantum computers zouden ECDSA kunnen breken

Digitaal vertrouwen

Is Bitcoin veilig?

- met ‘brute kracht’ private key raden is ondoenlijk

- quantum computers zouden ECDSA kunnen breken

- er zijn alternatieve algoritmes (bijv. Lamport)

Digitaal vertrouwen

Is Bitcoin veilig?

- met ‘brute kracht’ private key raden is ondoenlijk

- quantum computers zouden ECDSA kunnen breken

- er zijn alternatieve algoritmes (bijv. Lamport)

- Bitcoin protocol staat vervangen algoritmes toe

Digitaal vertrouwen

Digitaal vertrouwen

Conclusie:

- op dit moment veilig

- Bitcoin kan zich in de toekomst relatief makkelijk aanpassen

- reputatie

- historie

- contracten

- wetten en regels

- arbitrage

- sancties

Klassiek vertrouwen

Bitcoin: digitaal vertrouwen

- regels zijn gevat in algoritmes

- geen arbitrage

- volledige transparantie

- absolute geheimhouding

- combinatie geheimhouding en transparantie

- decentraal netwerk

- consensus dmv cryptografisch bewijs

Marktkapitalisatie Bitcoin:

€ 3.259.666.455,-(op 6 april 2015)

Digitaal vertrouwen

Digitaal vertrouwen!