Wie OP_CHECKSIG die Quelle der Signatur in der Pay-to-Pubkey-Hash-Transaktion kennt

https://en.bitcoin.it/wiki/Script#Standard_Transaction_to_Bitcoin_address_.28pay-to-pubkey-hash.29

Der letzte Schritt der Pay-to-Pubkey-Hash-Transaktion besteht darin, die Signatur der vorherigen Transaktion tx hash und pubkey zu überprüfen.

Aber wie der Skriptinterpreter weiß, dass die Sig die Signatur des vorherigen Übergangshashs ist, was ist, wenn die Sig die Signatur eines anderen Inhalts ist?

Antworten (1)

Aber wie der Skriptinterpreter die Signatur des vorherigen Übergangshashs kennt, was ist, wenn die Signatur die Signatur eines anderen Inhalts ist?

Es vergleicht auch die signierten Daten mit dem Transaktionshash selbst. Im Allgemeinen funktionieren digitale Signaturen so. Wenn die Daten nicht mit dem richtigen Schlüssel signiert sind und der Daten-Hash nicht übereinstimmt , ist die Signatur ungültig. Siehe src/script/interpreter.cpp L#1264 .

Dieser Verifizierungsprozess stellt zwei Dinge sicher:
1. Die Person hat den privaten Schlüssel, der mit dem bereitgestellten öffentlichen Schlüssel korrespondiert.
2. Die Daten wurden nicht manipuliert.

Der Code in SignatureHash() sieht aus, als rekonstruiere (l1217~1235) einen Teil der Transaktion und hash erneut. Verwenden Sie dann pubKey, um den Hash und die Signatur zu überprüfen. Sind die oben erwähnten "Daten" die rekonstruierte Byteliste?
Es ist eigentlich nicht einfach, aber es gibt hier eine gute Erklärung dafür, was gehasht und signiert wird: bitcoin.stackexchange.com/a/5241/60443
Eine weitere Frage in Schritt 9, warum der Sender die Gebühr (0,001) im Prozess der Generierungseingabe festlegt. Wenn es wahr ist, wie könnte der Verifizierer aus dem Hash-Code wissen, wie hoch die Gebühr ist? Tatsächlich sieht es aus dem Code in GitHub so aus, als würde er den ursprünglichen Betrag direkt verwenden, und im Gitbub wird der Betrag und dann die Sequenz (FFFFFFFF) ausgegeben, aber in diesem Beitrag wird die Reihenfolge zuerst wie der Betrag und dann das Skript in Schritt ausgegeben 9 und Schritt 10.