Folgendes habe ich aus dem Buch << Mastering Bitcoin >> gelesen
„Wie Sie vielleicht bemerkt haben, enthält die Transaktion eine leere scriptSig, weil wir sie noch nicht signiert haben. Ohne eine Signatur ist diese Transaktion bedeutungslos, wir haben noch nicht bewiesen, dass wir die Adresse besitzen, von der die nicht ausgegebene Ausgabe stammt.“
Ich frage mich, wie eine Signatur beweisen kann, dass diese Transaktion die Adresse besitzt, von der die nicht ausgegebene Ausgabe stammt.
Angenommen, Sie verstehen, wie Public-Key-Kryptografie funktioniert. Kurz gesagt, man kann den Besitz einer Adresse überprüfen, indem man die Signatur überprüft. Eine gültige Signatur kann nur vom Besitzer des privaten Schlüssels erzeugt werden.
Das Detail der Signaturüberprüfung in Bitcoin wird hier beschrieben
Ohne in die Details zu gehen, OP_xxx
sind Stack-Operationen. Zum Beispiel OP_DUP
ist oben auf dem Stapel zu duplizieren. Im Grunde es
OP_HASH160
und prüft, ob das Ergebnis mit der pubKeyHash
Operation identisch istOP_EQUALVERIFY
sig
und pubKey
durch BetriebOP_CHECKSIG
Hier können Sie mehr darüber lesenOP_CHECKSIG
Die Eigentümerschaft wird für jede Eingabe durch eine gültige Signatur im scriptSig
Feld nachgewiesen. Fehlt eine der Signaturen, ist die gesamte Transaktion ungültig.
Die scriptPubKey
für jede Ausgabe in dem von Ihnen bereitgestellten Beispiel ist an eine Bitcoin-Adresse gebunden. Eine Bitcoin-Adresse ist, kurz gesagt, ein Hash eines öffentlichen Schlüssels. Um also eine gültige Signatur bereitzustellen, ist der geheime Schlüssel erforderlich, der zu demselben Schlüsselpaar des öffentlichen Schlüssels gehört, auf den in jeder Eingabe verwiesen wird.
Raghav Sood