Was einen Miner daran hindert, die Sperrskripte einer unbestätigten Transaktion zu ändern

In vielen Kryptowährungen besteht ein TX aus einer Reihe von TX-Eingängen und TX-Ausgängen.

Wenn ein TX an das Netzwerk gesendet wird, hat es bereits die Signatur (im Entsperrskript).

Meine Frage ist also, was einen Miner oder irgendjemanden im Netzwerk daran hindert, die bereits vorhandene Entsperrung zu verwenden und die Sperrskripte der Transaktionen zu ändern und dann die Transaktion zu verbreiten.

Denn nach meinem Verständnis kann ich eine Signatur bereitstellen, um einen Txo zu entsperren, und jemand verwendet meine Signatur, um die Sperrskripte dieser TXs zu ändern.

Antworten (2)

Signaturen decken Ein- und Ausgänge ab.

Ändert jemand eine der Ausgaben in einer Transaktion, ist eine neue Signatur erforderlich. Effektiv unterschreibt Ihre Unterschrift "die Verwendung meines UTXO X zum Senden von A BTC an B, C BTC an D, ...".

Dann ist meine Frage, was wirklich in einem Bitcoin-Entsperrskript signiert ist. Ich habe etwas über das Bitcoin-Skript recherchiert. Und für einen P2PKH-TX ist der Stack-Pre-Final-State ein Pubkey, eine Signatur und OP_CHECKVERIFY, keine Erwähnung, welche Daten signiert wurden oder zu verifizieren sind.
Der Suchbegriff dafür ist "sighash". Es ist ein Hash einer (modifizierten Version) der Ausgabentransaktion. Es wurde geändert, da die Signatur sich selbst signieren müsste, wenn sie enthalten wäre. BIP143 ändert das Sighash-Schema.
Aber konzeptionell kann man sagen, dass die meisten Signaturen effektiv die gesamte Ausgabetransaktion signieren.
„Aber konzeptionell kann man sagen, dass die meisten Signaturen effektiv die gesamte Ausgabentransaktion signieren.“ Bedeutet das, dass die signierten Daten die SHA 256 (TXOs) sind? .
Wofür steht TXO? Man kann sagen, dass die gesamte Transaktion (alle Eingaben, alle Ausgaben) mit Ausnahme der Signaturen selbst signiert wird.
Ich muss nur verstehen, was wirklich passiert. Dennoch sind Blockchains derzeit schlecht dokumentiert. Ich bin wirklich dankbar für die Zeit, die Sie der Erklärung dieser Technologien widmen.
Hier ist eine Spezifikation für das Signatur-Hashing-Schema, das in Witness v0-Ausgaben verwendet wird: github.com/bitcoin/bips/blob/master/…

Denn nach meinem Verständnis kann ich eine Signatur bereitstellen, um einen Txo zu entsperren, und jemand verwendet meine Signatur, um die Sperrskripte dieser TXs zu ändern.

Bei einem "P2PKH tx" erfordert das Unlockscript einige Operationen, die ausgeführt werden müssen, während ein tx ausgegeben wird:

<sig><pubkey><OP_DUP><OP_HASH160>pk hash<OP_EQUALVERIFY><OP_CHECKSIG>

Ich habe hier drei Szenarien, wenn Teile der Skriptfelder geändert werden:

1.) ändern <sig>und<pubkey>

ein Miner ändert das Teil mit einer neuen Signatur und einem neuen Pubkey. Unter der Annahme, dass der Block raelly "durchkommt", hat der Spender der Gelder ein Problem, weil seine nicht mehr mit dem Hash der übereinstimmen würden.

2.) nur die ändern<sig>

ein Miner ändert nur den Teil mit einer neuen Signatur. Jetzt würde der Spender mit dem Hash der übereinstimmen. Der letzte Befehl <OP_CHECKSIG>würde jedoch die verbleibenden Teile auf dem Stapel prüfen ( <new sig><pubkey>), und dies würde (offensichtlich) fehlschlagen.

3.) Ändern Sie das Pubkey-Skript

Wenn irgendetwas im Pubkey-Skript geändert wird, schlägt der Signaturprozess fehl. Während der Erstellung der signierten Transaktion wird der Bereich sigscipt mit dem Pubkey-Skript gefüllt und dann signiert. Später, vor dem Senden des tx, wird der sciptsig-Bereich durch ersetzt <signature><pubkey>. Wenn der Block also an andere Knoten weitergegeben würde, würden sie diesen Block und seine tx-in-side verifizieren und eine Signatur-Nichtübereinstimmung entdecken.

Pieter erklärte hier Details des Skriptsig hier: Was sind die Teile eines Bitcoin-Transaktions-"Eingabe"-Skripts?

und zwei Referenzen, die weiter zum Verständnis beitragen:

1) http://www.righto.com/2014/02/bitcoins-hard-way-using-raw-bitcoin.html

2) Andreas' Buch „Mastering Bitcoin“, 2. Auflage, Seite 135ff