Verwirrt über Hash im Satoshi Nakamoto-Diagramm

In Satoshi Nakamotos Diagramm:

Geben Sie hier die Bildbeschreibung ein

Betrachten Sie den Hash-Block im ersten Transaktionsblock oben:

Wie wird dieser Hash-Wert berechnet? Ich sehe Pfeile vom öffentlichen Schlüssel eines Besitzers und einen anderen Pfeil, also ist es verwirrend. Sagt der Pfeil, der vom öffentlichen Schlüssel des Besitzers kommt, dass der Hash mit dem öffentlichen Schlüssel des Besitzers verschlüsselt ist? Wenn ja, was ist dann der andere Pfeil? Ist das bei der Verschlüsselung mit dem öffentlichen Schlüssel beteiligt? Mit anderen Worten, wird der Hash der vorherigen Transaktion irgendwie mit einem neuen Hash kombiniert, bevor er mit dem öffentlichen Schlüssel verschlüsselt wird? Was genau passiert hier?

Danke schön.

Antworten (1)

Erstens sind Transaktionen keine Blöcke und Blöcke keine Transaktionen. Es handelt sich um zwei unterschiedliche Datenstrukturen, von denen Sie anscheinend denken, dass sie dasselbe sind.

Wie wird das berechnet?

Durch Ausführen von SHA256 Double für die Transaktion.

Ich sehe einen Pfeil von links kommen (dazu komme ich gleich) – er scheint den Hash des vorherigen Transaktionsblocks darzustellen. Aber der Pfeil, der vom öffentlichen Schlüssel von Besitzer 1 kommt, verwirrt mich auch. Bedeutet dieses Diagramm, dass der öffentliche Schlüssel von Besitzer 1 zusammen mit dem Hash-Wert des vorherigen Blocks gehasht wird? Passiert das tatsächlich in Bitcoin oder gibt es mehr Details?

Ja, der öffentliche Schlüssel ist Teil der Daten, die in einer Transaktion gehasht werden.

Ich möchte den ursprünglichen Block in der abgebildeten Hash-Kette sehen, da dieser ursprüngliche Block keinen vorherigen Block-Hash hätte, auf den er verweisen könnte. Würde das also bedeuten, dass der Hash des ersten Blocks nur ein Hash des öffentlichen Schlüssels des Eigentümers ist?

Eine Transaktion ist mehr als nur ein öffentlicher Schlüssel und eine Ausgabe. Aber die erste Transaktion in dieser Transaktionskette hat keine Eingaben, also hat sie keine vorherigen Transaktionen, auf die sie verweist. Diese Transaktion ist als Coinbase-Transaktion oder Coin-Erzeugungstransaktion bekannt. Es wird von Minern erstellt und produziert Bitcoin im Wesentlichen aus dem Nichts.

Gibt es gute Ressourcen, die mehr technische Details zum ersten Block in der Transaktions-Hash-Kette und zur Berechnung dieser Hashes enthalten?

Der Entwicklerleitfaden von Bitcoin.org erklärt die meisten Details von Bitcoin.


Sagt der Pfeil, der vom öffentlichen Schlüssel des Besitzers kommt, dass der Hash mit dem öffentlichen Schlüssel des Besitzers verschlüsselt ist?

Nein, es bedeutet, dass der öffentliche Schlüssel verwendet wird, um die Signatur von Besitzer 1 zu verifizieren. Dieser öffentliche Schlüssel wird in der vorherigen Transaktion angegeben. Um zu wissen, was die vorherige Transaktion ist, platzieren wir den Hash davon in der aktuellen Transaktion (Transaktion von Eigentümer 2). Auf diese Weise können wir schnell die Transaktion von Eigentümer 1 nachschlagen, um den öffentlichen Schlüssel von Eigentümer 1 abzurufen.

Im Bitcoin-Protokoll findet keine Verschlüsselung statt. Nichts ist verschlüsselt.

Mit anderen Worten, wird der Hash der vorherigen Transaktion irgendwie mit einem neuen Hash kombiniert, bevor er mit dem öffentlichen Schlüssel verschlüsselt wird?

Ja, der Hash der vorherigen Transaktion wird mit den anderen Daten in der aktuellen Transaktion kombiniert, um den Hash der aktuellen Transaktion zu erzeugen.


Anstatt zu versuchen, die technischen Details und Diagramme zu verstehen, die Satoshi in das Whitepaper eingefügt hat, sollten Sie versuchen zu verstehen, wie Bitcoin heute tatsächlich funktioniert, basierend auf dem Code und anderen verfügbaren Dokumentationen. Das Whitepaper beschreibt nicht, wie Bitcoin tatsächlich funktioniert; Es wurde Monate vor der ersten Veröffentlichung geschrieben und viele Details haben sich zwischen den Konzepten im Whitepaper und der tatsächlichen Implementierung dieser Konzepte geändert.

Korrigieren Sie mich, wenn ich falsch liege, aber ich spreche nicht von Blöcken in der Blockchain – ich kenne den Unterschied zwischen diesem Block und einem Transaktionsblock. Ich spreche von Transaktionsblöcken in der Transaktions-Hash-Kette, die ein digitales Asset von der Genesis über alle Eigentümer hinweg verfolgt. Kann nicht jeder Link (Datenobjekt) in dieser Transaktionskette als "Transaktionsblock" bezeichnet werden?
Ich habe den Entwicklerleitfaden gelesen und denke, unsere Trennung besteht darin, dass Bitcoin nicht wirklich eine Hash-Kette von Transaktionen erstellt oder diskutiert. Dies ist eher eine Abstraktion einer Datenstruktur, die aus den Transaktions-Hashes erstellt werden könnte. Daher halte ich es nicht für relevant, die Nomenklatur solcher "Transaktionsblöcke" hier zu diskutieren ...
Frage aus Gründen der Übersichtlichkeit bearbeitet. Ich interessiere mich für die ersten und nachfolgenden Hash-Werte entlang der Eigentumskette von Transaktionen.
Ich glaube, ich habe es wirklich vermasselt, wie ich meine Frage gestellt habe. Anstatt eine neue Frage zu stellen, habe ich beschlossen, diese auf das zu reduzieren, was ich wirklich zu fragen versuche, und das ganze Durcheinander in meiner ursprünglichen Frage zu reduzieren. Bitte akzeptieren Sie meine Entschuldigung und neue Klarstellungen. Ich versuche das wirklich zu verstehen. Das Entwicklerhandbuch hat mir bei der spezifischen Frage, die ich stelle, nicht geholfen.
Nein, es ist kein Transaktionsblock. Es ist nur eine Transaktion. Sie Blöcke oder Transaktionsblöcke zu nennen, wird nur noch mehr Verwirrung stiften. Nennen Sie es einfach eine Transaktion. Außerdem erstellt Bitcoin Ketten von Transaktionen. Eine Transaktionseingabe verweist direkt auf die txid (auch bekannt als Hash) einer vorherigen Transaktion.
Ich versuche nicht, Bitcoin anhand des Diagramms zu verstehen. Ich versuche herauszufinden, was in solchen Transaktionsketten generisch gemacht wird. Es ist mir sogar egal, ob es Ripple, Ethereum oder Bitcoin ist. Ich versuche herauszufinden, was die Absicht war, weil ich gerne die Idee hinter der Transaktionskette vermitteln könnte. Ich bin gerade auf dem Hash aufgehängt. Ich kann nicht herausfinden, ob die Transaktionen zwei Hash-Werte haben – einen für das zu verfolgende digitale Asset und den anderen für den Transaktionsblock, damit er mit dem vorherigen Block zurückverlinken kann … Wenn es nur einen Hash gibt , das hilft zu wissen...
Jede Transaktion hat ihren eigenen Hash. Dieser Hash ist nicht Teil der Transaktion selbst, da er direkt aus der Transaktion berechnet wird. Jede Transaktion (mit Ausnahme von Coinbase-Transaktionen) enthält auch den Hash einer vorherigen Transaktion. Im Diagramm ist der angezeigte Hash jedes Mal ein anderer Hash, es ist der Hash der vorherigen Transaktion.
OK danke. Letzte Klarstellung: Ich habe nicht über den gestrichelten Pfeil aus dem öffentlichen Schlüssel des Eigentümers gesprochen – ich verstehe, dass er zur Überprüfung verwendet wird. Ich habe über den durchgezogenen Pfeil gesprochen, der auf den Hash zeigt. Was sagt das?
Der durchgezogene Pfeil bedeutet, dass der öffentliche Schlüssel UND die vorherige Transaktion zusammen gehasht werden. Beachten Sie, dass Bitcoin (oder jede mir bekannte Münze) so nicht funktioniert und völlig unnötig ist.
Ich glaube, Sie haben gerade meine Verwirrung auf den Punkt gebracht – danke! Der öffentliche Schlüssel befindet sich also einfach in der Transaktion – er tut nichts anderes, als dabei zu helfen, die Signatur für die nächste Transaktion zu validieren … Richtig? :)
Ja. Der öffentliche Schlüssel befindet sich in der Transaktion nur zur Signaturvalidierung.
All das Geschwätz, nur um diese eine einfache Tatsache zu erfahren? Meine Güte! :) :) :) Du hast meinen Tag gerettet. Danke schön!
"Im Bitcoin-Protokoll findet keine Verschlüsselung statt. Nichts ist verschlüsselt." Wenn dies ein semantisches Problem ist, dann in Ordnung, aber ist "Signieren mit einem privaten Schlüssel" nicht eine Form der digitalen Verschlüsselung? Ich möchte lernen, was richtig ist - ich sehe, dass "Verschlüsselung" die ganze Zeit verwendet wird, wenn ich über PKC spreche ...
Eine digitale Signatur ist nicht dasselbe wie eine Verschlüsselung. Die Verschlüsselung verschleiert eine Nachricht, sodass niemand außer den beabsichtigten Empfängern die Nachricht lesen kann. Mit einer digitalen Signatur wird die Nachricht nicht verschleiert. Vielmehr liegt die Nachricht im Klartext vor und die Signatur dient als Beweis dafür, dass der Eigentümer des öffentlichen Schlüssels die Nachricht erstellt hat, und verifiziert die Authentizität der Nachricht (dh sie wurde nicht manipuliert).
Danke Andrew, aber ich dachte, eine digitale Signatur verschlüsselt einen Hash der Nachricht – dann werden die Nachricht und der verschlüsselte Hash zusammen an den Empfänger gesendet. Ich dachte, der Empfänger verwendet den öffentlichen Schlüssel zur Verifizierung, indem er den Hash entschlüsselt und dann den Hash gegen die Nachricht neu berechnet, um eine Übereinstimmung sicherzustellen. Nun, wenn wir dasselbe sagen, gut. Ansonsten frage ich mich, wo ich in meinem Verständnis falsch liege. Ich verstehe, dass die Nachricht selbst nicht verschlüsselt ist - aber nicht der Hash? Und wenn es nur der Hash ist, ist es vielleicht nicht gut, überhaupt über Verschlüsselung zu sprechen, da die Nachricht nicht verschlüsselt ist.
Bei einigen Algorithmen für digitale Signaturen mag dies so sein, aber Bitcoin verwendet ECDSA, das dies nicht tut. Der Nachrichten-Hash wird in keiner Weise wiederhergestellt, er muss aus der Nachricht neu berechnet werden, um die Signaturprüfung durchzuführen.