Wie wird die Ausgabe einer Transaktion signiert?

In einer Transaktion Txmuss der Hash-Zeiger der früheren Transaktion (z. B. TxE), der als Eingabe für dient Tx, vom Absender Svon signiert werden Tx. Dies soll zeigen, dass Sder Empfänger von war TxE. Es bleibt zu zeigen, dass Sdies mit der Ausgabe von übereinstimmt Tx. In welcher Phase Ssigniert die Ausgabe von Tx? Ich nehme an, er tut es. Was würde andernfalls einen Angreifer daran hindern, Txunmittelbar nach Sder Übertragung darauf zuzugreifen und die Ausgabe vor der erneuten Übertragung zu ändern (so dass er der Empfänger ist)?

Mit anderen Worten: Die scriptSig beweist, dass der Sender die Eingabe von Tx besitzt. Was beweist, dass der Absender die Ausgabe des Tx genehmigt?

rgds

PS: Die Transaktion, die ich in Betracht ziehe, ist:

Geben Sie hier die Bildbeschreibung ein

Antworten (1)

Die Signatur signiert auch das Pubkey-Skript und den Betrag (die zusammen das darstellen würden, was Sie als "Ausgabe von Tx" bezeichnen).

Zitieren des Transaktionsabschnitts des Entwicklerhandbuchs :

Bobs secp256k1-Signatur beweist nicht nur, dass Bob seinen privaten Schlüssel kontrolliert; Es macht auch die Nicht-Signaturskript-Teile seiner Transaktion manipulationssicher, sodass Bob sie sicher über das Peer-to-Peer-Netzwerk übertragen kann.

Geben Sie hier die Bildbeschreibung ein
Bildquelle: Entwicklerhandbuch: Transaktionen

Wie in der obigen Abbildung dargestellt, umfassen die Daten, die Bob signiert, die txid und den Ausgabeindex der vorherigen Transaktion, das Pubkey-Skript der vorherigen Ausgabe, das von Bob erstellte Pubkey-Skript, mit dem der nächste Empfänger die Ausgabe dieser Transaktion ausgeben kann, und die Menge an Satoshis für an den nächsten Empfänger ausgeben. Im Wesentlichen wird die gesamte Transaktion signiert, mit Ausnahme von Signaturskripten, die die vollständigen öffentlichen Schlüssel und secp256k1-Signaturen enthalten.

Ich würde anmerken, dass dies für SIGHASH_ALL gilt, aber nicht für die anderen.
Danke sehr; aber ich bin mir nicht sicher, ob ich es ganz verstehe. Tatsächlich habe ich dieses Bild schon einmal gesehen, aber ich bin mir nicht sicher, was seine Botschaft ist. Wäre jemand so freundlich, es noch einmal zu erklären, plz?
@Murch Meinen Sie in Anbetracht des Bildes, das ich ursprünglich gepostet habe, dass jede der scriptSigs in Tx nicht nur das Eigentum an den Ausgaben von TxE bestätigt, sondern auch die Ausgabe von Tx bestätigt?
Ja, normalerweise enthält jede Eingabe Signaturen, die sowohl die Ausgaben der vorherigen ausgegebenen Transaktion als auch die Ausgaben abdecken, an die die Transaktion, die die Signaturen enthält, sie sendet.
Mit anderen Worten: Es ist nicht nur die Unterzeichnung, um das Eigentum nachzuweisen, sondern es beweist die Zustimmung zur Transaktion.
@Pieter Wuille. Danke für diese Erklärung. Entschuldigung für meine Spitzfindigkeit, aber: Welche Signatur deckt was ab? Oder deckt dieselbe Signatur Ausgänge und Eingänge ab?
Jede Signatur umfasst sowohl Ein- als auch Ausgänge. Das Diagramm und der verlinkte Entwicklerleitfaden erklären das viel detaillierter, als ich in einen Kommentar einfügen kann.
Die Abbildung ist nicht sinnvoll, da sie darauf hindeutet, dass die signierten Daten alles von links nach rechts abdecken, einschließlich des privaten Schlüssels. Außerdem muss der Link aktualisiert werden.