Wenn ich dieselbe Adresse wiederverwende, kann eine zuvor verwendete Transaktion wiederverwendet werden?

Ich habe mich gefragt, ob ich eine Adresse adr0 verwendet habe, um einige Münzen in einer Transaktion tx0 auszugeben, die die Münzen an eine andere Adresse adr1 gibt, und schließlich nach einiger Zeit einige (völlig unabhängige) Münzen an dieselbe Adresse adr0 erhalte. Kann jemand die von mir signierte Transaktion tx0 nehmen und veröffentlichen, um die neuen Coins mit der alten Transaktion auszugeben? (Schließlich gehören sie zur selben Adresse, und ich habe bereits eine Transaktion unterschrieben und durchgeführt, die Münzen von dieser Adresse ausgibt).

Wenn ja, warum ist die Wiederverwendung von Adressen nicht direkt verboten? Wenn nicht, können Sie erklären, warum?

Antworten (2)

Kann jemand die von mir signierte Transaktion tx0 nehmen und veröffentlichen, um die neuen Coins mit der alten Transaktion auszugeben?

Nein.

Erstens ist bereits bekannt, dass die Transaktionseingaben verwendet wurden. Jeder Knoten, der den Block untersucht, wird wissen, dass die Wiederholungstransaktion ungültige Eingaben hat.

Zweitens erwarte ich (habe es aber nicht überprüft), dass die Eingaben in die Signatur beide Adressen enthalten. Dadurch wird verhindert, dass die Signatur in der von Ihnen vorgeschlagenen Weise missbraucht wird. (Siehe Murchs Klarstellung im Kommentar unten)

Es kann hilfreich sein (wenn nicht Ihnen, einigen anderen Lesern), sich daran zu erinnern, dass Bitcoins weder außerhalb noch innerhalb der Blockchain existieren. Das einzige, was existiert, sind Transaktionseingaben und -ausgaben. Sie können eine signierte Transaktion mit den Eingaben A, B und C nicht verwenden, um die Eingaben D und E zu verwenden. Die Signatur verhindert, dass Sie den signierten Inhalt ändern, ohne die Signatur ungültig zu machen.

Wie kommt es, dass die Wiederverwendung von Adressen nicht direkt verboten ist? Wenn nicht, können Sie erklären, warum?

Adressen können wiederverwendet werden. Das offensichtlichste Problem ist eines der Privatsphäre. Wenn Sie jemandem eine Adresse geben, damit er Zeltheringe im Wert von 0,01 $ von Ihnen kaufen kann, kann er dann auf der Blockchain sehen, dass Sie kürzlich auch 300.000.000 $ an diese Adresse erhalten haben, und einen großen Hammer kaufen und Sie um 3 Uhr morgens besuchen kommen

Kleine Anmerkung: Datenschutz ist nicht das einzige Anliegen, obwohl es vielleicht das relevanteste ist. Das Vorhandensein mehrerer Signaturen desselben Privatschlüssels könnte möglicherweise die Sicherheitsannahmen der Kryptografie mit asymmetrischen Schlüsseln schwächen – obwohl derzeit keine aktuellen Angriffe bekannt sind, ist es nicht ausgeschlossen, dass in Zukunft einer entdeckt wird. Dies ist eine kleine Sorge, die bei Bedarf behoben werden könnte, aber erwähnenswert ist.
Beachten Sie, dass es einen kleinen Grenzfall gibt, in dem, wenn eine Transaktion mit signiert wird SIGHASH_SINGLE, aber die angegebene vin außerhalb der Grenzen der Transaktion liegt, diese Signatur für alle Transaktionsausgaben an diese Adresse gültig ist, ob in der Vergangenheit, Gegenwart oder Zukunft!
Es kann helfen zu verdeutlichen, dass der utxo eindeutig über den Outpoint identifiziert wird. Genau genommen verpflichtet sich die Signatur nicht zur Adresse der Eingabe, sondern erfüllt nur das entsprechende Ausgabeskript, an das die Gelder gebunden waren. Im Fall von P2PKH geschieht dies, um auf die Adresse zu verweisen, um den beabsichtigten Spender zu identifizieren. ;)

Dazu sollten Sie sich ein System namens "Unspend Transaction Outputs" (utxo) ansehen. Dieses System funktioniert wie folgt:

Jede Transaktion besteht aus einem oder mehreren Inputs und einem oder mehreren Outputs. Die Eingabe gibt an, woher das Geld stammt, indem auf eine vorherige Ausgabe verwiesen wird. Und der Output beschreibt, für wen und/oder wie das Geld ausgegeben werden kann.

Wenn Sie also die Coins in tx0 gesendet haben, haben Sie den Output ausgegeben, in dem Sie das Geld überhaupt erhalten haben. Da diese Ausgabe nun ausgegeben wird, kann nicht erneut darauf verwiesen werden. Und danach kann Ihr zuvor verwendetes tx0, das von Ihnen signiert wurde, nicht erneut verwendet werden. Es wäre ungültig, weil es versucht, eine bereits ausgegebene Ausgabe auszugeben. Die Gründe, warum Sie Adressen nicht wiederverwenden sollten, finden Sie hier