Bitcoin technische Grundlagen
Das Geld für das Internet
Stephan Oeste /
@emzy
Fragen Vorweg
Wer hat schon von Bitcoin gehört?
Wer besitzt schon Bitcoins?
Wer weiß schon wie Bitcoin funktioniert?
Was ist Bitcoin
Bitcoin ist ein Protokoll
Dezentral ohne Herausgeber oder Hersteller
Opensource (MIT License)
Senden von Geld überallhin in beliebiger Höhe
Nicht Umkehrbar oder Aufhaltbar
Herausgabe mathematisch festgelegt. Max. 21 Milionen bis 2140
Es basiert auf öffentlicher Buchführung
Blockchain
Nicht Anonym sondern Pseudonym
Die Miner sichern das Netz und werden mit Bitcoins belohnt
Die Blockchain
Aufgabe
Die Reihenfolge der Transaktionen festlegen
Verhindern von
double-spends
Umsetzung
Globale Liste aller Kontostände, die
Blockchain
Die
Blockchain
besteht aus einzelnen
Blocks
in denen
Transaktionen
stehen
Jeder
Block
enthält den Hash des vorherigen Block
Damit ist die Reihenfolge vorgegeben und man kann keinen
Block
einfügen
Die Blockchain
Mining
Es ist Rechenleistung nötig um einen Block zu Signieren und in die
Blockchain
zu hängen
Das sichert die
Blockchain
gegen spätere Änderungen
Anreiz für das Mining sind Bitcoins die man für das Finden eines
Blocks
bekommt
Blocks
mussen eine gewisse
Difficulty
erfüllen.
Diese wird automatisch angepasst, damit alle 10 Minuten ein
Block
gefunden wird
Difficulty
Gesamtmenge Bitcoins
Mining Block Reward
wird alle 210.000 Blöcken halbiert, ca. alle 4 Jahre
Blockchain Demo
anders.com Blockchain Demo
Bob will Alice Bitcoins senden
Alice installiert sich eine Wallet-Software
Diese erzeugt einen
privaten Schlüssel
,
öffentlichen Schlüssel
und die
Adresse
Bob sendet die Bitcoins an die
Adresse
von Alice
Alice installiert eine Wallet
Bitcoin-core
Electrum (Python)
Breadwallet (iOS)
Mycelium (Android)
Schlüssel und Adressen
Mnemonic Code Converter
Privater Schlüssel
Es wird ein zufälliger 256 Bit
privaten Schlüssel
generiert
HEX: e3b0c44298fc1c149afbf4c8996fb9242...
Öffentlicher Schlüssel
Aus dem privaten Schlüssel wird der
öffentliche Schlüssel
berechnet
öffentlicher Schlüssel = privater Schlüssel * Generatorpunkt
(k = K * G)
HEX: 03a34b99f22c790c4e36b2b3c2c35a36d...
Bitcoin Adresse
daraus wird die
Bitcoin Adresse
berechnet
Hashing des öffentlichen Schlüssel mit SHA256 und RIPEMD160
(A = RIPEMD160(SHA256(K))
HEX: 9a1c78a507689f6f54b847ad1cef1e614ee23f1e
Base58Check Bitcoin Adresse
zum Darstellen wird noch Base58Check verwendet
1F3sAm6ZtwLAUnj7d38pGFxtP3RVEvtsbV
Bitcoin Adresse
Inhalt einer Transaktion
Input(s)
enthält den
proof of ownership
eines unspend Outputs einer alten Transaktion mit der digitale Signatur des
privaten Schlüssels
von Bob
Output(s)
ein
Script
das nur mit dem zugehörigen
privaten Schlüssel
der Empfängeradresse gelöst werden kann.
Betrag
z.B. 0,02 BTC
Weitere Inputs und Outputs können enthalten sein
Gebühr
z.B. 0,0001 BTC
Eine Beispiel-Transaktion
blockchain.info
Bob sendet Alice Bitcoins
Bob kopiert die Adresse per Copy+Paste oder scannt den QR-Code
Bob klickt Bitcoins-Senden in seiner Wallet
Alice und Bob warten, dass die Transaktion Bestätigungen erhält
das die Transaktion in die
Blockchain
aufgenommen wird
Bobs Wallet sendet die Transaktion in das Bitcoin P2P Netz
Die fertige
Transaktion
wird im P2P Netz verteilt
Die Wallet sendet sie an alle aktuell verbundenen P2P Nodes
Alice sieht eine
Transaktion
ohne Bestätigungen
Die Wallet hat die
Transaktion
vom P2P Netz empfangen
Ein Miner sammelt die
Transaktion
ein und packt sie in einen
Block
Er sendet den gefunden
Block
über P2P Netz
Andere P2P-Clients kontrollieren den Block und bauen ihn in ihre Kopie der
Blockchain
ein
Alice sieht das die
Transaktion
ihre erste Bestätigung erhält
Links
Original PDF von Satoshi Nakamoto
https://bitcoin.org/bitcoin.pdf
Buch von Andreas M. Antonopoulos
https://github.com/aantonop/bitcoinbook
Neue offizelle Dokumentation
https://bitcoin.org/en/developer-guide
https://www.bitaddress.org/