DEV Community

Cover image for Blockchain und Bitcoin erklärt in 6 Episoden — Episode 3
Christian Ahrweiler
Christian Ahrweiler

Posted on Originally published at Medium

Blockchain und Bitcoin erklärt in 6 Episoden — Episode 3

Episode 3: Bitcoin als Anwendung der BlockchainEpisode 3: Bitcoin als Anwendung der BlockchainIn den ersten beiden Episoden haben wir erklärt, wie eine Blockchain aufgebaut, abgesichert und auf vielen unabhängigen Nodes gespeichert wird.Jetzt betrachten wir eine konkrete Anwendung dieser Technik: Bitcoin.

Bitcoin besitzt eine eigene Blockchain, ein eigenes Netzwerk und eigene Regeln.

In den Datenblöcken dieser Blockchain werden Bitcoin-Transaktionen gespeichert.

Was ist eine Bitcoin-Wallet?

Um Bitcoin zu verwenden, benötigt man eine Wallet — so etwas wie eine Geldbörse oder ein Portemonnaie.

Eine Wallet ist eine App oder ein kleines Gerät, mit dem man Bitcoin empfangen, aufbewahren und versenden kann.

Sie zeigt den verfügbaren Betrag an und bietet ähnliche Grundfunktionen wie eine Banking-App:

  • Bitcoin empfangen
  • verfügbaren Betrag anzeigen
  • Bitcoin versenden
  • bisherige Zahlungen anzeigen Für unsere Erklärung können wir uns zunächst vorstellen, dass die Bitcoin direkt in der Wallet liegen.

Anna besitzt in ihrer Wallet 1,0 Bitcoin und möchte davon 0,3 Bitcoin an Anne senden.

Annas Wallet
Verfügbar 1,0 Bitcoin
Senden 0,3 Bitcoin
Empfänger AnneAnna bestätigt die Zahlung. Ihre Wallet erstellt daraus eine Bitcoin-Transaktion und sendet sie an das Bitcoin-Netzwerk.

Wie empfängt eine Wallet Bitcoin?

Jede Wallet kann eine Empfangsadresse erzeugen.

Diese Adresse kann wie eine Kontonummer weitergegeben werden. Wer Bitcoin an Anna senden möchte, trägt Annas Empfangsadresse als Ziel der Transaktion ein.

Zahlung an Anna
Empfänger Annas Bitcoin-Adresse
Betrag 1,0 BitcoinDie Adresse enthält keinen Namen und verrät nicht automatisch, wem sie gehört.

Anna kann außerdem mehrere Empfangsadressen verwenden. Die Wallet verwaltet diese Adressen und fasst die zugehörigen Beträge zu einem angezeigten Guthaben zusammen.

Wo befinden sich die Bitcoin tatsächlich?

Die Vorstellung, dass die Bitcoin direkt in der Wallet liegen, ist hilfreich — technisch stimmt sie aber nicht ganz.

Auch eine Banking-App enthält nicht die Euros auf einem Bankkonto. Sie zeigt lediglich einen Kontostand an und ermöglicht den Zugriff darauf.

Bei Bitcoin gibt es keine zentrale Bank. Die Informationen über die verfügbaren Beträge stehen in der Bitcoin-Blockchain.

Die Wallet liest diese Informationen und zeigt Anna den Betrag an, über den sie verfügen kann.

Zusätzlich verwaltet die Wallet eine geheime Information, mit der sie eine Zahlung für Anna digital freigeben kann.

Wie diese technische Freigabe funktioniert, ist für den weiteren Ablauf zunächst nicht wichtig. Entscheidend ist:

  • Nur Annas Wallet kann ihre Bitcoin freigeben.
  • Die geheime Information wird dabei nicht veröffentlicht.
  • Andere Teilnehmer können trotzdem prüfen, ob die Freigabe gültig ist.
  • Eine nachträgliche Veränderung der Zahlung würde die Freigabe ungültig machen. Die Wallet enthält also nicht die Bitcoin selbst. Sie verwaltet den Zugang zu den Beträgen, die in der Blockchain verzeichnet sind.

Wie speichert Bitcoin einen Betrag?

Die Bitcoin-Blockchain enthält keine einfache Liste mit Kontoständen:

Kontostände
Anna 1,0 Bitcoin
Anne 0,5 BitcoinSie enthält stattdessen Transaktionen.

Eine frühere Transaktion könnte festgelegt haben, dass Anna über 1,0 Bitcoin verfügen darf:

Frühere Transaktion
Verfügbarer Betrag 1,0 Bitcoin
Verfügbar für AnnaSolange Anna diesen Betrag nicht weitergegeben hat, gilt er als noch nicht ausgegeben.

Bitcoin bezeichnet einen solchen verfügbaren Betrag als Unspent Transaction Output, kurz UTXO.

Das bedeutet einfach:

*Ein UTXO ist ein Betrag aus einer früheren Transaktion, der noch nicht weitergegeben wurde.*Die Wallet findet die verfügbaren Beträge, die Anna verwenden kann, addiert sie und zeigt das Ergebnis als Guthaben an.

Anna bezahlt Anne

Anna möchte von ihrem verfügbaren Betrag über 1,0 Bitcoin insgesamt 0,3 Bitcoin an Anne senden.

Die Wallet erstellt dafür eine neue Transaktion.

Eine Bitcoin-Transaktion zieht nicht einfach 0,3 Bitcoin von einem gespeicherten Kontostand ab. Sie verwendet einen vorhandenen Betrag vollständig und erzeugt daraus neue verfügbare Beträge.

Neue Transaktion
Verwendet 1,0 Bitcoin von Anna
An Anne 0,3 Bitcoin
Zurück an Anna 0,6999 Bitcoin
Gebühr 0,0001 Bitcoin
Freigabe durch Annas WalletDer ursprüngliche Betrag von 1,0 Bitcoin gilt danach als ausgegeben.

Dafür entstehen zwei neue verfügbare Beträge:

Neue verfügbare Beträge
0,3 Bitcoin für Anne
0,6999 Bitcoin für AnnaDer Betrag, der wieder an Anna geht, wird als Wechselgeld bezeichnet.

Das ähnelt einer Barzahlung. Wer mit einem 10-Euro-Schein einen Artikel für 3 Euro bezahlt, verwendet den vollständigen Schein und erhält 7 Euro zurück.

Der kleine verbleibende Teil von 0,0001 Bitcoin ist die Transaktionsgebühr.

Die Wallet gibt die Transaktion frei

Bevor die Transaktion versendet wird, versieht die Wallet sie mit einer digitalen Freigabe.

Diese Freigabe gehört genau zu dieser Transaktion.

Würde nachträglich der Betrag oder der Empfänger verändert, wäre die Freigabe nicht mehr gültig.

Andere Teilnehmer können die Freigabe überprüfen, ohne Annas geheime Information zu kennen.

Für das Verständnis des weiteren Ablaufs reicht zunächst diese Feststellung:

*Annas Wallet kann eine Zahlung eindeutig freigeben, ohne ihre geheime Information zu veröffentlichen.*Wie das technisch möglich ist, erklären wir gesondert in Episode 5.

Die freigegebene Transaktion wird nun an das Bitcoin-Netzwerk gesendet.

Die Nodes prüfen die Transaktion

Die Nodes übernehmen Annas Transaktion nicht ungeprüft.

Sie kontrollieren unter anderem:

  • Existiert der verwendete Betrag?
  • Wurde dieser Betrag noch nicht ausgegeben?
  • Ist die digitale Freigabe gültig?
  • Entsprechen die neu erzeugten Beträge dem verwendeten Betrag?
  • Entspricht die Transaktion allen Regeln des Bitcoin-Netzwerks? Ist eine dieser Bedingungen nicht erfüllt, wird die Transaktion abgelehnt.

Ist die Transaktion gültig, speichert der Node sie zunächst als wartende Transaktion und gibt sie an weitere Nodes weiter.

Dadurch verbreitet sich die Transaktion im Bitcoin-Netzwerk.

Muss ein Node dafür die gesamte Blockchain durchsuchen?

Nein.

Wie in Episode 2 beschrieben, hat ein vollständig synchronisierter Node die Bitcoin-Blockchain bereits vom ersten Block an geprüft.

Während dieser Prüfung hat er eine aktuelle Liste aller noch nicht ausgegebenen Beträge aufgebaut.

Diese Liste wird UTXO-Set genannt.

Aktuell verfügbare Beträge
1,0 Bitcoin für Anna
0,5 Bitcoin für Anne
2,0 Bitcoin für einen weiteren BesitzerWenn Annas Transaktion eintrifft, muss der Node nicht erneut die vollständige Blockchain durchsuchen.

Er prüft im UTXO-Set, ob der verwendete Betrag von 1,0 Bitcoin noch verfügbar ist.

Wird Annas Transaktion später in die Blockchain aufgenommen, entfernt der Node den alten Betrag und trägt die neu entstandenen Beträge ein:

Vor der Transaktion
1,0 Bitcoin für AnnaNach der Transaktion
0,3 Bitcoin für Anne
0,6999 Bitcoin für AnnaDas UTXO-Set ist damit der aktuelle Stand, den ein Bitcoin-Node aus allen bisher geprüften Blöcken berechnet hat.

Genau deshalb kann ein bereinigter Node alte Blockdaten löschen und trotzdem weitere Transaktionen prüfen.

Wo wartet die Transaktion?

Eine gültige Transaktion ist noch nicht automatisch Teil der Bitcoin-Blockchain.

Zunächst wird sie in einem Speicher für wartende Transaktionen abgelegt.

Dieser Speicher wird Mempool genannt.

Jeder Node besitzt einen eigenen Mempool. Die darin enthaltenen Transaktionen können sich geringfügig unterscheiden, da sie zu verschiedenen Zeitpunkten bei den Nodes eintreffen.

Wartende Transaktionen
Anna sendet 0,3 Bitcoin an Anne
Paul sendet 0,1 Bitcoin an Maria
Robert sendet 0,5 Bitcoin an LisaDie Transaktionen sind bereits geprüft, befinden sich aber noch in keinem Block.

Wer stellt nun aus diesen wartenden Transaktionen den nächsten Block zusammen?

Die Miner

Diese Aufgabe übernehmen die Miner.

Ein Miner ist ein Teilnehmer des Bitcoin-Netzwerks, der aus wartenden Transaktionen einen möglichen neuen Block zusammenstellt.

Er wählt Transaktionen aus seinem Mempool aus und fasst sie zu einem Block zusammen.

Möglicher neuer Block
Vorheriger Hash Hash des letzten Bitcoin-Blocks
Transaktionen ausgewählte Transaktionen
Nonce noch nicht gefunden
Hash Bedingung noch nicht erfülltDieser Block ist zunächst nur ein Kandidat.

Damit er an die Bitcoin-Blockchain angehängt werden darf, muss sein Hash die aktuelle Proof-of-Work-Bedingung erfüllen.

Was bedeutet Mining?

Mining ist die Suche nach einer passenden Nonce für einen neuen Bitcoin-Block.

Die ausgewählten Transaktionen und die übrigen Angaben des Blocks stehen bereits fest. Nun wird die Nonce verändert und der Hash des Blocks so lange neu berechnet bis das Schwierigkeitsziel erfüllt ist (wie unsere 00-Bedingung aus Episode 1).

Mining
Nonce 1 Bedingung nicht erfüllt
Nonce 2 Bedingung nicht erfüllt
Nonce 3 Bedingung nicht erfüllt
Nonce 4 Bedingung nicht erfüllt

Nonce 8.245.912 Bedingung erfülltIn der echten Bitcoin-Blockchain ist die Bedingung sehr viel schwieriger. Weltweit wird deshalb eine gewaltige Anzahl verschiedener Möglichkeiten ausprobiert.

Alle beteiligten Miner arbeiten gleichzeitig an einem möglichen neuen Block.

Mining ist also nicht das Lösen einer komplizierten mathematischen Aufgabe. Es ist das sehr schnelle Ausprobieren vieler Möglichkeiten, bis sich zufällig ein Hash ergibt, der die festgelegte Bedingung erfüllt.

Warum dauert ein Block ungefähr zehn Minuten?

Je mehr Rechenleistung sich an der Suche beteiligt, desto schneller würde normalerweise eine passende Nonce gefunden.

Bitcoin passt deshalb regelmäßig die Schwierigkeit der Bedingung an.

Werden die Blöcke im Durchschnitt zu schnell gefunden, wird die Bedingung schwieriger. Werden sie zu langsam gefunden, wird sie leichter.

Dadurch wird langfristig durchschnittlich ungefähr alle zehn Minuten ein neuer Bitcoin-Block gefunden.

Ein einzelner Block kann trotzdem nach wenigen Sekunden oder erst nach deutlich mehr als zehn Minuten gefunden werden. Die Suche basiert auf Zufall.

Ein Miner findet einen gültigen Block

Findet ein Miner eine passende Nonce, sendet er den vollständigen Block an das Bitcoin-Netzwerk.

Die anderen Nodes übernehmen ihn nicht automatisch.

Jeder Node prüft selbst:

  • Verweist der Block auf den richtigen Vorgänger?
  • Ergibt sich aus dem Block tatsächlich der angegebene Hash?
  • Erfüllt der Hash die Proof-of-Work-Bedingung?
  • Sind alle enthaltenen Transaktionen gültig?
  • Wurde kein Betrag doppelt ausgegeben?
  • Entspricht der gesamte Block den Bitcoin-Regeln? Nur wenn alle Prüfungen erfolgreich sind, erkennt ein Node den Block als gültig an und fügt ihn seiner Kopie der Bitcoin-Blockchain hinzu.

Die enthaltenen Transaktionen werden anschließend aus dem Mempool entfernt und das UTXO-Set wird aktualisiert.

Miner können damit neue Blöcke vorschlagen. Sie können die Regeln der Blockchain aber nicht beliebig verändern.

Die unabhängigen Nodes entscheiden durch ihre Prüfung, ob ein veröffentlichter Block gültig ist.

Was bedeutet eine Bestätigung?

Sobald Annas Zahlung an Anne in einen gültigen Block aufgenommen wurde, besitzt sie eine Bestätigung.

Wird danach ein weiterer Block angehängt, besitzt die Transaktion zwei Bestätigungen.

Bestätigungen
Block mit Annas Transaktion 1 Bestätigung
Nächster Block 2 Bestätigungen
Noch ein Block 3 BestätigungenMit jedem nachfolgenden Block steigt der Proof of Work, der auf Annas Transaktion aufbaut.

Eine Bestätigung bedeutet also nicht, dass ein zentraler Dienst die Zahlung genehmigt hat.

Sie bedeutet, dass die Transaktion in einen gültigen Block aufgenommen wurde.

Weitere Bestätigungen zeigen, wie viele gültige Blöcke inzwischen darauf aufbauen.

Was speichert die Bitcoin-Blockchain?

Die Bitcoin-Blockchain speichert keine digitalen Münzen und keine einfachen Kontostände.

Sie speichert eine chronologische Kette gültiger Transaktionen.

Aus diesen Transaktionen berechnet jeder vollständige Node selbst, welche Beträge momentan noch nicht ausgegeben wurden.

Die Wallet zeigt diese Beträge an und ermöglicht ihrem Besitzer, sie weiterzugeben.

Die Nodes prüfen Transaktionen und Blöcke.

Die Miner stellen mögliche neue Blöcke zusammen und suchen durch Proof of Work nach einer passenden Nonce.

Zusammen entsteht ein Zahlungssystem ohne zentrale Bank und ohne einzelnen Betreiber der Datenbank.

Weitere Episoden

In Episode 4 betrachten wir die Geschichte, heutige Größe und Zukunft von Bitcoin — von Satoshi Nakamotos Whitepaper bis zur Begrenzung auf knapp 21 Millionen Bitcoin.Eine technische Frage haben wir dabei bewusst offengelassen:Wie kann eine Wallet eine Transaktion eindeutig freigeben, ohne ihre geheime Information zu veröffentlichen?Das erklären wir in Episode 5 anhand geheimer und öffentlicher Schlüssel sowie digitaler Signaturen. Wer diesen technischen Exkurs überspringen möchte, kann direkt bei Episode 6 weiterlesen: Wie Beaver Proof die Bitcoin-Blockchain für nachweisbare Zeitstempel verwendet.

Top comments (0)