Wie und warum müssen wir eine Transaktion validieren?

Ich habe angefangen, einige Nachforschungen über das Bitcoin-Protokoll und die Blockchain anzustellen. Ich versuche, alle Abschnitte im Bitcoin-Whitepaper zu verstehen. Bisher konnte ich nicht verstehen, welchen Nutzen das Hinzufügen der Transaktions-Merkel-Baumwurzel zum Block-Header hat. Ja, ich weiß, dass es getan wird, um Platz zu sparen, wie es in der Zeitung stand. Aber wann braucht es jemand?

Wenn Miner beispielsweise einen neuen Block erhalten, erhalten sie dann nur den Block-Header oder den Block-Header mit der Transaktion? Bedeutet, ist die Blockchain eine Kette von Header-Blöcken?

Wenn Satoshi im Abschnitt 8 – Vereinfachte Zahlungsüberprüfung sagte:

Es ist möglich, Zahlungen zu verifizieren, ohne einen vollständigen Netzwerkknoten zu betreiben. Ein Benutzer muss nur eine Kopie der Blockheader der längsten Proof-of-Work-Kette aufbewahren, die er durch Abfragen von Netzwerkknoten erhalten kann, bis er überzeugt ist, dass er die längste Kette hat, und den Merkle-Zweig erhalten, der die Transaktion mit dem Block verknüpft es ist mit einem Zeitstempel versehen. Er kann die Transaktion nicht selbst überprüfen, aber indem er sie mit einer Stelle in der Kette verknüpft, kann er sehen, dass ein Netzwerkknoten sie akzeptiert hat, und Blöcke, die danach hinzugefügt werden, bestätigen weiter, dass das Netzwerk sie akzeptiert hat.

Wie kann der Benutzer den Merkle-Zweig erhalten, der die Transaktion mit dem Block verknüpft, in dem sie mit einem Zeitstempel versehen ist?

Antworten (1)

Bisher konnte ich nicht verstehen, welchen Nutzen das Hinzufügen der Transaktions-Merkel-Baumwurzel zum Block-Header hat.

Um sicherzustellen, dass die Transaktionen im Block vom Block-Hash übernommen werden.

Der Block-Hash ist nicht wirklich der Hash des gesamten Blocks, sondern der Hash des Block-Headers. Wenn es keine Merkle-Root gäbe, würde der Block-Header nichts enthalten, was sicherstellt, dass die Transaktionen, die Teil des Blocks sind, tatsächlich Teil des Blocks sind. Indem alle Transaktionen zusammen in die Merkle-Root gehasht und in den Block-Header eingefügt werden, müssen die empfangenen Blöcke alle ihre Transaktionen enthalten, damit der Block-Header gültig ist.

Ja, du hast Recht. Aber wie spart das Platz? Werden die Transaktionen entfernt und wir behalten nur den Merkle-Baum-Hash? Wenn ja, wie können wir eine Transaktion nur mit dem Merkle-Baum-Hash verifizieren? Wenn nicht, wird der Block immer mit seinen Transaktionen gesendet?
Die Merkle-Wurzel wird nicht verwendet, um Platz im Block-Relay zu sparen. Ein Knoten muss den Block vollständig haben, um ihn zu validieren. Traditionell bedeutet dies, dass der Block vollständig gesendet wird. Die Merkle-Root erlaubt nicht, dass Blocktransaktionen nicht weitergeleitet werden. Beachten Sie, dass kompakte Blöcke eine Blockweiterleitung ermöglichen, ohne den vollständigen Block zu senden, da sie die Informationen senden, die ein Knoten benötigt, um den Block vollständig zu rekonstruieren. Dieser Abschnitt im Bitcoin-Papier besagt einfach, dass der gesamte Block nicht vollständig gespeichert werden muss, damit er verwendet werden kann, um Speicherplatz auf der Festplatte zu sparen.
Beachten Sie, dass die im Bitcoin-Papier beschriebene Methode zum Einsparen von Speicherplatz auf der Festplatte nicht wirklich verwendet wird. Aktuelle Pruning-Methoden sind weitaus effizienter und ermöglichen das vollständige Löschen des Blocks von der Festplatte.