Eine Standard-Bitcoin-Transaktion hinterlegt Coins in einer Adresse und gibt dann unter Verwendung der Skriptsprache von Bitcoin an, dass jeder, der diese Ausgabe ausgeben möchte, im Besitz des privaten Schlüssels sein muss, der dieser Adresse entspricht.
Es ist jedoch möglich, von dieser Basisvorlage abzuweichen, um komplexere Transaktionen zu erstellen, bei denen andere Bedingungen erfüllt sein müssen, um die Transaktionsausgabe auszugeben.
Ist es möglich, eine Transaktion zu erstellen, bei der eine Summe auf eine Adresse eingezahlt wird, aber nur der Besitzer eines anderen privaten Schlüssels diese ausgeben darf? Ich bin kein Bitcoin-Scripting-Experte, aber das sieht zumindest möglich aus.
Kann in diesem Fall eine solche konstruierte Transaktion verwendet werden, um einen Double-Spending-Angriff zu starten, bei dem Adresse A die Summe X an Adresse B sendet, aber nach Abschluss der Transaktion Adresse A das Eigentum an der Summe behält und sie an eine andere Stelle senden kann, während Adresse B kann eigentlich nichts dagegen tun, auch wenn die Summe seinem Guthaben gutgeschrieben wird?
Wie würde eine Standard-Wallet eine solche Transaktion behandeln? Würde es überhaupt erkennen, dass etwas Seltsames vor sich geht, oder würde es blind anzeigen, dass X BTC die Adresse B eingegeben hat, unabhängig vom Transaktionsskript?
Entschuldigung, ich wurde dadurch in die Irre geführt, wie Websites wie blockchain.info Transaktionen anzeigen: Eine Transaktion enthält eigentlich keine "Ausgabeadresse", sie enthält nur Ausgaben, die die Bedingungen angeben, die erforderlich sind, um sie auszugeben; die "Ausgabeadresse" wird berechnet, indem geprüft wird, welche Signatur der Adresse vom Ausgabeskript angefordert wird; Daher ist es unmöglich, "Geld an Adresse B zu senden", ohne die Adresse B tatsächlich in das Ausgabeskript aufzunehmen.
Es bleibt jedoch etwas die Frage: Könnte eine Transaktion so gestaltet werden, dass eine Brieftasche dazu gebracht wird, ihrem Benutzer zu sagen: „Ich habe X BTC erhalten“, während jemand anderes die Summe tatsächlich mit einem anderen privaten Schlüssel beanspruchen kann?
Was Sie beschreiben, ist ein Widerspruch der Begriffe. Wenn ein Geldbetrag auf eine Adresse eingezahlt wird, bedeutet dies, dass nur der private Schlüssel dieser Adresse das Geld ausgeben kann.
Vielleicht könnten Sie eine nicht standardmäßige Transaktion erstellen und den Leuten sagen, dass sie dem Besitzer der Adresse B die Erlaubnis gibt, sie auszugeben, aber wenn die Leute sich die Transaktion genau genug ansehen, können sie erkennen, dass es sich wirklich um Adresse C (und nicht B) handelt. s Besitzer, der es ausgeben kann. Daran führt kein Weg vorbei: Die Transaktionsausgabe ist öffentlich, ebenso wie die Implementierung ihrer Funktionsweise.
Wenn also die Frage lautet: Können Sie Software X mit einer nicht standardmäßigen Transaktion täuschen? Vielleicht würde es davon abhängen, einen Fehler (oder eine andere nicht ideale Situation) in der fraglichen Software zu finden. (Wenn Sie zum Beispiel eine Transaktion erstellen, die von Adresse B oder C ausgegeben werden kann, wird die Brieftasche, die B besitzt, vielleicht sagen, dass sie das Guthaben hat, und wenn er es nicht erneut überweist, bevor Sie es tun, dann können Sie „zurückstehlen“. " das Geld auf diese Weise) Ich würde jedoch alle nicht standardmäßigen Transaktionen als höchst verdächtig behandeln.
Nein, Sie werden den Standard-Client damit nicht täuschen. Wenn es das Skript nicht vollständig versteht (dh es handelt sich um ein Nicht-Standard-Skript), versucht es nicht, es teilweise oder so weiter zu analysieren. Das Verfahren ist einfach: Wenn der Client das Skript nicht vollständig verstehen kann, wird es einfach ignoriert. Zeitraum.
Massimo
Benutzer15793
Massimo