Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Bestseller in 3. Auflage: Die verständliche technische Einführung für Entwickler und Interessierte - Andreas M. Antonopoulos ist einer der weltweit führenden Bitcoin- und Open-Blockchain-Experten. - Die Grundlagen von Blockchain und Bitcoin inklusive des dezentralen Bitcoin-Netzwerks, der Peer-to-Peer-Architektur, des Transaktionslebenszyklus und der Sicherheitsverfahren umfassend erklärt. - Deckt neue Entwicklungen wie Taproot, Tapscript, Schnorr-Signaturen und das Lightning Netzwerk ab und bietet wertvolles Know-how für die Developer-Praxis. Bitcoin und Blockchain haben die Finanzwelt revolutioniert und eine milliardenschwere globale Wirtschaft entstehen lassen. Dieses Handbuch ist Ihr Wegweiser durch die zunächst komplexe Welt von Bitcoin. Es vermittelt Ihnen das technische Wissen, das Sie benötigen, um aktiv am Internet des Geldes teilzuhaben. Ganz gleich, ob Sie die nächste Killer-App entwickeln, in ein Start-up investieren oder einfach nur neugierig auf die Technologie sind: Die überarbeitete und erweiterte Auflage liefert Ihnen die Grundlagen für den praktischen Einstieg. Die dritte Auflage beinhaltet: - Eine umfassende Einführung in Bitcoin und die zugrundeliegende Blockchain – ideal für eher nichttechnisch ausgerichtete Nutzer, Investoren und Führungskräfte - Eine Erklärung der technischen Grundlagen von Bitcoin und der Kryptowährung für Entwickler, Engineers, Software- und Systemarchitekten - Details des dezentralen Bitcoin-Netzwerks, der Peer-to-Peer-Architektur, des Transaktionslebenszyklus und der Sicherheitsmechanismen - Neue Entwicklungen wie Taproot, Tapscript, Schnorr-Signaturen und das Lightning-Netzwerk - Einen tiefen Einblick in Bitcoin-Anwendungen, einschließlich der Frage, wie man die Bausteine dieser Plattform zu leistungsstarken neuen Tools kombiniert - User Stories, Beispiele und Codeschnipsel zur Veranschaulichung wichtiger technischer Konzepte
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 616
Veröffentlichungsjahr: 2024
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Copyright und Urheberrechte:Die durch die dpunkt.verlag GmbH vertriebenen digitalen Inhalte sind urheberrechtlich geschützt. Der Nutzer verpflichtet sich, die Urheberrechte anzuerkennen und einzuhalten. Es werden keine Urheber-, Nutzungs- und sonstigen Schutzrechte an den Inhalten auf den Nutzer übertragen. Der Nutzer ist nur berechtigt, den abgerufenen Inhalt zu eigenen Zwecken zu nutzen. Er ist nicht berechtigt, den Inhalt im Internet, in Intranets, in Extranets oder sonst wie Dritten zur Verwertung zur Verfügung zu stellen. Eine öffentliche Wiedergabe oder sonstige Weiterveröffentlichung und eine gewerbliche Vervielfältigung der Inhalte wird ausdrücklich ausgeschlossen. Der Nutzer darf Urheberrechtsvermerke, Markenzeichen und andere Rechtsvorbehalte im abgerufenen Inhalt nicht entfernen.
Bitcoin – Grundlagen und Programmierung ist sehr nützlich für jeden, der die Technologie von Bitcoin und die Konzepte des Protokolls verstehen will oder muss.
– René Pickhardt, Bitcoin Lightning Network Developer
Tauchen Sie in die faszinierende Welt von Bitcoin ein – mit Bitcoin – Grundlagen und Programmierung, dem definitiven Leitfaden, der Sie durch die Besonderheiten dieser digitalen Währung navigiert. Ganz gleich, ob Sie Entwickler, Investor oder einfach nur neugierig auf die Zukunft des Geldes sind, dieses umfassende Buch dient Ihnen als Wegweiser, der Ihnen wesentliches Wissen vermittelt und Sie in die Lage versetzt, sicher an der Ära des Internets des Geldes teilzunehmen.
– Jorge Lesmes, Senior Director bei NTT DATA
Fast ein Jahrzehnt nach der erstmaligen Veröffentlichung bestätigt die dritte Auflage von Bitcoin – Grundlagen und Programmierung, dass es die erste Anlaufstelle für technische Bitcoin-Lerninhalte ist. Kein anderes Buch ist so umfassend und aktuell.
– Olaoluwa Osuntokun, CTO bei Lightning Labs
Ein umfassender Überblick darüber, was unter der Haube von Bitcoin vor sich geht und wie die Dinge zusammenpassen.
– Mark »Murch« Erhardt, Bitcoin Engineer bei Chaincode Labs
3. Auflage
Die Blockchain verstehen,Bitcoin-Anwendungen entwickeln
Andreas M. Antonopoulos,David A. Harding
Deutsche Übersetzung vonPeter Klicman
Andreas M. Antonopoulos, David A. Harding
Lektorat: Ariane Hesse
Übersetzung: Peter Klicman
Korrektorat: Sibylle Feldmann, www.richtiger-text.de
Satz: III-satz, www.drei-satz.de
Herstellung: Stefanie Weidner
Umschlaggestaltung: Karen Montgomery, Michael Oréal, www.oreal.de
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
ISBN:
978-3-96009-247-6
978-3-96010-883-2
ePub
978-3-96010-884-9
3. Auflage 2025
Translation Copyright für die deutschsprachige Ausgabe © 2025 dpunkt.verlag GmbH
Wieblinger Weg 17
69123 Heidelberg
Authorized German translation of the English edition of Mastering Bitcoin 3E ISBN 9781098150099 ©2024 David Harding. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.
Dieses Buch erscheint in Kooperation mit O’Reilly Media, Inc. unter dem Imprint »O’REILLY«.O’REILLY ist ein Markenzeichen und eine eingetragene Marke von O’Reilly Media, Inc. und wird mit Einwilligung des Eigentümers verwendet.
Schreiben Sie uns:
Falls Sie Anregungen, Wünsche und Kommentare haben, lassen Sie es uns wissen: [email protected].
Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.
Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.
Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autoren noch Übersetzer noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buchs stehen.
Vorwort
1Einführung
Geschichte des Bitcoins
Erste Schritte
Wahl einer Bitcoin-Wallet
Schnelleinstieg
Wiederherstellungscodes (Recovery Codes)
Bitcoin-Adressen
Bitcoin empfangen
Ihr erster Bitcoin
Den aktuellen Bitcoin-Preis ermitteln
Bitcoin senden und empfangen
2Wie Bitcoin funktioniert
Bitcoin-Übersicht
Kaufen im Onlineshop
Bitcoin-Transaktionen
Inputs und Outputs von Transaktionen
Transaktionsketten
Wechselgeld
Coin-Auswahl
Gängige Transaktionsformen
Eine Transaktion konstruieren
Die richtigen Inputs
Die Outputs erzeugen
Die Transaktion zur Blockchain hinzufügen
Bitcoin Mining
Die Transaktion einlösen
3Bitcoin Core: die Referenzimplementierung
Von Bitcoin zu Bitcoin Core
Bitcoin-Entwicklungsumgebung
Bitcoin Core aus dem Quellcode kompilieren
Wahl einer Bitcoin-Core-Release
Den Bitcoin-Core-Build konfigurieren
Die Bitcoin-Core-Executables erzeugen
Eine Bitcoin-Core-Node betreiben
Den Bitcoin-Core-Node konfigurieren
Bitcoin-Core-API
Informationen zum Status von Bitcoin Core erhalten
Transaktionen untersuchen und decodieren
Blöcke untersuchen
Die Bitcoin Core API nutzen
Alternative Clients, Bibliotheken und Toolkits
C/C++
JavaScript
Java
Python
Go
Rust
Scala
C#
4Schlüssel und Adressen
Public-Key-Kryptografie
Private Schlüssel
Kryptografie mit elliptischen Kurven
Öffentliche Schlüssel
Output- und Input-Skripte
IP-Adressen: die ursprünglichen Bitcoin-Adressen (P2PK)
Altadressen für P2PKH
Base58Check-Codierung
Komprimierte öffentliche Schlüssel
Alte Pay-to-Script-Hashes (P2SH)
Bech32-Adressen
Probleme mit Bech32-Adressen
Bech32m
Formate privater Schlüssel
Komprimierte private Schlüssel
Fortgeschrittene Schlüssel und Adressen
Vanity-Adressen
Paper-Wallets
5Wallet-Recovery
Unabhängige Schlüsselgenerierung
Deterministische Schlüsselgenerierung
Ableitung öffentlicher Child-Schlüssel
Hierarchisch-deterministische (HD-)Schlüsselgenerierung (BIP32)
Seeds und Recovery-Codes
Nichtschlüsseldaten sichern
Schlüsselableitungspfade sichern
Details des Wallet-Technologiestacks
BIP39-Recovery-Codes
Eine HD-Wallet aus dem Seed-Wert erzeugen
Einen erweiterten öffentlichen Schlüssel in einem Webshop nutzen
6Transaktionen
Eine serialisierte Bitcoin-Transaktion
Version
Erweiterter Marker und Flag
Inputs
Länge der Input-Liste der Transaktion
Outpoint
Input-Skript
Sequenz
Outputs
Outputs-Zähler
Menge
Output-Skripte
Witness-Struktur
Zirkulare Abhängigkeiten
Transaktionsverformbarkeit durch eine dritte Partei
Transaktionsverformbarkeit durch eine zweite Partei
Segregated Witness
Serialisierung der Witness-Struktur
Locktime
Coinbase-Transaktionen
Gewicht und Vbytes
Veraltete Serialisierung
7Autorisierung und Authentifizierung
Transaktionsskripte und Skriptsprache
Turing-Unvollständigkeit
Zustandlose Verifikation
Konstruktion von Skripten
Pay-to-Public-Key-Hash
Geskriptete Multisignaturen
Eine Eigentümlichkeit in der CHECKMULTISIG-Ausführung
Pay-to-Script-Hash
P2SH-Adressen
Vorteile von P2SH
Redeem-Skript und Validierung
Data Recording Output (OP_RETURN)
Einschränkungen von Transaktions-Locktimes
Check Lock Time Verify (OP_CLTV)
Relative Timelocks
Relative Timelocks mit OP_CSV
Skripte mit Ablaufsteuerung (Bedingungsklauseln)
Bedingungsklausel mit VERIFY-Opcodes
Die Ablaufsteuerung in Skripten nutzen
Komplexes Skriptbeispiel
Segregated-Witness-Output- und Transaktionsbeispiele
Upgrade auf Segregated Witness
Merklized Alternative Script Trees (MAST)
Pay-to-Contract (P2C)
Skriptlose Multisignaturen und Threshold-Signaturen
Taproot
Tapscript
8Digitale Signaturen
Wie digitale Signaturen funktionieren
Eine digitale Signatur erzeugen
Die Signatur verifizieren
Arten von Signatur-Hashes (SIGHASH)
Schnorr-Signaturen
Serialisierung von Schnorr-Signaturen
Schnorr-basierte skriptlose Multisignaturen
Schnorr-basierte skriptlose Threshold-Signaturen
ECDSA-Signaturen
ECDSA-Algorithmus
Serialisierung von ECDSA-Signaturen (DER)
Die Bedeutung der Zufälligkeit für Signaturen
Segregated Witness’ neuer Signieralgorithmus
9Transaktionsgebühren
Wer zahlt die Transaktionsgebühr?
Gebühren und Gebührensätze
Angemessene Gebührenraten bestimmen
Replace-By-Fee (RBF)
Child-Pays-for-Parent (CPFP)
Paketweiterleitung (Package Relay)
Transaktions-Pinning
CPFP-Carve-out und Anker-Outputs
Gebühren in Transaktionen einfügen
Timelock-Schutz gegen Fee-Sniping
10Das Bitcoin-Netzwerk
Arten und Rollen von Nodes
Das Netzwerk
Compact Block Relay
Private Block-Relay-Netzwerke
Netzwerkerkundung
Full Nodes
»Inventar« austauschen
Leichtgewichtige Clients
Bloomfilter
Wie Bloomfilter funktionieren
Wie leichtgewichtige Clients Bloomfilter nutzen
Kompakte Blockfilter
Golomb-Rice Coded Sets (GCS)
Welche Daten in einen Blockfilter gehören
Blockfilter von mehreren Peers herunterladen
Bandbreite reduzieren durch verlustbehaftete Codierung
Kompakte Blockfilter nutzen
Leichtgewichtige Clients und Privatsphäre
Verschlüsselte und authentifizierte Verbindungen
Mempools und Waisenpools
11Die Blockchain
Struktur eines Blocks
Block-Header
Blockkennungen: Block-Header-Hash und Blockhöhe
Der Genesis-Block
Blöcke in der Blockchain verlinken
Merkle Trees (Hashbäume)
Merkle Trees und leichtgewichtige Clients
Bitcoins Test-Blockchains
Testnet: Bitcoins Testspielwiese
Signet: das Proof-of-Authority-Testnet
Regtest: die lokale Blockchain
Test-Blockchains zur Entwicklung nutzen
12Mining und Konsens
Bitcoin-Ökonomie und Währungsgenerierung
Dezentralisierter Konsens
Unabhängige Verifikation von Transaktionen
Mining-Nodes
Die Coinbase-Transaktion
Coinbase-Belohnungen und Gebühren
Struktur einer Coinbase-Transaktion
Coinbase-Daten
Den Block-Header aufbauen
Mining des Blocks
Proof-of-Work-Algorithmus
Target-Darstellung
Retargeting zur Anpassung der Difficulty
Median Time Past (MTP)
Den Block erfolgreich schürfen
Einen neuen Block validieren
Ketten von Blöcken zusammensetzen und auswählen
Mining und der Hashing-Wettlauf
Die Lösung mit der Extra-Nonce
Mining-Pools
Konsensangriffe (Hashrate Attacks)
Die Konsensregeln ändern
Hard-Forks
Soft-Forks
Entwicklung von Konsenssoftware
13Bitcoins und Sicherheit
Sicherheitsgrundsätze
Bitcoin-Systeme sicher entwickeln
Die Wurzel des Vertrauens
Best Practices für den Nutzer
Physische Speicherung von Bitcoins
Hardware-Wallets
Zugriff sicherstellen
Risikodiversifizierung
Multisignaturen und Kontrolle
Überlebensfähigkeit
14Blockchain-Anwendungen
Grundbausteine (Primitive)
Anwendungen aus Grundbausteinen
Colored Coins
Single-Use Seals
Pay-to-Contract (P2C)
Clientseitige Validierung
RGB
Taproot-Assets
Zahlungs- und Zustandskanäle
Zustandskanäle – grundlegende Konzepte und Terminologie
Einfaches Zahlungskanalbeispiel
Vertrauensfreie Kanäle aufbauen
Asymmetrisch widerrufliche Commitments
Hash Time Lock Contracts (HTLC)
Geroutete Zahlungskanäle (Lightning Network)
Einfaches Lightning-Network-Beispiel
Lightning Network – Transport und Routing
Vorteile des Lightning Network
Anhang A: Das Bitcoin-Whitepaper von Satoshi Nakamoto
Anhang B: Errata zum Bitcoin-Whitepaper
Anhang C: Bitcoin Improvement Proposals
Index
Ich (Andreas) stolperte Mitte 2011 das erste Mal über Bitcoin. Meine erste Reaktion war mehr oder weniger »Pfft! Nerd-Geld!«, und ich ignorierte es für weitere sechs Monate, ohne seine Bedeutung zu erkennen. Diese Reaktion habe ich bei vielen der klügsten Menschen, die ich kenne, beobachtet, was mich ein bisschen tröstet. Als ich in einer Mailinglistendiskussion das zweite Mal über Bitcoin stolperte, entschied ich mich, das Whitepaper von Satoshi Nakamoto zu lesen, um die maßgebliche Quelle zu studieren und herauszufinden, worum es denn da eigentlich ging. Ich erinnere mich immer noch an den Moment, als ich diese neun Seiten gelesen hatte und begriff, dass Bitcoin nicht einfach eine digitale Währung, sondern ein Vertrauensnetzwerk ist, das die Basis für weit mehr als nur Währungen sein konnte. Die Erkenntnis, dass das »kein Geld, sondern ein dezentralisiertes Vertrauensnetzwerk« ist, schickte mich auf eine viermonatige Reise, in der ich jedes Quäntchen an Informationen über Bitcoin, das ich finden konnte, aufsaugte. Es hatte mich gepackt, und wie besessen verbrachte ich täglich zwölf Stunden und mehr vor dem Bildschirm, in denen ich las, schrieb, programmierte und so viel lernte, wie ich konnte. Nachdem ich aus diesem Zustand wieder erwachte, war ich zehn Kilogramm leichter und hatte mich entschieden, zukünftig an Bitcoin zu arbeiten.
Zwei Jahre später, nachdem ich eine Reihe kleiner Start-ups gegründet hatte, um verschiedene Bitcoin-bezogene Dienste und Produkte zu erforschen, entschied ich, dass es an der Zeit wäre, mein erstes Buch zu schreiben. Bitcoin hatte mich in einen Kreativitätsrausch versetzt und meine Gedanken bestimmt. Das war die aufregendste Technologie, der ich seit Beginn des Internets begegnet war – Zeit also, meine Leidenschaft für diese faszinierende Technologie mit einem breiteren Publikum zu teilen.
Dieses Buch richtet sich hauptsächlich an Entwicklerinnen und Entwickler. Wenn Sie eine Programmiersprache beherrschen, lehrt Sie dieses Buch, wie kryptografische Währungen funktionieren, wie man sie nutzt und wie man Software entwickelt, die mit ihnen arbeitet. Die ersten Kapitel eignen sich ebenfalls als ausführliche Einführung in Bitcoin für Nichtprogrammierer, also für diejenigen, die die innere Funktionsweise von Bitcoin und Kryptowährungen verstehen wollen.
Die Blattschneiderameise ist eine Spezies, die in einem Kolonie-Superorganismus ein hochkomplexes Verhalten zeigt. Doch jede einzelne Ameise agiert nach einem Satz einfacher Regeln, die durch soziale Interaktion und das Ausschütten chemischer Duftstoffe (Pheromone) gesteuert wird. Laut (englischer) Wikipedia bilden Blattschneiderameisen nach dem Menschen die größten und komplexesten Tiergesellschaften. Blattschneiderameisen essen keine Blätter, vielmehr nutzen sie sie, um einen Pilz anzubauen, der die zentrale Futterquelle der Kolonie bildet. Diese Ameisen betreiben also Landwirtschaft!!
Zwar bilden Ameisen eine kastenbasierte Gesellschaft und haben eine Königin, die für den Nachwuchs sorgt, doch es gibt weder eine zentrale Autorität noch einen Anführer. Das hochgradig intelligente und komplexe Verhalten, das eine aus mehreren Millionen Ameisen bestehende Kolonie zeigt, ist eine emergente Eigenschaft der Interaktion von Individuen in einem sozialen Netzwerk.
Die Natur demonstriert, dass ein dezentralisiertes System robust, komplex und unglaublich ausgereift sein kann, ohne eine zentrale Autorität, eine Hierarchie oder komplexe Teile zu benötigen.
Bitcoin ist ein kunstvolles dezentralisiertes Vertrauensnetzwerk, das eine Vielzahl finanzieller Prozesse unterstützen kann. Dennoch folgt jeder Knoten im Bitcoin-Netzwerk nur einigen wenigen einfachen mathematischen Regeln. Die Interaktion zwischen vielen Knoten führt zu diesem ausgeklügelten Verhalten, nicht die Komplexität eines einzelnen Knotens oder das in ihn gesetzte Vertrauen. Wie eine Ameisenkolonie ist das Bitcoin-Netzwerk ein robustes Netzwerk einfacher Knoten, die einfachen Regeln folgen, um erstaunliche Dinge ohne zentrale Koordinierung zu erreichen.
Im Buch folgen wir diesen typografischen Konventionen:
Kursivschrift
Wird für neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen verwendet.
Nichtproportionalschrift
Wird für Programmlistings verwendet. Im normalen Fließtext werden damit Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hervorgehoben.
Nichtproportionalschrift fett
Wird für Befehle oder andere Eingaben verwendet, die Sie wortwörtlich eingeben müssen.
Nichtproportionalschrift kursiv
Wird für Text verwendet, der durch benutzereigene oder durch den Kontext bestimmte Werte ersetzt wird.
Tipp
Mit diesem Symbol wird ein Tipp oder ein Vorschlag angezeigt.
Hinweis
Dieses Symbol repräsentiert einen allgemeinen Hinweis.
Warnung
Hiermit wird eine Warnung angezeigt.
Alle Code-Snippets können für die meisten Betriebssysteme mit einer minimalen Installation der Compiler und Interpreter für die entsprechenden Sprachen repliziert werden. Wenn nötig, stellen wir grundlegende Installationsanweisungen und schrittweise Beispiele der Ausgaben bereit.
Einige der Code-Snippets wurden für den Druck aufbereitet. In diesen Fällen wurden die Zeilen mit einem Backslash-Zeichen (\) gefolgt von einem Newline-Zeichen getrennt. Wenn Sie mit den Beispielen arbeiten, sollten Sie diese beiden Zeichen entfernen und die Zeilen wieder zusammenfassen. Die Ergebnisse sollten dann denen der Beispiele entsprechen.
Alle Code-Snippets verwenden wann immer möglich reale Werte und Berechnungen. Sie können sich also von Beispiel zu Beispiel vorarbeiten und kommen immer zu den gleichen Ergebnissen wie das Buch.
Dieses Buch ist dazu gedacht, Ihnen bei der Erledigung Ihrer Arbeit zu helfen. Im Allgemeinen dürfen Sie den Code in diesem Buch in Ihren eigenen Programmen oder Dokumentationen verwenden. Solange Sie den Code nicht in großem Umfang reproduzieren, brauchen Sie uns nicht um Erlaubnis zu bitten. Zum Beispiel benötigen Sie nicht unsere Erlaubnis, wenn Sie ein Programm unter Zuhilfenahme mehrerer Codestücke aus diesem Buch schreiben. Eine Frage mit einem Zitat oder einem Codebeispiel aus dem Buch zu beantworten, erfordert ebenfalls keine Genehmigung. Signifikante Teile des Beispielcodes aus dem Buch für die eigene Produktdokumentation zu verwerten, ist dagegen genehmigungspflichtig.
Wir freuen uns über eine Quellenangabe, verlangen sie aber nicht unbedingt. Zu einer Quellenangabe gehören normalerweise Autor, Titel, Verlagsangabe, Veröffentlichungsjahr und ISBN, hier also: »Andreas M. Antonopoulos und David A. Harding, Mastering Bitcoin, O’Reilly Media, Inc. 2024, ISBN 978-1098150099.
Einige Auflagen dieses Buchs werden unter einer Open-Source-Lizenz wie CC-BY-NC (https://oreil.ly/RzUHE) angeboten. In diesem Fall gelten die Bedingungen dieser Lizenz.
Sollten Sie befürchten, dass Ihre Verwendung der Codebeispiele gegen das Fairness-prinzip oder die Genehmigungspflicht verstoßen könnte, nehmen Sie bitte unter [email protected] Kontakt mit O’Reilly Media, Inc. auf.
Die dritte Auflage konzentriert sich auf die Aktualisierung des Texts der zweiten Auflage aus dem Jahr 2017 sowie der aus der ersten Auflage von 2014 verbliebenen Inhalte. Zusätzlich wurden viele Konzepte ergänzt, die für die Bitcoin-Entwicklung im Jahr 2023 von Bedeutung waren:
Kapitel 4
Wir haben die Adressinfo neu organisiert, sodass alles in der historischen Reihenfolge durchgegangen werden kann. Wir haben einen neuen Abschnitt zu P2PK hinzugefügt (wo »Adresse« eine »IP-Adresse« war), die Abschnitte zu P2PKH und P2SH überarbeitet und Abschnitte zu Segwit/Bech32 und Taproot/Bech32m ergänzt.
Kapitel 6 und Kapitel 7
Der Text der alten Kapitel 6, »Transaktionen«, und Kapitel 7, »Transaktionen und Skripting für Fortgeschrittene«, wurde in vier Kapiteln neu organisiert: Kapitel 6 (Transaktionen), Kapitel 7 (»Autorisierung und Authentifizierung«), Kapitel 8 (»Digitale Signaturen«) und Kapitel 9 (»Transaktionsgebühren«).
Kapitel 6
Ein fast vollständig neuer Text beschreibt die Struktur einer Transaktion.
Kapitel 7
Wir haben Text zu MAST, P2C, skriptlosen Multisignaturen, Taproot und Tapscript ergänzt.
Kapitel 8
Der Text zu ECDSA wurde überarbeitet, und Text zu Schnorr-Signaturen wurde ergänzt.
Kapitel 9
Der Text zu Gebühren, RBF- und CPFP-Fee-Bumping, Transaktions-Pinning, Paketweiterleitung (Package Relay) und CPFP-Carve-out wurde fast vollständig neu geschrieben.
Kapitel 10
Wir haben Text zu Compact Block Relay hinzugefügt, Bloomfilter überarbeitet, um deren Probleme mit der Privatsphäre besser zu beschreiben, und Text zu kompakten Blockfiltern ergänzt.
Kapitel 11
Text zu Signet ergänzt.
Kapitel 12
Text zu BIP8 und Speedy Trial ergänzt.
Anhänge
Bibliotheksspezifische Anhänge wurden entfernt. Auf den Anhang mit dem Original-Whitepaper folgt nun ein Anhang, der beschreibt, wie sich die Implementierung und die Eigenschaften von Bitcoin vom Whitepaper unterscheiden.
Die Bitcoin-Adressen, Transaktionen, Schlüssel, QR-Codes und Blockchain-Daten in diesem Buch sind größtenteils real. Das bedeutet, dass Sie die Blockchain durchgehen und den größten Teil real nachverfolgen können. Sie können also die Blockchain durchsuchen, sich die in den Beispielen enthaltenen Transaktionen genau ansehen, sie mit Ihren eigenen Skripten/Programmen abrufen und so weiter.
Beachten Sie aber, dass die in diesem Buch zur Generierung von Adressen verwendeten privaten Schlüssel entweder in diesem Buch abgedruckt oder »verbrannt« wurden. Wenn Sie also Geld an diese Adressen senden, ist es für immer verloren, oder es kann von jedem abgeschöpft werden, der die hier abgedruckten privaten Schlüssel kennt.
Bitte senden Sie keinesfalls Geld an irgendeine der in diesem Buch verwendeten Adressen. Ihr Geld landet bei einem anderen Leser oder ist für immer verloren.
Sie erreichen Andreas M. Antonopoulos über seine persönliche Website: https://antonopoulos.com.
Folgen Sie Andreas auf Facebook: https://facebook.com/AndreasMAntonopoulos.
Twitter-Account von Andreas (eingestellt): https://twitter.com/aantonop.
Folgen Sie Andreas auf LinkedIn: https://linkedin.com/company/aantonop.
Herzlichen Dank an die Förderer von Andreas, die seine Arbeit durch monatliche Spenden unterstützen. Seine Patreon-Seite finden Sie hier: https://patreon.com/aantonop.
Informationen zu Mastering Bitcoin, zur Open Edition und Übersetzungen finden Sie hier: https://bitcoinbook.info.
Sie erreichen David A. Harding über seine persönliche Website: https://dtrt.org.
Von Andreas M. Antonopoulos
Dieses Buch spiegelt die Bemühungen und Beiträge vieler Menschen wider. Ich bin sehr dankbar für die Hilfe, die ich von Freunden, Kollegen, aber auch völlig Fremden erhalten habe, die mich dabei unterstützt haben, diesen technischen Leitfaden zu Kryptowährungen und Bitcoin zu schreiben.
Es ist unmöglich, zwischen der Bitcoin-Technologie und der Bitcoin-Community zu unterscheiden, und dieses Buch ist ebenso ein Produkt dieser Community wie ein Buch über die Technologie. Meine Arbeit an diesem Buch wurde vom Anfang bis zum Ende von der Community befürwortet, angefeuert und unterstützt. Neben vielem anderen ermöglichte mir dieses Buch, über zwei Jahre Teil dieser wundervollen Community zu sein, und ich bin mehr als dankbar, in dieser Community akzeptiert worden zu sein. Eine große Menge an Menschen haben das Buch beeinflusst, und es sind viel zu viele, um sie beim Namen zu nennen. Es sind Menschen, die ich auf Konferenzen, Events, Seminaren, Meet-ups, beim Pizza-Plausch oder bei privaten Treffen kennengelernt habe, ebenso wie bei Twitter, auf reddit, bitcointalk.org und GitHub. Jede Idee, Analogie, Frage, Antwort und Erläuterung in diesem Buch wurde an irgendeinem Punkt durch die Community inspiriert, getestet und verbessert. Ich danke euch allen für die Unterstützung. Ohne euch hätte es dieses Buch nie gegeben, und ich bin euch für immer dankbar.
Der Weg zum Autor begann natürlich lange vor dem ersten Buch. Meine erste Sprache war Griechisch (und damit war auch mein erster Unterricht in Griechisch). Deshalb belegte ich im ersten Jahr an der Universität einen Schreibkurs. Ich danke meiner damaligen Lehrerin Diana Kordas, die mir in diesem Jahr dabei half, Selbstvertrauen und Fertigkeiten zu sammeln. Später schrieb ich für das Network World Magazine und entwickelte meine Fertigkeiten als technischer Autor im Bereich Data Center. Ich danke John Dix und John Gallant, die mir meinen ersten Job als Kolumnist bei Network World gaben, sowie meinem Lektor Michael Cooney und meinem Kollegen Johna Till Johnson, die meine Kolumnen lektorierten und für eine Veröffentlichung aufbereiteten. Vier Jahre lang 500 Wörter pro Woche zu schreiben, sorgten für ausreichend Erfahrung, um ernsthaft über ein Dasein als Autor nachzudenken.
Vielen Dank auch an diejenigen, die mich unterstützten, nachdem ich meinen Buchvorschlag bei O’Reilly eingereicht hatte, indem sie Empfehlungen aussprachen und sich den Entwurf genauer ansahen. Mein Dank geht an John Gallant, Gregory Ness, Richard Stiennon, Joel Snyder, Adam B. Levine, Sandra Gittlen, John Dix, Johna Till Johnson, Roger Ver und Jon Matonis. Besonderer Dank geht an Richard Kagan und Tymon Mattoszko, die frühe Fassungen prüften, und an Matthew Taylor, der diese Fassung lektorierte.
Dank an Cricket Liu, Autor des O’Reilly-Titels DNS and BIND, der mich bei O’Reilly vorgestellt hat. Ein Dank auch an Michael Loukides und Allyson MacDonald von O’Reilly, die Monate daran arbeiteten, dass dieses Buch Wirklichkeit wurde. Allyson war besonders aufmerksam, wenn Abgabefristen verstrichen und Ergebnisse fehlten. Bei der zweiten Ausgabe gab Timothy McGovern die Richtung vor, Kim Cofer übernahm das Lektorat, und Rebecca Panzer sorgte für viele neue Diagramme.
Die ersten Entwürfe der ersten Kapitel waren die schwersten, schlicht weil Bitcoin ein kompliziertes Thema ist. Sobald ich einen Aspekt herauspickte, musste ich direkt schon wieder das große Ganze betrachten. Wiederholt blieb ich hängen und war frustriert, wenn ich versuchte, ein Thema leicht verständlich rüberzubringen, indem ich eine Geschichte um ein schwieriges technisches Thema herum erzählen wollte. Letztendlich entschied ich mich dafür, die Geschichte des Bitcoins über die Geschichten derjenigen zu erzählen, die Bitcoins nutzen. Das Buch zu schreiben, wurde dadurch erheblich einfacher. Ich schulde meinem Freund und Mentor Richard Kagan Dank, der mir dabei half, die Geschichte zu entwirren und meine Schreibblockaden zu überwinden. Ich danke Pamela Morgan, die frühe Fassungen jedes Kapitels der ersten und zweiten Auflage Korrektur las und die richtigen Fragen stellte. Mein Dank geht auch an die Entwickler der »San Francisco Bitcoin Developers Meetup«-Gruppe sowie an Taariq Lewis und Denise Terry, die dabei halfen, das frühe Material zu testen. Dank ebenfalls an Andrew Naugler für den Entwurf der Infografiken.
Während ich das Buch schrieb, machte ich frühe Fassungen auf GitHub verfügbar und lud dazu ein, diese zu kommentieren. Über 100 Kommentare, Vorschläge, Korrekturen und Beiträge sind daraufhin eingegangen. Für diese Beiträge bedanke ich mich explizit in »Early Release Draft (GitHub-Beiträge)« auf Seite 23. Zuallererst gilt mein Dank meinen freiwilligen GitHub-Lektoren Ming T. Nguyen (erste Auflage) und Will Binns (zweite Auflage), die auf GitHub unermüdlich Pull-Requests kuratiert, verwaltet und aufgelöst, Reports veröffentlicht und Bug-Fixes vorgenommen haben.
Sobald die erste Fassung stand, wurde sie mehrfach von technischen Korrektoren überarbeitet. Vielen Dank an Cricket Liu und Lorne Lantz für deren sorgfältiges Korrekturlesen sowie ihre Kommentare und die Unterstützung.
Verschiedene Bitcoin-Entwickler steuerten Codebeispiele, Korrekturen und Kommentare bei. Dank an Amir Taaki und Eric Voskuil für Beispielcode und viele gute Kommentare, Chris Kleeschulte für den Bitcore-Anhang, Vitalik Buterin und Richard Kiss für Codebeiträge und ihre Hilfe bei der Mathematik elliptischer Kurven, Gavin Andresen für Korrekturen und Kommentare, Michalis Kargakis für Kommentare und Beiträge sowie Robin Inge für die Fehlerkorrektur der zweiten Auflage. Auch bei der zweiten Auflage erhielt ich wieder Hilfe von vielen Bitcoin-Core-Entwicklern, darunter Eric Lombrozo, der Segregated Witness entmystifizierte, Luke Dashjr, der mir beim Kapitel über Transaktionen half, Johnson Lau, der (unter anderem) das Kapitel zu Segregated Witness Korrektur las, und viele andere. Ich danke Joseph Poon, Tadge Dryja und Olaoluwa Osuntokun, die mir das Lightning Network erklärten, meinen Text Korrektur lasen und Fragen beantworteten, wenn ich nicht weiterkam.
Meine Liebe für Wörter und Bücher verdanke ich meiner Mutter Theresa, die mich in einem Haus aufzog, in dem Bücher jede Wand mit Beschlag belegten. Meine Mutter kaufte mir 1982 auch meinen ersten Computer, obwohl sie sich selbst als technophob beschrieb. Mein Vater Menelaos, ein Bauingenieur, der sein erstes Buch im Alter von 80 Jahren veröffentlichte, lehrte mich logisches und analytisches Denken und schürte meine Vorliebe für Wissenschaft und Technik.
Ich danke euch allen für eure Unterstützung während meiner Reise.
Von David A. Harding
Die Einführung in das nicht interaktive Schnorr-Signaturprotokoll in »Schnorr-Signaturen« auf Seite 209, die mit der Beschreibung des interaktiven Schnorr-Identitätsprotokolls beginnt, wurde stark von der Einführung in das Thema in »Borrommean Ring Signatures« (2015) von Gregory Maxwell und Andrew Poelstra beeinflusst. Ich stehe tief in beider Schuld für die Hilfe, die sie mir über die letzte Dekade hinweg gewährt haben.
Wertvolle technische Reviews früher Fassungen dieses Manuskripts kamen von Jorge Lesmes, Olaoluwa Osuntokun, René Pickhardt und Mark »Murch« Erhardt. Insbesondere Murchs ausführliches und aufschlussreiches Review und seine Bereitschaft, mehrere Versionen desselben Texts zu beurteilen, haben die Qualität dieses Buchs weit über meine Erwartungen hinaus verbessert.
Ich schulde auch Jimmy Song meinen Dank, der mich für dieses Projekt vorgeschlagen hat, meinem Mitautor Andreas, dass ich diesen Beststeller aktualisieren durfte, Angela Rufino, die mich durch den Prozess der Autorschaft bei O’Reilly geleitet hat, sowie allen anderen Mitarbeitenden bei O’Reilly, die das Schreiben der dritten Auflage zu einer angenehmen und produktiven Erfahrung gemacht haben.
Ich weiß nicht, wie ich all den Bitcoin-Beitragenden danken soll, die mir auf meinem Weg geholfen haben – sei es bei der Entwicklung der von mir genutzten Software oder dabei, mir beizubringen, wie sie funktioniert, und mir zu helfen, mein bisschen Wissen weiterzugeben. Es sind zu viele, um ihre Namen aufzuführen, doch ich denke oft an sie und weiß, dass mein Beitrag zu diesem Buch ohne all das, was sie für mich getan haben, nicht möglich gewesen wäre.
Viele Beitragende lieferten Kommentare, Korrekturen und Ergänzungen zum Early Release Draft auf GitHub. Ich danke euch allen für euren Beitrag zu diesem Buch.
Nachfolgend eine Liste wichtiger GitHub-Beitragender mit deren GitHub-IDs in Klammern:
Abdussamad Abdurrazzaq (AbdussamadA)
Adán SDPC (aesedepece)
Akira Chiku (achiku)
Alex Waters (alexwaters)
Andrew Donald Kennedy (grkvlt)
Andrey Esaulov (andremaha)
andronoob
AnejaBK
Appaji (CITIZENDOT)
ariesunny
Arthur O’Dwyer (Quuxplusone)
bargitta
Basem Alasi (Bamskki)
bisqfan
bitcoinctf
blip151
Bryan Gmyrek (physicsdude)
Carlos Sims (simsbluebox)
Casey Flynn (cflynn07)
cclauss
Chapman Shoop (belovachap)
chrisd95
Christie D’Anna (avocadobreath)
Cihat Imamoglu (cihati)
Cody Scott (Siecje)
coinradar
Cragin Godley (cgodley)
Craig Dodd (cdodd)
dallyshalla
Dan Nolan (Dan-Nolan)
Dan Raviv (danra)
Darius Kramer (dkrmr)
Darko Janković (trulex)
David Huie (DavidHuie)
didongke
Diego Viola (diegoviola)
Dimitris Tsapakidis (dimitris-t)
Dirk Jäckel (biafra23)
Dmitry Marakasov (AMDmi3)
drakos (Jolly-Pirate)
drstrangeM
Ed Eykholt (edeykholt)
Ed Leafe (EdLeafe)
Edward Posnak (edposnak)
Elias Rodrigues (elias19r)
Eric Voskuil (evoskuil)
Eric Winchell (winchell)
Erik Wahlström (erikwam)
effectsToCause (vericoin)
Esteban Ordano (eordano)
ethers
Evlix
fabienhinault
Fan (whiteath)
Felix Filozov (ffilozov)
Francis Ballares (fballares)
François Wirion (wirion)
Frank Höger (francyi)
Gabriel Montes (gabmontes)
Gaurav Rana (bitcoinsSG)
genjix
Geremia
Gerry Smith (Hermetic)
gmr81
Greg (in3rsha)
Gregory Trubetskoy (grisha)
Gus (netpoe)
halseth
harelw
Harry Moreno (morenoh149)
Hennadii Stepanov (hebasto)
Holger Schinzel (schinzelh)
Ioannis Cherouvim (cherouvim)
Ish Ot Jr. (ishotjr)
ivangreene
James Addison (jayaddison)
Jameson Lopp (jlopp)
Jason Bisterfeldt (jbisterfeldt)
Javier Rojas (fjrojasgarcia)
Jordan Baczuk (JBaczuk)
Jeremy Bokobza (bokobza)
JerJohn15
jerzybrzoska
Jimmy DeSilva (jimmydesilva)
Jo Wo (jowo-io)
Joe Bauers (joebauers)
joflynn
Johnson Lau (jl2012)
Jonathan Cross (jonathancross)
Jorgeminator
jwbats
Kai Bakker (kaibakker)
kollokollo
krupawan5618
kynnjo
Liangzx
lightningnetworkstores
lilianrambu
Liu Yue (lyhistory)
Lobbelt
Lucas Betschart (lclc)
Matt Wesley (MatthewWesley)
Magomed Aliev (30mb1)
Mai-Hsuan Chia (mhchia)
Marco Falke (MarcoFalke)
María Martín (mmartinbar)
Marcus Kiisa (mkiisa)
Mark Erhardt (Xekyo)
Mark Pors (pors)
Martin Harrigan (harrigan)
Martin Vseticka (MartyIX)
Marzig (marzig76)
Matt McGivney (mattmcgiv)
Matthijs Roelink (Matthiti)
Maximilian Reichel (phramz)
MG-ng (MG-ng)
Michalis Kargakis (kargakis)
Michael C. Ippolito (michaelcippolito)
Michael Galero (mikong)
Michael Newman (michaelbnewman)
Mihail Russu (MihailRussu)
mikew (mikew)
milansismanovic
Minh T. Nguyen (enderminh)
montvid
Morfies (morfies)
Nagaraj Hubli (nagarajhubli)
Nekomata (nekomata-3)
nekonenene
Nhan Vu (jobnomade)
Nicholas Chen (nickycutesc)
Ning Shang (syncom)
Oge Nnadi (ogennadi)
Oliver Maerz (OliverMaerz)
Omar Boukli-Hacene (oboukli)
Óscar Nájera (Titan-C)
Parzival (Parz-val)
Paul Desmond Parker (sunwukonga)
Philipp Gille (philippgille)
ratijas
rating89us
Raul Siles (raulsiles)
Reproducibility Matters (TheCharlatan)
Reuben Thomas (rrthomas)
Robert Furse (Rfurse)
Roberto Mannai (robermann)
Richard Kiss (richardkiss)
rszheng
Ruben Alexander (hizzvizz)
Sam Ritchie (sritchie)
Samir Sadek (netsamir)
Sandro Conforto (sandroconforto)
Sanjay Sanathanan (sanjays95)
Sebastian Falbesoner (theStack)
Sergei Tikhomirov (s-tikhomirov)
Sergej Kotliar (ziggamon)
Seiichi Uchida (topecongiro)
shaysw
Simon de la Rouviere (simondlr)
simone-cominato
sindhoor7
Stacie (staciewaleyko)
Stephan Oeste (Emzy)
Stéphane Roche (Janaka-Steph)
takaya-imai
Thiago Arrais (thiagoarrais)
Thomas Kerin (afk11)
Tochi Obudulu (tochicool)
Tosin (tkuye)
Vasil Dimov (vasild)
venzen
Vlad Stan (motorina0)
Vijay Chavda (VijayChavda)
Vincent Déniel (vincentdnl)
weinim
wenxiaolong (QingShiLuoGu)
wenzhenxiang
Will Binns (wbnns)
wintercooled
wjx
wll2007
Wojciech Langiewicz (wlk)
Yancy Ribbens (yancyribbens)
yjjnls
Yoshimasa Tanabe (emag)
yuntai
yurigeorgiev4
Zheng Jia (zhengjia)
Zhou Liang (zhouguoguo)
Bitcoin ist eine Sammlung von Konzepten und Technologien, die ein Ökosystem für digitales Geld bilden. Währungseinheiten namens Bitcoin werden genutzt, um Werte zu speichern und sie zwischen den Teilnehmenden des Bitcoin-Netzwerks zu übertragen. Bitcoin-Nutzerinnen und -Nutzer kommunizieren miteinander über das Bitcoin-Protokoll. Das geschieht hauptsächlich über das Internet, andere Transportprotokolle sind aber auch möglich. Der Bitcoin-Protokollstack steht als Open-Source-Software zur Verfügung und ist auf einer Vielzahl von Geräten (einschließlich Laptops und Smartphones) lauffähig, d. h., der Zugang zu dieser Technik gestaltet sich einfach.
Nutzer können Bitcoin über das Netzwerk transferieren und damit das tun, was man auch mit normalem Geld macht: Güter kaufen und verkaufen, Geld an Menschen oder Organisationen überweisen oder jemandem einen Kredit gewähren. Bitcoin kann an speziellen Börsen gekauft, verkauft und gegen andere Währungen getauscht werden. Bitcoin ist in gewissem Sinn das perfekte Geld für das Internet, da es schnell und sicher ist und keine Grenzen kennt.
Im Gegensatz zu traditionellen Währungen ist Bitcoin vollständig virtuell. Es gibt keine Münzen im herkömmlichen Sinn und auch keine digitalen Münzen. Die Münzen (also die Coins) sind in Transaktionen enthalten, die Werte vom Sender zum Empfänger transferieren. Bitcoin-Nutzer verfügen über Schlüssel, die den Besitz von Bitcoins im Bitcoin-Netzwerk nachweisen. Mit diesen Schlüsseln können sie Transaktionen signieren, um den Betrag freizugeben und an einen neuen Eigentümer zu transferieren. Die Schlüssel werden häufig in einer digitalen Geldbörse (der Wallet) auf dem Computer oder Smartphone des Nutzers gespeichert. Der Besitz des Schlüssels, mit dem eine Transaktion signiert werden kann, ist die einzige Voraussetzung, um Bitcoins auszugeben, d. h., die Kontrolle liegt vollständig in den Händen der Nutzenden.
Bitcoin ist ein verteiltes Peer-to-Peer-System. Daher gibt es keinen »zentralen« Server oder Kontrollpunkt. Bitcoins werden in einem als Mining bezeichneten Prozess erzeugt, bei dem darum gerungen wird, wer als Erster die Lösung eines mathematischen Problems findet, während die Bitcoin-Transaktionen verarbeitet werden. Jeder Teilnehmer am Bitcoin-Netzwerk (d.h. jeder, auf dessen Gerät der vollständige Bitcoin-Protokollstack läuft) kann als Miner fungieren und die Rechenleistung seines Computers nutzen, um Transaktionen zu verifizieren und festzuhalten. Im Schnitt ist alle zehn Minuten jemand in der Lage, die Transaktionen der letzten zehn Minuten zu verifizieren, und wird dafür mit neuen Bitcoins belohnt. Im Grunde dezentralisiert das Mining die Geldausgabe und die Abrechnung (das Clearing), wodurch eine Zentralbank überflüssig wird.
Das Bitcoin-Protokoll enthält fest eingebaute Algorithmen, die die Mining-Funktion innerhalb des Netzwerks regeln. Der Schwierigkeitsgrad (die Difficulty) der Rechenaufgabe, die die Miner lösen müssen, wird dynamisch so angepasst, dass im Durchschnitt alle zehn Minuten jemand erfolgreich ist, und zwar unabhängig davon, wie viele Miner (und wie viel Rechenleistung) gerade an der Lösung arbeiten. Das Protokoll halbiert alle vier Jahre die Geschwindigkeit, mit der neue Bitcoins erzeugt werden, und beschränkt die Gesamtzahl der Bitcoins auf etwas unter 21 Millionen. Das führt dazu, dass die im Umlauf befindlichen Bitcoins einer einfach vorhersagbaren Kurve folgen, nach der die 21 Millionen im Jahr 2140 erreicht werden. Ungefähr bei Block 1.411.200, der um das Jahr 2035 erzeugt wird, werden 99% aller jemals existierenden Bitcoins erzeugt worden sein. Durch die sinkende Geschwindigkeit der Ausgabe ist die Währung Bitcoin auf lange Sicht deflationär. Darüber hinaus kann der Bitcoin nicht »aufgeblasen« werden, indem man neue Coins über oder unter der erwarteten Ausgaberate »druckt«.
Hinter den Kulissen ist Bitcoin auch der Name eines Protokolls, eines Peer-to-Peer-Netzwerks und einer Innovation in Sachen Distributed Computing. Tatsächlich ist die Währung Bitcoin nur die erste Anwendung dieser innovativen Technik. Bitcoin repräsentiert den Höhepunkt jahrzehntelanger Forschung zu den Themen Kryptografie und verteilte Systeme. Die Technik fasst vier Schlüsselinnovationen in einer einmaligen und leistungsfähigen Kombination zusammen. Bitcoin besteht aus:
einem dezentralisierten Peer-to-Peer-Netzwerk (dem Bitcoin-Protokoll),
einem öffentlichen Kassenbuch (der Blockchain),
einer Reihe von Regeln für die unabhängige Validierung von Transaktionen und die Geldausgabe (Konsensregeln) sowie
einem Mechanismus, mit dem ein globaler, dezentralisierter Konsens zur jeweils gültigen Blockchain erreicht wird (Proof-of-Work-Algorithmus).
Als Entwickler sehe ich Bitcoin als eine Art Internet des Geldes – als Netzwerk für die Verteilung von Werten und die Sicherung des Eigentums an digitalen Vermögenswerten mithilfe verteilter Berechnungen. Hinter Bitcoin steht viel mehr, als es auf den ersten Blick scheint.
In diesem Kapitel wollen wir einige der wesentlichen Konzepte und Begriffe erläutern, uns die notwendige Software beschaffen und Bitcoin für einfache Transaktionen nutzen. In den folgenden Kapiteln sehen wir uns dann schrittweise die tieferen Schichten der Technik an, die Bitcoin möglich machen, und untersuchen das Innenleben des Bitcoin-Netzwerks und -Protokolls.
Digitale Währungen vor Bitcoin
Das Aufkommen brauchbarer digitaler Währung ist eng mit den Entwicklungen in der Kryptografie verknüpft. Das ist nicht weiter überraschend, wenn man die Herausforderungen betrachtet, vor denen man steht, wenn man Bits nutzt, um Werte zu repräsentieren, die gegen Güter und Dienste getauscht werden können. Für jeden, der digitales Geld akzeptiert, stellen sich drei grundlegende Fragen:
Kann ich sicher sein, dass das Geld echt und nicht gefälscht ist?Kann ich sicher sein, dass digitales Geld nur einmal ausgegeben werden kann (das sogenannte Double-Spending-Problem)?Kann ich sicher sein, dass niemand außer mir dieses Geld für sich beansprucht?Die Herausgeber von Papiergeld bekämpfen das Fälschungsproblem mit immer ausgefeilteren Papieren und anspruchsvoller Drucktechnik. Physikalisches Geld verhindert das Problem des doppelten Ausgebens ganz einfach, weil eine Banknote nicht an zwei Orten gleichzeitig sein kann. Natürlich wird konventionelles Geld häufig digital gespeichert und überwiesen. In diesen Fällen werden Fälschungen und Double Spending verhindert, indem alle elektronischen Transaktionen durch zentrale Instanzen verarbeitet werden, die eine globale Übersicht über alle im Umlauf befindlichen Währungen haben. Bei digitalem Geld, das nicht auf esoterische Tinten oder Hologramme zurückgreifen kann, bildet Kryptografie die Basis für das Vertrauen in die Legitimität eines Besitzanspruchs. Insbesondere kryptografische digitale Signaturen ermöglichen einem Nutzer, ein digitales Gut oder eine Transaktion zu signieren und so das Eigentum an diesem Gut zu beweisen. Mit der richtigen Architektur können digitale Signaturen auch verwendet werden, um das Double-Spending-Problem in den Griff zu bekommen.
Als die Kryptografie in den späten 1980ern einer breiteren Masse zur Verfügung stand und besser verstanden wurde, versuchten viele Forschende, Kryptografie zum Aufbau digitaler Währungen zu nutzen. Diese frühen Projekte gaben digitales Geld heraus, das durch eine nationale Währung oder ein Edelmetall wie Gold gedeckt war.
Zwar funktionierten diese frühen digitalen Währungen, doch sie waren zentralisiert und dementsprechend von Regierungen und Hackern einfach anzugreifen. Frühe digitale Währungen nutzten (genau wie das traditionelle Bankensystem) eine zentrale Abrechnungsstelle, um alle Transaktionen in regelmäßigen Intervallen abzuwickeln. Leider gerieten die meisten dieser aufstrebenden digitalen Währungen ins Visier besorgter Regierungen und wurden letztendlich auf dem Rechtsweg aus dem Weg geschafft. Einige gingen spektakulär unter, als das Mutterunternehmen unvermittelt abgewickelt wurde. Um gegen Interventionen durch Antagonisten gewappnet zu sein, war eine dezentralisierte digitale Währung nötig, um einen zentralen Angriffspunkt zu vermeiden. Bitcoin ist ein solches System, es wurde bereits von Grund auf dezentralisiert entworfen. Es kommt vollständig ohne zentrale Autorität und ohne eine zentrale Kontrollstelle aus, die angegriffen oder geschädigt werden könnte.
Bitcoin wurde 2008 erstmals beschrieben in einem Papier mit dem Titel »Bitcoin: A Peer-to-Peer Electronic Cash System«1, das unter dem Pseudonym Satoshi Nakamoto veröffentlicht worden war. Nakamoto kombinierte verschiedene frühere Erfindungen wie digitale Signaturen und Hashcash, um ein vollständig dezentralisiertes Electronic-Cash-System zu entwickeln, das völlig unabhängig war von einer zentralen Instanz für Geldausgabe und Abrechnung sowie die Validierung von Transaktionen. Die Kerninnovation war die Nutzung eines verteilten Rechensystems (das als Proof-of-Work-Algorithmus bezeichnet wird), um alle zehn Minuten eine globale »Wahl« durchzuführen, die dem dezentralisierten Netzwerk zu einem Konsens über den Zustand der Transaktionen verhilft. Das löst auf elegante Weise das Double-Spending-Problem, bei dem eine einzelne Währungseinheit zweimal ausgegeben werden kann. Bis dahin war das Double-Spending-Problem eine Schwäche digitaler Währungen, die dadurch gelöst wurde, dass alle Transaktionen über eine zentrale Abrechnungsstelle verarbeitet wurden.
Das Bitcoin-Netzwerk startete 2009 basierend auf einer Referenzimplementierung von Nakamoto, die seitdem von vielen anderen Programmierern überarbeitet wurde. Anzahl und Leistung der den Proof-of-Work-Algorithmus ausführenden Maschinen (Mining), die für die Sicherheit und Belastbarkeit des Bitcoins sorgt, ist exponentiell angestiegen und übertrifft mittlerweile die kombinierte Rechenleistung der Top-Supercomputer auf der Welt. Satoshi Nakamoto zog sich im April 2011 zurück und übergab die Verantwortung für die Entwicklung des Codes und des Netzwerks an eine Gruppe von Freiwilligen. Die Identität der Person oder Personen hinter Bitcoin ist bisher nicht bekannt. Ungeachtet dessen kontrolliert weder Satoshi Nakamoto noch irgendwer sonst das Bitcoin-System. Es arbeitet auf vollständig transparenten mathematischen Prinzipien, Open-Source-Code und dem Konsens zwischen den Teilnehmenden. Diese Erfindung ist für sich genommen schon bahnbrechend und hat bereits zu neuen Forschungen in den Bereichen Distributed Computing, Wirtschaftswissenschaften und Ökonometrie geführt.
Eine Lösung für ein Distributed-Computing-Problem
Satoshi Nakamotos Erfindung liefert auch eine praktische und neue Lösung für ein Problem des Distributed Computing, das als »Problem der byzantinischen Generäle« bekannt ist. Kurz gefasst, besteht das Problem darin, sich über das Vorgehen oder den Zustand eines Systems zu einigen, in dem Informationen über ein unzuverlässiges und möglicherweise kompromittiertes Netzwerk ausgetauscht werden. Satoshi Nakamotos Lösung, die das Proof-of-Work-Konzept nutzt, um einen Konsens ohne eine zentrale vertrauenswürdige Instanz zu erzielen, stellt einen Bruch für das Distributed Computing dar.
Bitcoin ist ein Protokoll, auf das man über eine Anwendung zugreifen kann, die dieses Protokoll versteht. Eine »Bitcoin-Wallet« ist die übliche Benutzerschnittstelle zum Bitcoin-System (so wie der Webbrowser die übliche Schnittstelle zum HTTP-Protokoll ist). Es gibt viele verschiedene Implementierungen von Bitcoin-Wallets, ebenso wie es die unterschiedlichsten Webbrowser gibt (z.B. Chrome, Safari, Firefox). Und genau wie wir unsere Lieblingsbrowser haben, variieren auch Bitcoin-Wallets in Qualität, Performance, Sicherheit, Privatsphäre und Zuverlässigkeit. Es gibt ebenfalls eine Referenzimplementierung des Bitcoin-Protokolls, die auch eine Wallet umfasst. Diese ist als »Bitcoin Core« bekannt und leitet sich aus der ursprünglich von Satoshi Nakamoto geschriebenen Implementierung ab.
Bitcoin-Wallets sind mit die am aktivsten entwickelten Anwendungen des Bitcoin-Ökosystems. Es herrscht ein starker Wettbewerb, und während wahrscheinlich gerade jetzt eine neue Wallet entwickelt wird, werden verschiedene Wallets aus dem letzten Jahr nicht mehr aktiv gepflegt. Viele Wallets konzentrieren sich auf bestimmte Plattformen oder auf spezielle Anwendungen. Einige eignen sich besser für Einsteiger, während andere vollgepackt sind mit Features für fortgeschrittene Anwender. Die Wahl einer Wallet ist eine hochgradig subjektive Angelegenheit und hängt von der Nutzung und dem Wissen des Anwenders ab. Es ist daher unmöglich, ein bestimmtes Produkt oder Projekt zu empfehlen. Ungeachtet dessen können wir Bitcoin-Wallets entsprechend ihrer Plattform und ihrer Funktion kategorisieren und etwas Klarheit in Bezug auf die verschiedenen Arten von Wallets schaffen. Es lohnt sich also, verschiedene Wallets auszuprobieren, bis man die gefunden hat, die den eigenen Bedürfnissen am besten entspricht.
Bitcoin-Wallets lassen sich entsprechend ihrer Plattform wie folgt klassifizieren:
Desktop-Wallet
Die Desktop-Wallet war die erste Form der Wallet, die als Referenzimplementierung entwickelt wurde. Viele Nutzende verwenden Desktop-Wallets aufgrund ihrer Features, der Autonomie und der von ihnen gebotenen Kontrolle. Der Betrieb auf verbreiteten Betriebssystemen wie Windows und macOS ist jedoch nicht ganz so sicher, weil diese Plattformen selbst häufig unsicher und schlecht konfiguriert sind.
Mobile Wallet
Mobile Wallets sind die am weitesten verbreitete Form der Bitcoin-Wallets. Sie laufen auf Smartphone-Betriebssystemen wie Apple iOS und Android und sind daher eine gute Wahl für neue Nutzerinnen und Nutzer. Viele stellen Einfachheit und eine unkomplizierte Anwendung in den Vordergrund, doch es gibt auch voll ausgestattete mobile Wallets für Poweruser. Um den Download und das Speichern großer Datenmengen zu vermeiden, rufen die meisten mobilen Wallets Informationen von entfernten Servern ab. Das schränkt ihre Privatsphäre ein, weil Drittparteien so Informationen über ihre Bitcoin-Adressen und Kontostände erhalten.
Web-Wallet
Der Zugriff auf Web-Wallets erfolgt über den Webbrowser, und die Benutzer-Wallets liegen auf den Servern einer dritten Partei. Dies ähnelt Webmail, da man vollständig von Servern eines Drittanbieters abhängig ist. Einige dieser Dienste arbeiten mit clientseitigem Code, der auf dem Browser des Benutzers ausgeführt wird, wodurch der Nutzer die Kontrolle über die Schlüssel behält. Die meisten stellen allerdings einen Kompromiss dar, bei dem die Kontrolle über die Schlüssel der Nutzer übernommen wird, um eine einfache Nutzung zu ermöglichen. Es ist nicht empfehlenswert, größere Mengen an Bitcoin auf Systemen von Drittanbietern zu speichern.
Hardwarebasierte Wallets
Hardwarebasierte Wallets sind Geräte, die eine sichere eigenständige Bitcoin-Wallet auf spezieller Hardware betreiben. Sie werden per USB über einen Webbrowser am Desktop gesteuert oder per Near Field Communication (NFC) von einem mobilen Gerät aus. Auch der Einsatz einer Kamera und von QR-Codes ist möglich. Da alle Bitcoin-bezogenen Operationen auf dieser speziellen Hardware abgewickelt werden, betrachtet man diese Wallets als besonders sicher und als geeignet zur Speicherung großer Mengen an Bitcoins. Allerdings müssen diese »Hardware-Wallets« mit einer vollwertigen Wallet verbunden werden, um Transaktionen senden und empfangen zu können, und die Sicherheit und die Privatsphäre dieser Wallet bestimmt den Grad an Sicherheit und Privatsphäre, die der Nutzer der Hardware-Wallet genießt.
Eine andere Möglichkeit der Kategorisierung von Bitcoin-Wallets ist ihr Grad an Autonomie und wie sie mit dem Bitcoin-Netzwerk interagieren:
Full Node
Ein vollwertiger Client, oder kurz eine Full Node (also ein »vollwertiger Knoten«), ist ein Programm, das die gesamte Historie aller Bitcoin-Transaktionen (jede Transaktion jedes Nutzers) validiert. Optional können Full Nodes bereits validierte Daten vorhalten und auch für andere Bitcoin-Programme (auf dem gleichen Computer oder über das Internet) bereitstellen. Ein Full-Node-Client benötigt einiges an Ressourcen (pro Tage eine Stunde Video-Streaming zu schauen entspricht etwa den Bitcoin-Transaktionen an einem Tag), bietet aber vollständige Autonomie und die unabhängige Verifikation von Transaktionen.
Leichtgewichtiger Client
Ein »leichtgewichtiger« (Lightweight) Client, auch bekannt als SPV-Client (Simple Payment Verification), stellt die Verbindung zu einer Full Node oder einem entfernten Server her, um auf die Bitcoin-Transaktionsdaten zuzugreifen. Er speichert die Wallet des Nutzers aber lokal ab und kann unabhängig Transaktionen erzeugen, validieren und übertragen.
API-Client
Ein API-Client interagiert mit Bitcoins über ein System eines Drittanbieters mithilfe von APIs (Application Programming Interfaces), statt eine direkte Verbindung mit dem Bitcoin-Netzwerk herzustellen. Die Wallet kann beim Nutzer oder auf den Servern des Fremdanbieters liegen, doch der Client vertraut dem entfernten Server, dass korrekte Informationen geliefert werden und die Privatsphäre geschützt wird.
Bitcoin ist ein sogenanntes Peer-to-Peer-Netzwerk (P2P), d.h. ein Netzwerk gleichberechtigter Teilnehmer. Full Nodes bilden die Peers: Jeder Peer validiert eigenständig jede bestätigte Transaktion und kann seinen Nutzern autoritative Daten bereitstellen. Lightweight-Wallets und andere Software sind Clients: Jeder Client ist von einem oder mehreren Peers abhängig, die ihn mit gültigen Daten versorgen. Bitcoin-Clients können eine sekundäre Validierung einiger empfangener Daten vornehmen und Verbindungen zu mehreren Peers herstellen, um die Abhängigkeit von der Integrität eines einzelnen Peers zu reduzieren, doch letztlich hängt die Sicherheit des Clients von der Integrität seiner Peers ab.
Ein sehr wichtiger weiterer Aspekt ist die Frage, wer die Schlüssel kontrolliert. Wie Sie in den folgenden Kapiteln noch sehen werden, wird der Zugriff auf Bitcoins durch »private Schlüssel« kontrolliert, die wie sehr lange PINs aussehen. Wenn nur Sie die Kontrolle über diese privaten Schlüssel haben, kontrollieren Sie auch Ihre Bitcoins. Haben Sie diese Kontrolle nicht, werden Ihre Bitcoins von einer dritten Partei verwaltet, die letztlich Ihr Guthaben in Ihrem Namen verwaltet. Basierend auf der Kontrolle, lässt sich Software zur Schlüsselverwaltung in zwei wesentliche Kategorien unterteilen: Wallets, bei denen Sie Schlüssel und Guthaben kontrollieren, sowie Treuhänder, bei denen eine Drittpartei die Schlüssel kontrolliert. Um diesen Punkt zu unterstreichen, hat Andreas den Ausspruch geprägt: Deine Schlüssel, deine Coins. Nicht deine Schlüssel, nicht deine Coins.
Kombiniert man diese Kategorien, fallen viele Bitcoin-Wallets in nur wenige Gruppen, von denen die gängigsten der Desktop-Full-Client (Sie kontrollieren die Schlüssel), die mobile leichtgewichtige Wallet (Sie kontrollieren die Schlüssel) und die Web-Wallet eines Fremdanbieters (Sie kontrollieren die Schlüssel nicht) sind. Die Grenzen zwischen den verschiedenen Kategorien sind oft etwas unscharf, weil viele Wallets auf mehreren Plattformen laufen und mit dem Netzwerk auf unterschiedlichen Wegen kommunizieren können.
Alice ist keine technisch versierte Nutzerin und hat erst jüngst über ihren Freund Joe von Bitcoin gehört. Während einer Party schwärmt Joe mal wieder von Bitcoin und bietet eine Demonstration an. Neugierig fragt Alice, wie sie mit Bitcoin beginnen kann. Joe hält eine mobile Wallet für neue Nutzer für die beste Möglichkeit und empfiehlt einige seiner Lieblings-Wallets. Alice lädt sich eine von Joes Empfehlungen herunter und installiert sie auf ihrem Telefon.
Während Alice ihre Wallet-Anwendung zum ersten Mal ausführt, wählt sie die Option zur Einrichtung einer neuen Wallet. Da die von ihr gewählte Wallet eine selbstverwaltete Wallet ist (noncustodial), kann Alice (und nur Alice) die Schlüssel kontrollieren. Daher muss sie auch für die Sicherung der Schlüssel sorgen, denn der Verlust der Schlüssel bedeutet den Verlust des Zugriffs auf ihre Bitcoins. Um ihr das zu erleichtern, erzeugt ihre Wallet einen Wiederherstellungscode (Recovery Code), mit dessen Hilfe sie ihre Wallet wiederherstellen kann.
Die meisten modernen selbstverwalteten Bitcoin-Wallets stellen ihren Nutzerinnen und Nutzern zur Datensicherung einen Wiederherstellungscode zur Verfügung. Dieser besteht üblicherweise aus von der Software zufällig gewählten Zahlen, Buchstaben oder Wörtern und dient als Basis für die von der Wallet generierten Schlüssel. Beispiele finden Sie in Tabelle 1-1.
Tabelle 1-1: Beispiele für Wiederherstellungscodes
Wallet
Wiederherstellungscode
BlueWallet
(1) media (2) suspect (3) effort (4) dish (5) album (6) shaft (7) price (8) junk (9) pizza (10) situate (11) oyster (12) rib
Electrum
nephew dog crane clever quantum crazy purse traffic repeat fruit old clutch
Muun
LAFV TZUN V27E NU4D WPF4 BRJ4 ELLP BNFL
Ein Wiederherstellungscode wird manchmal auch Mnemonik oder mnemonischer Ausdruck genannt. Das deutet an, dass man den Ausdruck auswendig lernen soll, doch ihn auf Papier festzuhalten, scheint zuverlässiger zu sein als das Gedächtnis der meisten Menschen. Ein anderer Begriff ist Seed-Phrase, da die Phrase die Eingabe (die Saat, engl. Seed) für die Funktion bildet, die alle Schlüssel der Wallet generiert.
Wenn etwas mit Alice’ Wallet geschieht, kann sie eine neue Kopie der Wallet-Software herunterladen und den Wiederherstellungscode eingeben, um die Wallet-Datenbank mit allen jemals gesendeten oder empfangenen Onchain-Transaktionen wiederherzustellen. Allerdings kann die Wiederherstellung über den Wiederherstellungscode nicht die zusätzlichen Daten wiederherstellen, die Alice in ihre Wallet eingegeben hat, etwa Labels für bestimmte Adressen oder Transaktionen. Der Verlust der Metadaten ist nicht so tragisch wie der Verlust von Guthaben, kann für sich genommen aber Folgen haben. Stellen Sie sich einen Kontoauszug oder eine Kreditkartenabrechnung vor, bei denen alle Angaben zu den Zahlungen ausradiert sind. Um den Verlust von Metadaten zu verhindern, bieten viele Wallets neben Wiederherstellungscodes noch zusätzliche Backup-Möglichkeiten an.
Für einige Wallets ist die Möglichkeit zusätzlicher Backups heutzutage sogar noch wichtiger. Viele Bitcoin-Zahlungen erfolgen mittlerweile offchain, d. h., dass nicht jede Zahlung in der öffentlichen Blockchain gespeichert wird. Neben anderen Vorteilen reduziert das die Kosten für den Nutzer und verbessert seine Privatsphäre, doch Mechanismen wie Wiederherstellungscodes, die auf Onchain-Daten angewiesen sind, können nicht garantieren, dass alle Bitcoins des Nutzers wiederhergestellt werden. Bei Anwendungen mit Offchain-Unterstützung ist es wichtig, die Wallet-Datenbank häufig zu sichern.
Beachten Sie, dass viele neue mobile Wallets beim ersten Empfang von Geldmitteln noch einmal prüfen, ob Sie den Wiederherstellungscode wirklich notiert haben. Das reicht von einem einfachen Prompt bis zur händischen Eingabe des Codes durch den Nutzer.
Viele Wallets fordern zur erneuten Eingabe des Wiederherstellungscodes auf, doch es gibt auch viele Malware-Anwendungen, die das Design einer Wallet nachahmen und versuchen, Sie zur Eingabe des Wiederherstellungscodes zu bewegen. Der Code wird dann an den Malware-Entwickler weitergeleitet, damit dieser Ihr Guthaben stehlen kann. Das ist das Gegenstück zu den Phishing-Websites, die versuchen, Ihr Bankpasswort zu stehlen. Die meisten Wallets fragen den Wiederherstellungscode nur bei der Ersteinrichtung (bevor Sie Bitcoins empfangen haben) und bei der Wiederherstellung (wenn Sie keinen Zugang mehr zu Ihrer ursprünglichen Wallet haben) ab. Fragt die Anwendung zu einem anderen Zeitpunkt den Wiederherstellungscode ab, sollten Sie sich mit einem Experten beraten, um nicht Opfer eines Phishing-Angriffs zu werden.
Alice ist nun bereit, Zahlungen zu empfangen. Ihre Wallet-Anwendung hat einen zufälligen privaten Schlüssel erzeugt (der in »Private Schlüssel« auf Seite 81 ausführlicher beschrieben wird), zusammen mit der zugehörigen Bitcoin-Adresse. An diesem Punkt ist ihre Bitcoin-Adresse dem Bitcoin-Netzwerk nicht bekannt und nirgendwo im Bitcoin-System »registriert«. Ihre Bitcoin-Adresse ist einfach eine zu einem Schlüssel gehörende Zeichenfolge, mit deren Hilfe sie den Zugriff auf ihre Gelder kontrollieren kann. Sie wurde von ihrer Wallet unabhängig generiert, ohne sich bei irgendeinem Dienst registrieren oder eine Referenz erzeugen zu müssen. Die Adressen werden durch die Wallet generiert, und zwar ohne Bezug zu oder Registrierung bei einem Dienst.
Es gibt eine Vielzahl von Bitcoin-Adressen und Rechnungsformaten. Adressen und Rechnungen können mit anderen Bitcoin-Nutzenden geteilt werden, um Bitcoins direkt an ihre Wallet zu senden. Sie können eine Adresse oder Rechnung mit anderen Menschen teilen, ohne sich um die Sicherheit Ihrer Bitcoins Sorgen machen zu müssen. Im Gegensatz zu einer Kontonummer kann niemand Geld von Ihrer Wallet abheben, der Ihre Bitcoin-Adressen kennt. Alle Ausgaben müssen durch Sie veranlasst werden. Geben Sie die gleiche Adresse aber an zwei Personen weiter, können diese sehen, wie viele Bitcoins Ihnen die andere Person gesendet hat. Machen Sie Ihre Adresse öffentlich, kann jeder sehen, wie viele Bitcoins andere an diese Adresse geschickt haben. Um Ihre Privatsphäre zu schützen, sollten Sie bei jeder Zahlung eine neue Rechnung mit einer neuen Adresse generieren.
Alice verwendet den Receive-Button, der einen QR-Code ausgibt, wie in Abbildung 1-1 zu sehen.
Abbildung 1-1: Alice nutzt die Empfangsseite ihrer mobilen Bitcoin-Wallet und gibt ihre Adresse als QR-Code aus.
Der QR-Code ist das Quadrat mit einem Muster aus schwarzen und weißen Punkten. Er funktioniert ähnlich wie ein Barcode und enthält die Informationen in einem Format, das von Joes Smartphone-Kamera gescannt werden kann.
Alle Geldmittel, die Sie an die Adressen in diesem Buch senden, sind verloren. Wenn Sie testweise Bitcoins senden wollen, könnten Sie überlegen, etwas an eine Bitcoins akzeptierende Hilfsorganisation zu spenden.
Der erste Schritt besteht darin, sich einige Bitcoins zu beschaffen.
Bitcoin-Transaktionen sind unumkehrbar, während die meisten elektronischen Zahlungsnetzwerke wie Kreditkarten, EC-Karten, PayPal und Banküberweisungen umkehrbar sind. Für jemanden, der Bitcoins verkauft, birgt dieser Unterschied das sehr hohe Risiko, dass ein Käufer eine elektronische Zahlung wieder rückgängig macht, nachdem er die Bitcoins erhalten hat, und auf diese Weise den Verkäufer betrügt. Um dieses Risiko zu minimieren, verlangen Unternehmen, die »normales« Geld gegen Bitcoin tauschen, üblicherweise eine Überprüfung der Identität sowie der Kreditwürdigkeit, was mehrere Tage oder sogar Wochen dauern kann. Für Sie als neuen Nutzer bedeutet das, dass Sie Bitcoins nicht einfach direkt über eine Kreditkarte kaufen können. Mit ein wenig Geduld und kreativem Denken ist das aber auch nicht nötig.
Hier einige Möglichkeiten, um als neuer Nutzer an Bitcoins zu gelangen:
Finden Sie einen Freund oder eine Freundin, der oder die Bitcoins besitzt, und kaufen Sie direkt bei ihm oder ihr. Viele Bitcoin-Nutzer haben so angefangen. Diese Methode ist die einfachste. Eine Möglichkeit, Menschen mit Bitcoins kennenzulernen, bieten lokale Bitcoin-Meet-ups, die auf
Meetup.com
(
https://meetup.com
) aufgeführt sind.
Erwerben Sie Bitcoins, indem Sie ein Produkt oder einen Dienst für Bitcoin anbieten. Wenn Sie Entwicklerin sind, verkaufen Sie Ihre Programmierkenntnisse. Sind Sie Friseur, schneiden Sie Haare für Bitcoin.
Nutzen Sie einen Bitcoin-Automaten
2
in Ihrer Stadt. Ein Bitcoin-Automat ist ein Gerät, das Bargeld akzeptiert und dafür Bitcoins an die Bitcoin-Wallet auf Ihrem Smartphone schickt.
Verwenden Sie eine Bitcoin-Börse in Kombination mit Ihrem Bankkonto. In vielen Ländern gibt es mittlerweile Börsen, die einen Markt für Käufer und Verkäufer bieten, um Bitcoins gegen lokale Währungen zu tauschen. Wechselkursverzeichnisdienste wie BitcoinAverage (
https://bitcoinaverage.com
) bieten häufig Übersichten mit Bitcoin-Börsen für verschiedene Währungen an.
Ein Vorteil von Bitcoin gegenüber anderen Zahlungssystemen besteht darin, dass dieses System den Nutzenden (wenn man es richtig einsetzt) wesentlich mehr Privatsphäre bietet. Um Bitcoins zu kaufen, zu besitzen oder auszugeben, müssen Sie keine sensiblen und sie persönlich identifizierbaren Informationen an Dritte weitergeben. Wo sich allerdings Bitcoin und traditionelle Systeme begegnen, etwa auf Börsen, gelten häufig nationale und internationale Bestimmungen. Um Bitcoin in Ihre nationale Währung zu tauschen, müssen Sie häufig Ihre Identität nachweisen und Bankdaten angeben. Nutzende sollten sich dessen bewusst sein, dass, sobald eine Bitcoin-Adresse mit einer Identität verknüpft ist, auch alle mit ihr verknüpften Transaktionen leicht identifiziert und verfolgt werden können. Das ist einer der Gründe dafür, dass viele Nutzer dedizierte Börsen-Accounts vorhalten, die nicht mit ihren Wallets verknüpft sind.
Alice wurde von einem Freund in Bitcoin eingeführt, für sie ist es also einfach, sich ihre ersten Bitcoins zu beschaffen. Wir wollen uns nun ansehen, wie sie Bitcoins von ihrem Freund Joe kauft und wie Joe diese Bitcoins an ihre Wallet sendet.
Bevor Alice Bitcoins von Joe kaufen kann, müssen beide sich auf einen Wechselkurs zwischen Bitcoin und US-Dollar einigen. Das führt uns zur üblichen Frage von Bitcoin-Einsteigern: »Wer legt den Bitcoin-Preis fest?« Die kurze Antwort lautet, dass der Markt den Preis festlegt.
Für Bitcoin gilt, wie für die meisten anderen Währungen auch, ein freier Wechselkurs. Das bedeutet, dass der Wert des Bitcoins gegenüber anderen Währungen gemäß Angebot und Nachfrage an der jeweiligen Börse schwankt. Zum Beispiel wird der »Preis« des Bitcoins in US-Dollar an jeder Börse basierend auf dem letzten Trade von Bitcoin und US-Dollar berechnet. Daher neigt der Preis dazu, sich ständig zu ändern. Ein Preisermittlungsdienst fasst die Preise verschiedener Börsen zusammen und berechnet einen nach Volumen gewichteten Mittelwert, der einen relativ realistischen Wechselkurs für ein bestimmtes Handelspaar (z.B. BTC/USD) darstellt.
Es gibt Hunderte von Anwendungen und Websites, die die aktuellen Wechselkurse zur Verfügung stellen. Hier einige der beliebtesten:
Bitcoin Average (https://bitcoinaverage.com)
Eine Site, die eine einfache Übersicht des nach Volumen gewichteten Durchschnitts für jede Währung enthält.
CoinCap (https://coincap.io)
Bietet eine Auflistung von Marktkapitalisierung und Wechselkursen Hunderter Kryptowährungen einschließlich Bitcoin.
Chicago Mercantile Exchange Bitcoin Reference Rate (https://oreil.ly/ACieC)
Referenzwert, der als institutionelle und vertragliche Referenz dienen kann. Wird als Teil des Investment-Datenfeeds von der CME zur Verfügung gestellt.
Neben den verschiedenen Sites und Anwendungen wandeln auch einige Bitcoin-Wallets zwischen Bitcoin und anderen Währungen um.
Alice hat sich entschieden, 0,001 Bitcoin zu kaufen. Nachdem sie und Joe einen Wechselkurs vereinbart haben, gibt sie Joe den Betrag in bar, öffnet ihre mobile Wallet und wählt Receive. Daraufhin erscheint ein QR-Code mit Alice’ erster Bitcoin-Adresse.
Joe wählt nun Send auf seiner Smartphone-Wallet und öffnet den QR-Code-Scanner. Damit kann Joe den Code mit der Smartphone-Kamera scannen, statt Alice’ doch recht lange Bitcoin-Adresse eingeben zu müssen.
Bei Joe erscheint jetzt Alice’ Bitcoin-Adresse als Empfänger. Joe gibt den Betrag von 0,001 Bitcoin (BTC) ein (siehe Abbildung 1-2). Einige Wallets können den Betrag auch in einer anderen Stückelung anzeigen: 0,001 BTC ist ein Millibitcoin (mBTC) oder 100.000 Satoshis (Sats).
Ein paar Wallets empfehlen Joe, die Transaktion mit einem Label zu versehen. Ist das der Fall, gibt Joe »Alice« ein. In einigen Wochen oder Monaten hilft das Joe, sich daran zu erinnern, warum er diese 0,001 Bitcoin gesendet hat. Manche Wallets fragen Joe auch nach den Gebühren. Je nach Wallet und wie die Transaktion gesendet wird, wird Joe aufgefordert, einen Gebührensatz anzugeben, oder man schlägt ihm eine Gebühr – oder einen Gebührensatz – vor. Je höher die Transaktionsgebühr, desto schneller wird die Transaktion bestätigt (siehe »Bestätigungen« auf Seite 40).
Abbildung 1-2: Bitcoin-Wallet-Send-Seite
Joe überprüft sorgfältig seine Eingaben, weil er Geld überweisen möchte und Fehler nicht rückgängig gemacht werden können. Nachdem er alles ein weiteres Mal nachkontrolliert hat, drückt er auf Send, um die Transaktion zu starten. Joes mobile Bitcoin-Wallet erzeugt eine Transaktion, die 0,001 BTC an die von Alice angegebene Adresse überweist. Sie bedient sich dabei aus Joes Wallet und signiert die Transaktion mit Joes privatem Schlüssel. Das teilt dem Bitcoin-Netzwerk mit, dass Joe den Transfer dieser Summe an Alice’ neue Adresse autorisiert hat. Da die Transaktion über das Peer-to-Peer-Protokoll übertragen wird, breitet sie sich im Bitcoin-Netzwerk schnell aus. In weniger als einer Sekunde haben die meisten der gut angebundenen Netzwerkknoten die Transaktion empfangen und sehen Alice’ Adresse zum ersten Mal.
Währenddessen »horcht« Alice’ Wallet fortlaufend auf die im Bitcoin-Netzwerk veröffentlichten Transaktionen und sucht nach Adressen, die zu ihrer Wallet passen. Einige Sekunden nachdem Joes Wallet die Transaktion angestoßen hat, zeigt Alice’ Wallet an, dass sie 0,001 BTC empfängt.
Bestätigungen
Zuerst zeigt Alice’ Adresse an, dass die Transaktion von Joe »unbestätigt« ist. Das bedeutet, dass die Transaktion im Netzwerk verbreitet wurde, aber noch nicht im Bitcoin-Kassenbuch, auch bekannt als Blockchain, festgehalten wurde. Um bestätigt zu werden, muss eine Transaktion in einen Block eingetragen und in die Blockchain aufgenommen werden, was im Schnitt alle zehn Minuten passiert. In der Finanzwelt wird das traditionell als Clearing bezeichnet. Details zu Propagation, Validierung und Clearing (Bestätigung) von Bitcoin-Transaktionen finden Sie in Kapitel 12.
Alice ist nun stolze Besitzerin von 0,001 BTC, die sie jetzt ausgeben kann. In den nächsten Tagen kauft Alice weitere Bitcoins an einem Automaten und an einer Börse. Im nächsten Kapitel wird sie zum ersten Mal etwas mit Bitcoins kaufen, und wir sehen uns die zugrunde liegenden Transaktions- und Propagationstechniken im Detail an.
Das Bitcoin-System basiert, anders als die traditionellen Bank- und Zahlungssysteme, auf dezentralisiertem Vertrauen. Anstelle einer zentralen Vertrauensinstanz kann bei Bitcoin jeder ein Programm auf seinem Computer ausführen, um den korrekten Betrieb jedes Aspekts des Bitcoin-Systems zu verifizieren. In diesem Kapitel verschaffen wir uns erst mal einen Überblick über Bitcoin im Allgemeinen. Wir verfolgen eine einzelne Transaktion auf dem Weg durch das Bitcoin-System und sehen, wie sie schließlich in der Blockchain eingetragen wird, dem verteilten Kassenbuch für alle Transaktionen. Die nachfolgenden Kapitel tauchen dann tiefer ein in die Technik hinter den Transaktionen, dem Netzwerk und dem Mining.
Das Bitcoin-System besteht aus Benutzerinnen und Benutzern mit Wallets, die Schlüssel enthalten, im Netzwerk propagierten Transaktionen sowie Minern, die (durch konkurrierende Berechnungen) die Blockchain erzeugen, die das verbindliche Kassenbuch für alle Transaktionen darstellt.
Jedes Beispiel in diesem Kapitel basiert auf einer realen Transaktion, die im Bitcoin-Netzwerk durchgeführt wurde. Sie simuliert die Interaktion zwischen den Nutzern (Joe, Alice, Bob und Gopesh), indem sie Gelder von einer Wallet zu einer anderen sendet. Während wir eine Transaktion durch das Bitcoin-Netzwerk verfolgen, nutzen wir eine Blockchain-Explorer-Site, um jeden Schritt zu visualisieren. Ein Blockchain-Explorer ist eine Webanwendung, die als Bitcoin-Suchmaschine fungiert, d. h., sie erlaubt die Suche nach Adressen, Transaktionen und Blöcken und zeigt die Beziehung und den Fluss zwischen ihnen auf.
Beliebte Blockchain-Explorer sind:
Blockstream Explorer (
https://blockstream.info
)
Mempool.Space (
https://mempool.space
)
BlockCypher Explorer (
https://live.blockcypher.com
)
Jeder verfügt über eine Suchfunktion, mit deren Hilfe Sie eine Bitcoin-Adresse, einen Transaktions-Hash, eine Blocknummer oder einen Block-Hash eingeben können und die dazugehörigen Informationen aus dem Bitcoin-Netzwerk abgerufen werden. Für jedes Beispiel einer Transaktion oder eines Blocks stellen wir eine URL bereit, sodass Sie diese Informationen selbst abrufen und untersuchen können.
Block-Explorer und Privatsphäre
Die Suche nach Informationen in einem Block-Explorer zeigt dessen Betreiber, dass Sie an diesen Informationen interessiert sind. Das erlaubt ihm, diese Informationen mit Ihrer IP-Adresse, Browserdetails, früheren Suchen und anderen identifizierbaren Informationen zu verknüpfen. Wenn Sie sich die Transaktionen in diesem Buch mit einem Block-Explorer ansehen, wird der Betreiber sich denken können, dass Sie etwas über Bitcoin lernen, was kein Problem sein sollte. Doch wenn Sie Ihre eigenen Transaktionen anschauen, kann der Betreiber ermitteln, wie viele Bitcoins Sie empfangen und ausgegeben haben und wie viele Sie gerade besitzen.
Alice, die wir im vorherigen Kapitel kennengelernt haben, ist eine neue Nutzerin, die gerade erst ihre ersten Bitcoins erworben hat. In »Ihr erster Bitcoin« auf Seite 36 traf sich Alice mit ihrem Freund Joe, um Bitcoins gegen etwas Bargeld einzutauschen. Danach hat Alice noch weitere Bitcoins gekauft. Alice will nun ihre erste »Einzelhandelstransaktion« durchführen, d. h., sie möchte eine Premium-Podcast-Episode in Bobs Onlineshop erwerben.
Bobs Webshop hat jüngst damit begonnen, Bitcoin-Zahlungen zu akzeptieren, indem er seine Website um eine Bitcoin-Option erweitert hat. Die Preise in Bobs Shop sind in der lokalen Währung (US-Dollar) aufgeführt, doch auf der Bezahlseite gibt es die Möglichkeit, in Dollar oder Bitcoin zu bezahlen.
Alice findet die gewünschte Podcast-Episode und wechselt zur Bezahlseite. Beim Bezahlen wird Alice neben den üblichen Optionen auch die Bezahlung in Bitcoin angeboten. Die Bezahlseite gibt den Preis in US-Dollar und in Bitcoin (BTC) zum aktuellen Wechselkurs an.
Bobs E-Commerce-System erzeugt automatisch einen QR-Code, der eine Zahlungsanforderung enthält (siehe Abbildung 2-1).
Abbildung 2-1: QR-Code für die Zahlungsanforderung
Im Gegensatz zu einem QR-Code, der einfach nur eine Bitcoin-Zieladresse enthält, besteht eine Zahlungsanforderung aus einer QR-codierten URL, die die Zieladresse,