Door: Begeleiding:
Tim van Pelt Gerard Tel
Bitcoin EEN D I G I TA LE MU NT EENHEID ALS A LT E R NAT IEF VO O R B E S TA A NDE MU NT EN
• Is Bitcoin functionerend en veilig alternatief voor bestaande munten?
Inhoud 1. Bitcoin kort door de bocht 2. Filosofie / economie achter Bitcoin 3. Werking van Bitcoin
4. Drempels op weg naar wijdverspreid gebruik 5. Conclusies onderzoek
Bitcoin… wat? • Een peer-to-peer geldsysteem: iedereen “doet mee” • Een “munt”: de bitcoin (BTC) • Transacties m.b.v. de software (client)
Waarom? • Lage tot geen transactiekosten • Filosofie spreekt je aan • Nieuwsgierig
Wat is geld eigenlijk?
Financiële crisis
Nieuwe ideeën
• Satoshi Nakamoto • 2009: Bitcoin in gebruik
Economische model
Economische model • Centrale autoriteit?
Economische model • Centrale autoriteit? Afwezig!
Economische model • Centrale autoriteit? Afwezig!
• Beperkte geldhoeveelheid: 21 miljoen bitcoins • In omloop gebracht door ‘miners’
Hoe bitcoins verkrijgen? • Diensten of goederen leveren voor bitcoins • Minen (vergeet het maar met gem. pc) • Kopen
Werking van Bitcoin • Transacties d.m.v. digitale handtekeningen • Miners die transacties verzamelen en in blokken bundelen • Publiek transactielogboek: de blokketen
Transactiemodel • Online publiek adres uitwisselen via SSL
Transactiemodel • Online publiek adres uitwisselen via https • Geld uitgeven m.b.v. vorige transactie • Transactie versturen met script
• Script kan alleen opgelost worden door één privésleutel
Transactiemodel • Eigenaar ondertekent de hash van: • vorige transactie + publiek sleutel nieuwe eigenaar
Transactiemodel • Hoe kan de betaalde persoon weten dat het geld niet eerder is uitgegeven?
Transactiemodel • Hoe kan de betaalde persoon weten dat het geld niet eerder is uitgegeven? • Publiek transactielogboek!
Transactie • Inputs en outputs • Ik heb 10 bitcoins (op adres A en B). • Ik wil 9 aan Dirk betalen (hij heeft adres Z)
• 1 terug naar mezelf (nieuw adres C) A: 8 BTC
Z: 9 BTC Transaction
B: 2 BTC
C: 1 BTC
Transactie • M.b.v. stack-based scripting taal (lijkt op Forth) • Geen loops / recursie
• Script controleert handtekening
Blok • Header en verzameling transacties
Blok: header Veld
Wat?
Version
Versie van het blok
hashPrevBlock
sha256(vorige blokheader)
hashMerkleRoot
sha256(alle transacties in dit blok)
Time
Timestamp in secondes
Bits
Huidige targethash
Nonce
32-bit nummer
Blok • Structuur: Merkle tree • dhash(a) = sha256(sha256(a))
d6=dhash(d4 concat d5)
d4=dhash(d1 concat d2)
d1=dhash(a)
d2=dhash(b)
d5=dhash(d3 concat d4)
d3=dhash(c)
d4=dhash(c)
Blok: Proof-of-Work • Miner probeert: Sha256(blok) < targethash
Blok: Proof-of-Work • Miner probeert: Sha256(blok) < targethash • Het kost rekenkracht / stroom!
Blok: Proof-of-Work • Miner probeert: Sha256(blok) < targethash • Het kost rekenkracht / stroom! • Gem. pc: 3 ∗ 108
𝐻 𝑠
• Gem. aantal hashes nodig: 7 ∗ 1016 • Duur: > 400 dagen
Blok: Proof-of-Work • Indien geldig, beloning! • = Incentive om het correct te doen • -> Rest van netwerk controleert • Netwerk (april 2013): 100,000 gigahashes / s
Blokketen • Aaneenschakeling blokken / Transactielogboek • Downloaden: >6GB • Forking: 2 versies
• “Moeilijkste” gaat door
Blok • Frauderen? >50% rekenkracht op hele netwerk nodig!
Adressen • Hash van publieke deel ECDSA sleutelpaar • RIPEMD-160(SHA-256(public key)) • Totaal: 2160 = 1,46 ∗ 1048 adressen
• Hashwaarden naar alfanumerieke strings volgens Base58Check encoding scheme
Adressen: voorbeeld • 16ActLWRPCCgL81P9ZHTUSugkCoJYob1bv
Adressen • Kans op botsing?
Adressen • Kans op botsing? • Pr 𝑏𝑜𝑡𝑠𝑖𝑛𝑔 =
1 2160
?
Adressen • Kans op botsing? • Pr 𝑏𝑜𝑡𝑠𝑖𝑛𝑔 = • Pr 𝑏𝑜𝑡𝑠𝑖𝑛𝑔 =
1 2160
?
1 2 𝑘 2 2160
• Wanneer? Na ruwweg 2160 = 280 adressen (Pr(botsing) is dan 0,5)
Portemonnee • Client of webdienst heeft portemonnee • Indien client: wallet.dat op je computer • Wallet.dat versleutelen en backups van maken!
Portemonnee • wallet.dat op je computer • wallet.dat versleutelen en backups van maken!
Portemonnee • Webdienst voorbeeld
Portemonnee • Portemonnee bij webdienst? Hmm…. • “Ars Technica: Bitcoins worth $228,000 stolen from customers of hacked Webhost” • Misschien toch maar zelf regelen
Prijzen • Vrij bepalen • Of directe verbinding met wisselkoers
Anonimiteit • Publieke sleutels verbergen identiteit
Anonimiteit • Publieke sleutels verbergen identiteit • D.m.v. linking transacties reduceren tot gebruikers • Externe informatie koppelen aan gebruikers
Drempels
Drempels • Geldsysteem veilig door cryptografie, zonder autoriteit… Staat ver af van mensen. • Inruilbaarheid • Stabiliteit • Sluiting wisseldiensten (door autoriteiten)
Drempels • Duurzaamheid
Drempels • Duurzaamheid • Stroomkosten: 1.000.000 𝑘𝑊𝑢 ∗ €0,20 ∗ 30 𝑑𝑎𝑔𝑒𝑛 = €6.000.000 per maand!
Conclusies • Snel en goedkoop transacties doen! Technisch prima.
Conclusies • Snel en goedkoop transacties doen! Technisch prima. • Zover bekend niet te kraken (of weet jij een backdoor in ECDSA/ SHA256 / RIPEMD160?) • Succes afhankelijk van vertrouwen in filosofie • Economen twijfelen aan stabiliteit en deflatoire model • Drempels voor “mainstream” gebruikers
Toekomstig onderzoek • Transacties verifiëren (zonder autoriteit) die minder belastend is voor milieu?
Vragen?