Abwehr eines Double Spend-Angriffs durch Bestrafung des Angreifers?

Einer der Hauptgründe, warum es nicht sicher ist, Bitcoin mit 0 Bestätigungen zu akzeptieren, ist die Möglichkeit einer doppelten Ausgabe (bei der Mr. Scammer zuerst 1 BTC an Alice sendet und dann eine identische Transaktion erstellt, bei der er dieselbe 1 BTC an Bob sendet oder an eine andere von ihm kontrollierte Adresse. Wenn das Netzwerk am Ende die zweite Transaktion in die Blockchain aufnimmt, wird nur Bob (oder Mr. Scammer selbst) als rechtmäßiger Eigentümer der Coins angesehen und Alice wird nichts übrig bleiben).

Da es jedoch unmöglich ist, eine doppelte Ausgabe für immer zu verbergen, und jeder im Netzwerk irgendwann feststellen wird, dass Mr. Scammer seine Coins doppelt ausgegeben hat, warum ist es nicht möglich, die doppelte Ausgabe zu bestrafen, um die wirtschaftlichen Anreize dafür zu verringern also erstmal? Zum Beispiel könnten wir eine spezielle Art von Transaktion erstellen, bei der Mr. Scammer eine entsprechende Menge an BTC für einen bestimmten Zeitraum sperren muss. Wenn das Netzwerk tatsächlich zu dem Schluss kommt, dass eine doppelte Ausgabe stattgefunden hat, „verbrennen“ (oder zerstören) wir die eingesperrte BTC.

Würde dies die Wahrscheinlichkeit, dass doppelte Ausgaben überhaupt auftreten, nicht erheblich verringern?

Einige Leute haben tatsächlich Glücksspiele entwickelt, bei denen absichtlich doppelte Ausgaben getätigt werden, und dann warten sie darauf, wer der glückliche Gewinner ist, je nachdem, welche Transaktion validiert und welche abgelehnt wird. Es ist kindisch, aber absichtlich und (vage) lustig. Eine Bestrafung ist dafür weder notwendig noch angemessen.

Antworten (2)

Bei zwei Transaktionen, die denselben Input ausgeben, gibt es keine Möglichkeit zu wissen, welche „zuerst kam“ oder die „rechtmäßige“ Transaktion ist. Aus diesem Grund ist es sehr schwierig, auf diese Weise eine „No Double Spend“-Richtlinie durchzusetzen. Wie können Sie garantieren, dass Sie die Transaktionen korrekt bestellt haben? Was passiert, wenn einige Knoten im Netzwerk sehen, dass die Transaktionen in einer anderen Reihenfolge ankommen? Oder was ist, wenn ein Betrüger eine Zahlung sendet, dann aber behauptet, dass eine Transaktion, die dieselben Coins an sich selbst zurückzahlt, tatsächlich die „erste“ Transaktion ist? Usw.

Aus diesem Grund existiert die Blockchain überhaupt: um den Transaktionen, die im Netzwerk stattfinden, einen expliziten Befehl zu geben. Versuche, „Null-Bestätigungs-Transaktionen“ so zuverlässig wie bestätigte Transaktionen zu machen, werden niemals erfolgreich sein, und wenn sie könnten, dann könnten wir einfach die gesamte Blockchain abschaffen! Vielleicht gibt es Möglichkeiten, doppelte Ausgaben weniger wahrscheinlich erfolgreich zu machen, aber letztendlich, wenn Sie Transaktionen ohne Bestätigung akzeptieren, gehen Sie ein gewisses Risiko ein, doppelt ausgegeben zu werden.

Zum Beispiel könnten wir eine spezielle Art von Transaktion erstellen, bei der Mr. Scammer eine entsprechende Menge an BTC für einen bestimmten Zeitraum sperren muss. Wenn das Netzwerk tatsächlich zu dem Schluss kommt, dass eine doppelte Ausgabe stattgefunden hat, „verbrennen“ (oder zerstören) wir die eingesperrte BTC.

Sie haben mehr oder weniger ein Treuhandsystem beschrieben, bei dem ein Dritter beauftragt wird, um sicherzustellen, dass die betreffende Transaktion reibungslos abläuft. Dies ist heute möglich, und tatsächlich bieten einige Märkte Zugang zu dieser Art von Protokoll.

Denken Sie daran: Wenn Sie verlangen, dass der Benutzer einige Münzen in der Kette als Sicherheit sperrt, ist eine Bitcoin-Transaktion erforderlich, um dieses „gesperrte UTXO“ zu erstellen. Um diesen UTXO zu erstellen, müssen Sie auf die Bestätigung einer On-Chain-Transaktion warten ... und an diesem Punkt können Sie genauso gut auf die Bestätigung der Zahlung warten! Wenn Sie nicht auf die Bestätigung warten, sind Sie in Bezug auf das Risiko doppelter Ausgaben wieder am Anfang.

Der Versuch, dies zu automatisieren, scheint aus ähnlichen Gründen wie denen, die ich oben im ersten Absatz erwähnt habe, nicht machbar zu sein.

Ich denke, dass die gesperrten Gelder an eine benutzerdefinierte Art von Adresse gesendet werden, die speziell dafür ausgelegt ist, Gelder als Sicherheit zu halten (sie kann von jeder Person erstellt werden, genau wie eine normale BTC-Adresse). Der Punkt ist, dass kein Node/Miner eine Transaktion von dieser Adresse akzeptieren würde, es sei denn, die Adresse hält mindestens eine äquivalente Menge an Sicherheiten im Vergleich zum ausgegebenen Betrag aufrecht
Es ist wahr, dass zunächst eine Bitcoin-Transaktion erforderlich wäre, um das UTXO (Geld) zu sperren, aber ich denke, wenn ein Benutzer weiß, dass er bei der zukünftigen Transaktion eine Transaktion mit schneller Bestätigungszeit durchführen muss, könnte er einen Teil seines Geldes sperren im Voraus in dieser Art von Adresse. Wenn dies nicht mehr benötigt wird, können sie Gelder an eine normale Adresse verschieben. Es ist nicht wie ein zentralisiertes Treuhandsystem, da jeder im Netzwerk leicht erkennen kann, wenn ein Benutzer versucht, die Ausgaben zu verdoppeln.
Vielleicht ist der einzige Fehler, den ich bei diesem System sehen kann, der Fall, dass Mr. Scammer versucht, denselben Bitcoin nicht an eine, sondern an mehrere Personen zu senden, und jede dieser Personen glaubt, dass seine Transaktion die einzige ist, die existiert. In diesem Fall wäre die einzige Möglichkeit, eine "dreifache" oder "vierfache" Ausgabe zu mindern, 300 % - 400 % des gesendeten Betrags zu sperren, aber da der Angreifer möglicherweise eine unbegrenzte Anzahl von Personen austricksen könnte, müssten wir sie sperren eine unendliche Menge an Geldern, um sich vollständig vor einer doppelten (Mehrfach-)Ausgabe zu schützen.
Um es klar zu sagen, ich sage nicht, dass diese Strategie PoW ersetzen sollte. Ich sage, dass es in Harmonie mit PoW funktionieren kann, mit dem zusätzlichen Vorteil, dass es 0 Bestätigungstransaktionen akzeptieren kann
Sie müssen sich über den spezifischen technischen Mechanismus im Klaren sein, der entscheidet, die Gelder zu verbrennen, wenn ein doppelter Ausgabenversuch festgestellt wird. Ich glaube nicht, dass es möglich ist, so etwas mit einem Bitcoin-Skript zu erstellen, ohne eine Art vertrauenswürdiges Orakel zu verwenden.

Dies wäre nicht effektiv.

Angenommen, ich möchte einen Wert von 100 $ überweisen. Wie viel ist es vernünftig, von mir zu verlangen, dass ich abschließe, und für wie lange? Vielleicht könnten wir es tolerieren, mich zu zwingen, 200 Dollar für eine Stunde einzusperren.

Aber ich muss nicht einfach doppelt ausgeben. Ich kann eine Fünffachausgabe machen. Ich kann einen Gegenwert von 500 Dollar für meine Zahlung von 100 Dollar bekommen, und selbst wenn ich weitere 200 Dollar verliere, bin ich immer noch weit voraus. Und jetzt haben Sie Zahlungen für alle viel schmerzhafter gemacht, da sie dreimal so viel haben müssen, wie sie zahlen möchten, nur um herumzusitzen.

@_David Schwartz Ich habe das Problem der fünffachen Ausgaben als Kommentar zur @chytrik-Antwort erwähnt. Ich sehe keinen Ausweg, denn selbst wenn wir 500 % der ursprünglichen Transaktion sperren, könnte er eine Sechsfachausgabe tätigen (obwohl es mich interessieren würde, ob es wesentlich weniger wahrscheinlich ist, dass eine Sechsfachausgabe statt doppelte Ausgaben) (Fortsetzung)
Ich stimme jedoch nicht zu, dass dies "Zahlungen für alle schmerzhaft macht, da sie das Dreifache des Betrags benötigen ...", da die Idee darin besteht, dass diese Art von Transaktion an eine bestimmte Art von Adresse gebunden wäre (z Adresse beginnend mit Buchstabe e). Wenn eine Person im Voraus weiß, dass sie eine sofortige Bestätigung benötigt (z. B. wenn sie etwas im Lebensmittelgeschäft kauft oder in ihrem Auto für Benzin bezahlt), kann sie die erforderlichen Mittel im Voraus überweisen. Das Netzwerk wendet diese Regeln nur auf diese Art von Adresse an. Wenn keine schnelle Bestätigung mehr erforderlich ist, kann er das Geld an eine normale Adresse zurücküberweisen.
@SOS Ich kann dem Punkt dann nicht folgen. Soll eine spezielle Art sehr teurer Transaktion zugelassen werden, nur um eine schnelle Bestätigung für Zahlungen mit geringem Wert zu liefern, die einen winzigen Bruchteil des Guthabens einer Person ausmachen? Wenn ja, würde ich sagen, dass dies nur ein schreckliches Spiel für die Funktionsweise der Bitcoin-Blockchain ist, weil sie keine Guthaben hat. Wenn Sie ein völlig neues und radikal anderes System vorschlagen, warum sollten Sie es dann bei Zahlungen langsam angehen lassen?