Ich habe eine recht grundlegende Frage zum Thema Mining. Leider kann ich dazu aber keine Antwort finden.
Wie genau prüfen die Miner die Richtigkeit von Transaktionen? Es wird immer nur gesagt, dass die Miner die Transaktionen validieren, aber nie wird dieser Vorgang beschrieben.
Ich würde mich auf eine gute Erklärung freuen.
Im Endeffekt validieren nicht nur die Miner Transaktionen, sondern ein Großteil aller Nodes, d.h. Netzwerkteilnehmer.
Wenn du eine neue Transaktion über eine Node in das Netzwerk einspeist heißt das, dass diese an die direkt verbundenen Nodes weitergeleitet wird. Bevor sie wiederum von diesen an alle verbundenen Nodes weitergeleitet werden, wird die Transaktion validiert.
Eine invalide Transaktion schafft es also maximal bis zu einer Handvoll Nodes, von denen sie dann nicht weitergeleitet wird.
Zu deiner eigentlichen Frage.
Wenn Englisch für dich ok ist, kannst du das direkt im entsprechenden Kapitel von Mastering Bitcoin nachlesen:
https://www.oreilly.com/library/view/mastering-bitcoin/9781491902639/ch08.html#tx_verification
Dort steht eine Liste, was alles bei einer Transaktion geprüft wird.
Das Prinzip, wie die Transaktionen per PoW bestätigt werden ist mir bekannt. Mir ging es tatsächlich um eine Liste, wie sie in dem Link ausgeführt ist.
Bei einem Punkt bin ich mir aber noch unsicher. Wenn die Miner die Transaktionen auf die vorhandenen Inputs/Outputs prüfen müssen sie doch theoretisch die gesamte Blockchain prüfen. Oder kann man sich hier auf die Digitale Signatur mit den jeweiligen Schlüsseln verlassen und somit die Richtigkeit prüfen?
Ok, aber ich glaube du bringst trotzdem noch die Begriffe Validierung und Bestätigung durcheinander.
Wenn eine Transaktion letztendlich in einen Block aufgenommen wird, und anschließend noch weitere Blöcke angehängt werden, bekommt die Transaktion immer mehr Bestätigungen.
D.h. es wird immer sicherer, dass die Transaktion nicht doch noch aus der Blockchain verschwindet, weil sich eine parallel geminte Kette durchsetzt. Ein Zahlungsempfänger will sich aber sicher sein, dass das Geld endgültig gezahlt wurde, wenn er z.B. etwas dafür verkauft. Deshalb wartet man einige Bestätigungen ab.
Davor schon wird die Transaktion aber erst einmal über die Nodes im kompletten Netzwerk verteilt. Dabei wird die Transaktion immer wieder validiert, d.h. geprüft ob sie den aufgelisteten Regeln entspricht. Die Miner machen das am Ende mit ihrer Node natürlich auch nochmal.
Ich bin mir nicht sicher auf welchen dieser beiden Punkte in der Liste du dich hier beziehst.
-
Neither lists of inputs or outputs are empty.
→ Hier wird nur geprüft, dass in der Transaktion überhaupt Inputs und Outputs stehen. -
For each input, the referenced output must exist and cannot already be spent.
→ Jeder Input der Transaktion muss ein Output einer vergangenen Transaktion sein, der bisher noch nicht ausgegeben wurde, also ein „Unspent Transaction Output“ (UTXO). Auf gut Deutsch, du musst das Geld besitzen, was du ausgeben möchtest.
Für die Überprüfung wird allerdings nicht jedes Mal die gesamte Blockchain durchsucht. Stattdessen pflegt jede Node ein „UTXO Set“, in dem sich zu jedem Zeitpunkt alle aktuellen UTXOs befinden.
Du hast recht…die Begriffe Validierung und Bestätigung habe ich nicht aufmerksam eingesetzt ^^.
Mit dem Punkt hast du genau meine Frage beantwortet. Ich werde mir dann mal genauer den Nutzen vom UTXO Set ansehen.
Vielen Dank für die guten Antworten!
LG Paul