Der Versuch, Pay-to-Public-Key-Hash zu verstehen

Ich bin neu bei Bitcoin und versuche, Pay-to-Public-Key-Hash (P2PKH) aus dem Buch zu verstehen: Mastering Bitcoin: Unlocking Digital Cryptocurrencies (S. 127). Ich verstehe, dass digitale Schlüssel (die von privaten Schlüsseln abgeleitet werden) nicht wirklich im Netzwerk gespeichert werden, sondern von Benutzern in einer Brieftasche gespeichert werden.

Zum Beispiel : Alice möchte Bob 1-BTC senden:

---------------------------------------------------------
| Sender:    Hash(alice-public-key)                     |
| Receiver:  Hash(bob-public-key)                       |
| Amount:    1-BTC                                      |
| Signature: Hash(Encrypt_{alice-private-key}(Message)) |
---------------------------------------------------------

Frage :

  • Wie können wir also überprüfen, ob diese Transaktion gültig ist, ohne den öffentlichen Schlüssel zu haben?
  • Wenn wir den öffentlichen Schlüssel an die Nachricht anhängen, warum sollten wir dann überhaupt Zeit damit verbringen, den Hash des öffentlichen Schlüssels zu finden?
  • Speichern wir die öffentlichen Schlüssel in einer zentralisierten Datenbank?
  • Wenn der Empfänger den öffentlichen Schlüssel bereitstellt und überprüft, ob die Transaktion gültig ist, wie können andere validieren, dass es sich um eine gültige Transaktion handelt?
Ich würde hinzufügen: "Was ist Messagedas in Ihrem Beispiel enthalten?"

Antworten (1)

Wie können wir also überprüfen, ob diese Transaktion gültig ist, ohne den öffentlichen Schlüssel zu haben?

Die Signatur enthält den öffentlichen Schlüssel, der dem privaten Schlüssel entspricht, der die Signatur erstellt hat.

Wenn wir den öffentlichen Schlüssel an die Nachricht anhängen, warum sollten wir dann überhaupt Zeit damit verbringen, den Hash des öffentlichen Schlüssels zu finden?

Es ist nicht klar, was Sie mit "dem öffentlichen Schlüssel" meinen. Von wessen öffentlichem Schlüssel sprichst du? Bobs öffentlicher Schlüssel ist nicht in der Nachricht.

Speichern wir die öffentlichen Schlüssel in einer zentralisierten Datenbank?

Wenn ein öffentlicher Schlüssel mit einer Signatur übermittelt wird, befindet sich der öffentliche Schlüssel in der Transaktion. Die Transaktion ist in einem Block enthalten, und dieser Block ist für immer Teil der Blockchain.

Wenn der Empfänger den öffentlichen Schlüssel bereitstellt und überprüft, ob die Transaktion gültig ist, wie können andere validieren, dass es sich um eine gültige Transaktion handelt?

Es ist nicht klar, was Sie mit "das" meinen. Um eine Transaktion zu validieren, müssen Sie nur sicherstellen, dass sie berechtigt ist, die Gelder zu beanspruchen, die sie zu beanspruchen versucht. Es interessiert Sie nicht besonders, was es mit diesen Geldern macht, nur dass es das Recht hat, zu entscheiden, was es damit macht. Sie müssen also nicht viel über die Empfänger wissen – nur genug, um sie zu identifizieren, wenn sie ihre Gelder abholen. Der Hash ihres öffentlichen Schlüssels tut dies.

"Die Signatur enthält den öffentlichen Schlüssel ..." Ich verstehe, es ist die <SCRIPTSIG> eines tx-in? Das heißt, <SCRIPTSIG>besteht aus der Signatur "01" (OP_SIGHASHALL) und dann dem Pubkey.