End-to-End-Bitcoin-Transaktionsfluss

Mein Verständnis der Bitcoin-Blockchain-Technologie, nachdem ich in den letzten Tagen einige Artikel durchgesehen habe. Ich bin mir nicht sicher, ob mein Verständnis zu 100% richtig ist. Ich schreibe, damit mich jemand korrigieren kann, was auch für andere Neulinge hilfreich sein wird.

Fall: A möchte 10 BTC an B senden 

  1. A hat eine Adresse erstellt, die ein Hash (SHA 256) aus mehreren Wörtern ist. Ähnlich für B. Dies ist der private Schlüssel ; Eigentumsprüfer des Bitcoin-Betrags. Unter Verwendung des privaten Schlüssels wird der öffentliche Schlüssel generiert. Wallet- Anwendungen bieten Seed-Wörter an, die private Adressen durch Hashing mit SHA256 generieren, sodass selbst bei Verlust des privaten Schlüssels diese von den geheimen Seed-Wörtern befreit werden können. Dieser öffentliche Schlüssel ist allen bekannt, aber der private Schlüssel ist geheim und darf nicht weitergegeben werden. Es ist nicht möglich, den privaten Schlüssel aus dem öffentlichen Schlüssel zu erhalten. Der private Schlüssel ist der mathematische Beweis dafür, dass A das Recht hat, einen bestimmten Betrag an BTC auszugeben. Dies beweist den Besitz von Geld. Let, irgendwie hat A jetzt mehr als 10 BTC.

  2. A sendet 10 BTC an den öffentlichen Schlüssel von B. Der öffentliche Schlüssel ist die „An-Adresse“ der Transaktion. Die Nachricht (A sendet 10 BTC an B) wird mit dem privaten Schlüssel von A signiert. Dies ist die digitale Signatur für die Transaktion. Diese Transaktionsnachricht wird an alle (die gesamten Blockchain-Netzwerkknoten) gesendet. Die digitale Signatur bestätigt, dass der echte Eigentümer die Transaktion erstellt hat.

  3. Die Miner werden diese Transaktion zusammen mit anderen ausstehenden Transaktionen auswählen und versuchen, den nächsten Block der Blockchain zu erstellen. Alle Transaktionen stehen allen offen. Für den beispielhaften Transaktionsfall validieren Miner die Transaktion, ob A wirklich mehr als 10 BTC hat, indem sie die vollständige Blockchain-Datenbank (alle abgeschlossenen Blöcke der Kette) überprüfen. Wenn nicht, wird die Transaktion abgelehnt und nicht zu dem Block hinzugefügt, den er versuchen wird, das Rätsel zu lösen.

  4. Die Miner validieren die Anzahl der Transaktionen aus den ausstehenden Transaktionen (die Transaktionen, die noch keinem Block in der Blockchain hinzugefügt wurden). 

  5. Unterschiedliche Miner können eine unterschiedliche Anzahl gültiger Transaktionen verwenden, um einen Block zu bilden. Aber der Miner, der das mathematische Rätsel gewinnt , sein erstellter Block wird als nächster Block zur Blockchain hinzugefügt. Dieses Puzzle soll Hash (SHA 256) gemäß dem aktuellen Schwierigkeitsgrad (19 führende Nullen des Hashs im Hex-Format) erhalten. Dies ist ein Trial-and-Error-Prozess, um den gewünschten Hash mit 19 Nullen zu erhalten. Die Hash-Ausgabefunktion sieht wie folgt aus - 

SHA256 (Zeitstempel + Hash des vorherigen Blocks + MarkleRootHash (alle gültigen Transaktionen in diesem Block) + Nonce)

Der Miner ändert den Nonce- Wert (ganzzahlige Zahl) jedes Mal, wenn er versucht, den gewünschten Hash gemäß dem oben genannten Hash-Generierungsformat zu erhalten. Es erfordert eine enorme Anzahl von Versuchen und daher eine enorme Rechenleistung, um das Rätsel zu lösen. Angenommen, ein Miner hat gerade Hash mit 19 Nullen erhalten. Beachten Sie, dass die Transaktion „A sendet 10 BTC an B“ gültig ist und in diesem Beispielblock existiert, dessen Hash gerade mit 19 führenden Nullen gefunden wurde. 

  1. Der Miner hat den gewünschten Hash mit einem glücklichen Nonce-Wert. Mit diesem Nonce-Wert kann jeder den ausgegebenen Hash mit 19 Nullen validieren; daher ist es der erfolgreiche Block. Dieser Nonce-Wert ist eigentlich der Proof-of-Work . Wenn die Mehrheit der Bergleute die Nonce validiert und die Arbeit erfolgreich macht, gewinnt dies an Konsens . Dann wird der Block der Blockchain-Datenbank hinzugefügt. 

  2. Da dieser Block die Transaktion „A sendet 10 BTC an B“ enthält. Auch diese Transaktion wird erfolgreich abgeschlossen. B bekommt 10 BTC. Das Eigentum an diesen 10 BTC liegt bei B, da B den privaten Schlüssel des öffentlichen Schlüssels hat, der als „An-Adresse“ der Beispieltransaktion verwendet wird. 

Antworten (1)

Im Großen und Ganzen richtig. Ein paar Kleinigkeiten stimmen nicht.

#1. Private Schlüssel sind einfach 256-Bit-Zahlen. Sie können durch einen zufälligen Prozess oder in modernen Wallets als Teil einer hierarchischen deterministischen Sequenz erstellt werden, in der jeder Schlüssel auf wiederholbare Weise aus einem Seed generiert wird. Siehe https://learnmeabitcoin.com/technical/hd-wallets . Außerdem ist die Wallet-Adresse nicht der öffentliche Schlüssel selbst – obwohl sie davon abgeleitet ist. Die oben verlinkte Seite erklärt dies auch.

#3. Eine Transaktion bezieht sich explizit auf vorangegangene Transaktionen – und diese werden auf ausreichende Deckung geprüft (nicht „die ganze Blockchain“). Die neue Transaktion wird sich auch mit etwaigen überschüssigen Mitteln befassen.

Ich muss immer noch wissen, wie Transaktionen von allen Nodes/Minern verifiziert werden? Zum Beispiel, wenn ein Miner absichtlich 100 Transaktionen durchführt und davon 1 Transaktion nicht gültig ist (Anfrage für mehr als das Guthaben eingegangen ist). Und er erreichte das gewünschte Haschisch. Mit dem Nonce-Wert können alle anderen Miner den Block validieren, um einen Konsens zu erreichen. Aber wie haben sich alle Miner darauf geeinigt, dass alle Transaktionen im hinzuzufügenden Block gültig sind?
Alle Transaktionen werden einzeln von Nodes validiert. Wenn ein Miner einen Block sendet, der eine ungültige Transaktion enthält, wird er von den Nodes zurückgewiesen. Tatsächlich werden ungültige Transaktionen nicht einmal im Netzwerk übertragen. Die Aufgabe der Validierung wird vom Bitcoin-Client erledigt, der auf allen Knoten läuft.
„1 Transaktion ist nicht gültig (Anfrage ist für mehr Betrag als das Guthaben eingegangen)“ Niemand außer dem Eigentümer verfolgt oder kümmert sich um Guthaben. Andere Knoten (Wallets, Miner usw.) kümmern sich nur darum, dass die einzelnen "Coins" (Transaktionseingaben) nicht bereits ausgegeben wurden und dass das Ausgabeskript (effektiv Eigentumsnachweis) erfüllt ist.