Ich habe die Abhandlung von Nakamoto „Bitcoin: a peer-to-peer electronic cash system“ gelesen. Im Abschnitt Vereinfachte Zahlungsüberprüfung sagte er, dass es möglich sei, Zahlungen zu überprüfen, ohne einen vollständigen Netzwerkknoten zu betreiben.
Ich verstehe nicht, wie man mit einem Markle's Tree Root-Hash die Zahlung verifiziert. Um die Zahlung zu überprüfen, muss ich tatsächlich alle Knoten des rechten oder linken Zweigs kombinieren und hashen, nicht nur die Wurzel.
Wie kann außerdem ausgewählt werden, welcher Root-Hash abgerufen werden muss, ohne in allen Knoten zu sehen?
Sie haben Recht, um zu beweisen, dass eine Transaktion in einem Block bestätigt wird, benötigen Sie mehr als nur die Merkle-Root. Die benötigten Informationen werden als Merkle-Pfad bezeichnet und bestehen aus dem linken/rechten Blatt zu Ihrem Transaktionsknoten und dem rechten/linken Elternteil und so weiter bis zur Wurzel.
Hier ist ein Diagramm, das einen Merkle-Pfad darstellt: http://chimera.labs.oreilly.com/books/1234000001802/ch07.html#merkle_tree_path
Der Merkle-Wurzel und -Pfad sowie die Block-Header der Blockchain werden von einer Auswahl zufälliger Bitcoin-Knoten angefordert. Ihr SPV-Client kann nicht überprüfen, ob die Transaktion gültig ist (keine doppelte Ausgabe, korrekte Signaturen usw.), aber da er überprüfen kann, ob die Transaktion in einem Block mit X-Bestätigungen enthalten war, kann er davon ausgehen, dass das Bitcoin-Netzwerk die Transaktion akzeptiert hat . Daher akzeptiert Ihr SPV-Knoten die Transaktion, indem er darauf vertraut, dass das Bitcoin-Netzwerk nur gültige Transaktionen zur Blockchain enthält.
Ich muss alle Knoten des rechten oder linken Zweigs kombinieren und hashen
Oder Sie können die meisten dieser Werte erhalten. Wenn Ihnen jemand den Wert für den rechten Zweig gibt, brauchen Sie keine weiteren Informationen zu dieser ganzen Seite des Baums. Und wenn Sie am Ende den richtigen Wert für den Root-Hash haben, wissen Sie, dass sie Sie nicht angelogen haben.
alessandro308
Bjarne Magnussen