E-Book, Deutsch, 412 Seiten
Die Blockchain verstehen, Anwendungen entwickeln
E-Book, Deutsch, 412 Seiten
ISBN: 978-3-96010-171-0
Verlag: O'Reilly
Format: PDF
Kopierschutz: 1 - PDF Watermark
Bitcoin, die erste erfolgreiche, dezentrale Kryptowährung, steht erst am Anfang, hat aber bereits eine mehrere Milliarden schwere Industrie geschaffen. Diese Industrie steht jedem, der das nötige Wissen und die Leidenschaft mitbringt, offen. Und dieses Buch vermittelt Ihnen die erforderliche Wissensgrundlage.
Die zweite Auflage umfasst:
- eine ausführliche Einführung in Bitcoin und die ihr zugrundeliegende Blockchain – ideal für nichttechnische Leser, Investoren und Führungskräfte
- eine Erläuterung der technischen Grundlagen des Bitcoin und kryptografischer Währungen für Entwickler, Ingenieure sowie Softwareund Systemarchitekten
- Details zum dezentralen Bitcoin-Netzwerk, seiner Peer-to-Peer-Architektur, dem Transaktionszyklus und den Sicherheitsprinzipien
- neue Entwicklungen wie Segregated Witness, Zahlungskanäle und das Lightning Network
- einen tiefen Einblick in Blockchain-Anwendungen und wie man die Grundbausteine dieser Plattform in übergeordneten Anwendungen nutzen kann
- Anwenderberichte, Analogien, Beispiele und Codeschnipsel, die die technischen Schlüssel-Konzepte illustrieren
Weitere Infos & Material
1;Vorwort;15
2;Glossar;23
3;Kapitel 1: Einführung;33
3.1;Was ist Bitcoin?;33
3.2;Geschichte des Bitcoins;36
3.3;Bitcoin: Anwendungsfälle, Anwender und deren Geschichten;37
3.4;Erste Schritte;38
3.4.1;Wahl einer Bitcoin-Wallet;39
3.4.2;Schnelleinstieg;41
3.4.3;Ihr erster Bitcoin;43
3.4.4;Den aktuellen Bitcoin-Preis ermitteln;44
3.4.5;Bitcoin senden und empfangen;45
4;Kapitel 2: Wie Bitcoin funktioniert;47
4.1;Transaktionen, Blöcke, Mining und die Blockchain;47
4.1.1;Bitcoin-Übersicht;47
4.1.2;Eine Tasse Kaffee kaufen;48
4.2;Bitcoin-Transaktionen;50
4.2.1;Inputs und Outputs von Transaktionen;50
4.2.2;Transaktionsketten;51
4.2.3;Wechselgeld;52
4.2.4;Gängige Transaktionsformen;53
4.3;Eine Transaktion konstruieren;54
4.3.1;Die richtigen Inputs;55
4.3.2;Die Outputs erzeugen;56
4.3.3;Die Transaktion zum Kassenbuch hinzufügen;57
4.4;Bitcoin-Mining;58
4.5;Transaktionen in Blöcke einfügen;60
4.6;Die Transaktion einlösen;62
5;Kapitel 3: Bitcoin Core: die Referenzimplementierung;65
5.1;Bitcoin-Entwicklungsumgebung;66
5.2;Bitcoin Core aus dem Quellcode kompilieren;66
5.2.1;Wahl einer Bitcoin-Core-Release;67
5.2.2;Den Bitcoin-Core-Build konfigurieren;68
5.2.3;Die Bitcoin-Core-Executables erzeugen;70
5.3;Einen Bitcoin-Core-Knoten ausführen;71
5.3.1;Bitcoin Core zum ersten Mal ausführen;73
5.3.2;Den Bitcoin-Core-Knoten konfigurieren;73
5.4;Bitcoin Core Application Programming Interface (API);77
5.4.1;Informationen zum Status des Bitcoin-Core-Clients abrufen;78
5.4.2;Transaktionen untersuchen und decodieren;79
5.4.3;Blöcke untersuchen;81
5.4.4;Die Bitcoin Core API nutzen;82
5.5;Alternative Clients, Bibliotheken und Toolkits;85
5.5.1;C/C++;85
5.5.2;JavaScript;86
5.5.3;Java;86
5.5.4;Python;86
5.5.5;Ruby;86
5.5.6;Go;86
5.5.7;Rust;86
5.5.8;C#;87
5.5.9;Objective-C;87
6;Kapitel 4: Schlüssel und Adressen;89
6.1;Einführung;89
6.1.1;Public-Key-Kryptografie und Kryptowährungen;90
6.1.2;Private und öffentliche Schlüssel;91
6.1.3;Private Schlüssel;92
6.1.4;Öffentliche Schlüssel;94
6.1.5;Kryptografie mit elliptischen Kurven;95
6.1.6;Einen öffentlichen Schlüssel generieren;97
6.2;Bitcoin-Adressen;99
6.2.1;Base58- und Base58Check-Codierung;101
6.2.2;Schlüsselformate;105
6.3;Schlüssel und Adressen in Python implementieren;112
6.4;Fortgeschrittene Schlüssel und Adressen;115
6.4.1;Verschlüsselte private Adressen (Encrypted Private Keys, BIP-38);115
6.4.2;Pay-to-Script-Hash-(P2SH-)Adressen und Multisig-Adressen;116
6.4.3;Vanity-Adressen;118
6.4.4;Paper-Wallets;123
7;Kapitel 5: Wallets;127
7.1;Wallet-Technologie in der Übersicht;127
7.1.1;Nichtdeterministische (zufallsbasierte) Wallets;128
7.1.2;Deterministische (Seed-basierte) Wallets;129
7.1.3;HD-Wallets (BIP-32/BIP-44);130
7.1.4;Seeds und mnemonische Codes (BIP-39);131
7.1.5;Die Wallet-Best-Practices;131
7.1.6;Eine Bitcoin-Wallet verwenden;132
7.2;Details der Wallet-Technologie;133
7.2.1;Mnemonische Codewörter (BIP-39);134
7.2.2;Eine HD-Wallet aus dem Seed-Wert erzeugen;140
7.2.3;Einen erweiterten öffentlichen Schlüssel in einem Webshop nutzen;145
8;Kapitel 6: Transaktionen;151
8.1;Einführung;151
8.2;Transaktionen im Detail;151
8.2.1;Transaktionen – hinter den Kulissen;152
8.3;Transaktions-Outputs und -Inputs;153
8.3.1;Transaktions-Outputs;155
8.3.2;Transaktions-Inputs;157
8.3.3;Transaktionsgebühren (Fees);160
8.3.4;Gebühren in Transaktionen einfügen;163
8.4;Transaktionsskripte und Skriptsprache;164
8.4.1;Turing-Unvollständigkeit;165
8.4.2;Zustandslose Verifikation;166
8.4.3;Konstruktion von Skripten (Lock + Unlock);166
8.4.4;Pay-to-Public-Key-Hash (P2PKH);170
8.5;Digitale Signaturen (ECDSA);172
8.5.1;Wie digitale Signaturen funktionieren;173
8.5.2;Die Signatur verifizieren;175
8.5.3;Arten von Signatur-Hashes (SIGHASH);175
8.5.4;Die Mathematik hinter ECDSA;177
8.5.5;Die Bedeutung der Zufälligkeit für Signaturen;179
8.6;Bitcoin-Adressen, Guthaben und andere Abstraktionen;179
9;Kapitel 7: Transaktionen und Skripting für Fortgeschrittene;183
9.1;Einführung;183
9.2;Multisignatur;183
9.3;Pay-to-Script-Hash (P2SH);185
9.3.1;P2SH-Adressen;187
9.3.2;Vorteile von P2SH;188
9.3.3;Redeem-Skript und Validierung;188
9.4;Data Recording Output (RETURN);189
9.5;Timelocks;191
9.5.1;Transaktions-Locktime (nLocktime);191
9.5.2;Check Lock Time Verify (CLTV);192
9.5.3;Relative Timelocks;194
9.5.4;Relative Timelocks mit nSequence;195
9.5.5;Relative Timelocks mit CSV;196
9.5.6;Median-Time-Past;197
9.5.7;Timelock-Schutz gegen Fee-Sniping;198
9.6;Skripte mit Ablaufsteuerung (Bedingungsklauseln);198
9.6.1;Bedingungsklauseln mit VERIFY-Opcodes;199
9.6.2;Die Ablaufsteuerung in Skripten nutzen;200
9.7;Komplexes Skriptbeispiel;202
10;Kapitel 8: Das Bitcoin-Netzwerk;205
10.1;Peer-to-Peer-Netzwerkarchitektur;205
10.2;Arten und Rollen von Nodes;206
10.3;Das erweiterte Bitcoin-Netzwerk;207
10.4;Bitcoin-Relay-Netzwerke;210
10.5;Netzwerkerkundung;210
10.6;Full Nodes;214
10.7;»Inventar« austauschen;215
10.8;SPV-Nodes (Simplified Payment Verification);216
10.9;Bloomfilter;219
10.9.1;Wie Bloomfilter funktionieren;220
10.10;Wie SPV-Nodes Bloomfilter nutzen;224
10.11;SPV-Nodes und Privatsphäre;225
10.12;Verschlüsselte und authentifizierte Verbindungen;225
10.12.1;Tor-Transport;225
10.12.2;Peer-to-Peer-Authentifizierung und -Verschlüsselung;226
10.13;Transaktionspools;227
11;Kapitel 9: Die Blockchain;229
11.1;Einführung;229
11.2;Struktur eines Blocks;230
11.3;Block-Header;231
11.4;Blockkennungen: Block-Header und Blockhöhe;231
11.5;Der Genesis-Block;232
11.6;Blöcke in der Blockchain verlinken;234
11.7;Merkle Trees (Hashbäume);234
11.8;Merkle Trees und Simplified Payment Verification (SPV);240
11.9;Bitcoins Test-Blockchains;241
11.9.1;Testnet – Bitcoins Testspielwiese;241
11.9.2;Segnet – das Segregated-Witness-Testnet;243
11.9.3;Regtest – die lokale Blockchain;243
11.10;Test-Blockchains für die Entwicklung nutzen;244
12;Kapitel 10: Mining und Konsens;247
12.1;Einführung;247
12.1.1;Bitcoin-Ökonomie und Währungsgenerierung;249
12.2;Dezentralisierter Konsens;251
12.3;Unabhängige Verifikation von Transaktionen;252
12.4;Mining-Nodes;254
12.5;Transaktionen in Blöcken zusammenfassen;254
12.5.1;Die Coinbase-Transaktion;256
12.5.2;Coinbase-Belohnungen und Gebühren;257
12.5.3;Struktur der Coinbase-Transaktion;258
12.5.4;Coinbase-Daten;259
12.6;Die Block-Header aufbauen;261
12.7;Mining des Blocks;262
12.7.1;Proof-of-Work-Algorithmus;263
12.7.2;Target-Darstellung;269
12.7.3;Retargeting zur Anpassung der Difficulty;270
12.8;Den Block erfolgreich schürfen;272
12.9;Einen neuen Block validieren;272
12.10;Ketten von Blöcken zusammensetzen und auswählen;273
12.10.1;Blockchain-Forks;275
12.11;Mining und der Hashing-Wettlauf;282
12.11.1;Die Lösung mit der Extra-Nonce;284
12.11.2;Mining-Pools;285
12.12;Konsensangriffe;288
12.13;Die Konsensregeln ändern;292
12.13.1;Hard Forks;292
12.13.2;Hard Forks: Software, Netzwerk, Mining und die Chain;293
12.13.3;Divergierende Miner und Difficulty;295
12.13.4;Umstrittene Hard Forks;296
12.13.5;Soft Forks;296
12.13.6;Kritik an Soft Forks;298
12.14;Soft-Fork-Signalisierung mittels Blockversion;298
12.14.1;BIP-34-Signalisierung und -Aktivierung;299
12.14.2;BIP-9-Signalisierung und -Aktivierung;300
12.15;Entwicklung von Konsenssoftware;302
13;Kapitel 11: Bitcoins und Sicherheit;305
13.1;Sicherheitsgrundsätze;305
13.1.1;Bitcoin-Systeme sicher entwickeln;306
13.1.2;Die Wurzel des Vertrauens;307
13.2;Best Practices für den Nutzer;308
13.2.1;Physische Speicherung von Bitcoins;309
13.2.2;Hardware-Wallets;309
13.2.3;Risiken abwägen;310
13.2.4;Risiken verteilen;310
13.2.5;Multisignaturen und Kontrolle;310
13.2.6;Überlebensfähigkeit;310
13.3;Fazit;311
14;Kapitel 12: Blockchain-Anwendungen;313
14.1;Einführung;313
14.2;Grundbausteine (Primitive);314
14.3;Anwendungen aus Grundbausteinen;316
14.4;Colored Coins;316
14.4.1;Colored Coins nutzen;317
14.4.2;Colored Coins ausstellen;318
14.4.3;Colored-Coins-Transaktionen;318
14.5;Counterparty;321
14.6;Zahlungs- und Zustandskanäle;322
14.6.1;Zustandskanäle – grundlegende Konzepte und Terminologie;323
14.6.2;Einfaches Zahlungskanalbeispiel;325
14.6.3;Vertrauensfreie Kanäle aufbauen;328
14.6.4;Asymmetrisch widerrufliche Commitments;331
14.6.5;Hash Time Lock Contracts (HTLC);335
14.7;Geroutete Zahlungskanäle (Lightning Network);336
14.7.1;Einfaches Lightning-Network-Beispiel;337
14.7.2;Lightning Network – Transport und Routing;340
14.7.3;Vorteile des Lightning Network;342
14.8;Fazit;343
15;Anhang A: Das Bitcoin-Whitepaper von Satoshi Nakamoto;345
16;Anhang B: Operatoren, Konstanten und Symbole der Transaktions-Skriptsprache;357
17;Anhang C: Bitcoin Improvement Proposals;363
18;Anhang D: Segregated Witness;371
19;Anhang E: Bitcore;385
20;Anhang F: pycoin, ku und tx;389
21;Anhang G: Bitcoin-Explorer-(bx-)Befehle;397
22;Index;401
23;Über den Autor;411
24;Kolophon;412