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?
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
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
Chytrik
Raghav Sood
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!Murch