Möglicher Fehler im Abschnitt "Berechnungen" des Whitepapers?

Abschnitt 11 präsentiert Berechnungen der Wahrscheinlichkeit doppelter Ausgaben, P(z, q), bei einer gegebenen relativen Hash-Rate q des Angreifers und einer Blockanzahl z .

Berechnungen

P(z, q) kann nur verstanden werden, wenn man genau weiß, was z darstellt. Aus dem Abschnitt Berechnungen:

Der Empfänger wartet, bis die Transaktion zu einem Block hinzugefügt wurde und z Blöcke danach verknüpft wurden. Er kennt nicht den genauen Fortschritt, den der Angreifer gemacht hat, aber unter der Annahme, dass die ehrlichen Blöcke die durchschnittlich erwartete Zeit pro Block benötigten, wird der potenzielle Fortschritt des Angreifers eine Poisson-Verteilung mit erwartetem Wert sein ... [meine Betonung]

Die Transaktion hat eindeutig eine Bestätigung. Die Transaktion „wurde zu einem Block hinzugefügt“ und es wurden Null - Blöcke dahinter verknüpft. Mit anderen Worten, die Transaktion wird von der Spitze der aktiven Kette gehostet.

Trotzdem beträgt die Wahrscheinlichkeit, dass diese Transaktion doppelt ausgegeben wird, 100 %, unabhängig von der Hash-Power des Angreifers. Tatsächlich beträgt die Wahrscheinlichkeit auch ohne aktiven Angreifer 100 %.

Dieser Widerspruch wird durch die Gleichung verstärkt, die Satoshi gibt:

Geben Sie hier die Bildbeschreibung ein

Wenn z = 0 ist, ist P = 1,0.

Was vermisse ich?

Auf diese Frage gibt es mindestens eine Antwort, die besagt, dass z=0 bedeutet, dass die Transaktion unbestätigt ist. Das widerspricht dem von mir zitierten Absatz.

Irgendwo im Berechnungsabschnitt scheint ein Fehler zu sein, der zu einem Widerspruch führt. Ich suche nach einer Antwort, die entweder auf den Fehler hinweist oder erklärt, was ich falsch interpretiere.

BEARBEITEN

Eine Antwort deutet darauf hin, dass Satoshi möglicherweise von einem Finney-Angriff gesprochen hat. Mit anderen Worten, der Angreifer hat bereits einen Block vorab abgebaut, bevor er versucht, die doppelten Ausgaben zu tätigen. Unter der Annahme, dass der Angreifer Blöcke schneller als das Netzwerk verbreiten kann, besteht eine 100-prozentige Erfolgschance. In diesem Szenario sind der Angreifer und das Netzwerk bei z = 0 gebunden, und bei einer schnelleren Blockausbreitung geht der Vorteil an den Angreifer.

Der Abschnitt „Berechnungen“ verbietet jedoch ausdrücklich einen Finney-Angriff. Insbesondere hat der Angreifer vor dem Angriff keine Blöcke abgebaut:

Der Empfänger generiert ein neues Schlüsselpaar und gibt den öffentlichen Schlüssel kurz vor dem Signieren an den Sender weiter. Dies verhindert, dass der Absender eine Kette von Blöcken im Voraus vorbereitet, indem er kontinuierlich daran arbeitet, bis er das Glück hat, weit genug voranzukommen, und dann die Transaktion in diesem Moment ausführt. Sobald die Transaktion gesendet wurde, beginnt der unehrliche Absender heimlich an einer parallelen Kette zu arbeiten, die eine alternative Version seiner Transaktion enthält.

Ich glaube, zumindest ein Teil des Problems ist mathematisch. Insbesondere gibt Satoshi den Wert von λ an als:

Geben Sie hier die Bildbeschreibung ein

Wenn z = 0, λ = 0.

Zurück zu Satoshis ursprünglicher Ableitung der Doppelausgabenwahrscheinlichkeit P(z, q):

Geben Sie hier die Bildbeschreibung ein

λ=0 bedeutet, dass jeder Term null ist, unabhängig von der Hash-Rate. Mit anderen Worten, der Angreifer kann niemals doppelt ausgeben.

Dies widerspricht der "umgestellten" Form der Gleichung, die wie oben erwähnt eine Wahrscheinlichkeit von 100 % ergibt.

Ich bin kein Mathematikspezialist, aber soweit ich das beurteilen kann, sind die beiden Formen von P (z, q), die Satoshi angibt, für z = 0 nicht äquivalent . Tatsächlich geben sie die gegenteilige Antwort:

  • in einem Fall scheitert der Angreifer immer, P(z, q) = 0
  • im anderen Fall gelingt es dem Angreifer mit 100%iger Wahrscheinlichkeit, P(z, q) = 1.

In beiden Fällen wird die relative Hash-Rate des Angreifers nicht in die Analyse einbezogen, wenn z = 0 ist.

Mir ist klar, dass andere Behandlungen dieses Problems erschienen sind. Im Moment bin ich nur daran interessiert, das offensichtliche Problem mit der Analyse des Whitepapers für z = 0 zu beheben.

Ist das möglich und wenn ja, wie mache ich das?

Antworten (2)

Eine Möglichkeit, dies zu interpretieren, ist, dass tatsächlich ein Fehler vorliegt.

Eine freundlichere Interpretation ist, dass es zwei unausgesprochene Annahmen gibt:

  1. Der Angreifer führt einen Finney-ähnlichen Angriff durch – das heißt, er hat bereits einen Block vorab abgebaut, bevor er die Transaktion überhaupt versucht. Während z = 0 bedeutet, dass das ehrliche Netzwerk 1 Block hat, hat dies auch der Angreifer.

  2. Der Angreifer gewinnt Ausbreitungsrennen. Wenn es also einen Blattangreiferblock mit der Double-Spending-Transaktion und einen Blattehrlichkeitsblock gleicher Höhe mit der ursprünglichen Transaktion gibt, wird die Transaktion des Angreifers akzeptiert.

Zusammen ergibt dies für den Angreifer eine 100%ige Erfolgschance, wenn es nur 1 Bestätigung gibt.

In meiner eigenen Arbeit zu diesem Thema habe ich ausdrücklich die Annahme formuliert, dass der Angreifer bereits eine Sperre hat (während ich eine andere vereinfachende Annahme entfernt habe).

Das macht Sinn, danke. Sollte in diesem Fall nicht die Wahrscheinlichkeit berücksichtigt werden, dass der Angreifer den Block bereits geschürft hat? Mit anderen Worten, ein Angreifer mit einer niedrigen relativen Hash-Rate wird nicht sehr oft in der Lage sein, den Angriff überhaupt zu starten.
@RichApodaca: Die Wahrscheinlichkeit, dass der Angreifer bereits einen Block abgebaut hat, beträgt 100 %, da er bereits einen Block abgebaut hat. Das heißt, ein Miner mit niedriger Hashrate wird nicht viele Gelegenheiten haben, einen Angriff durchzuführen – aber er wird nicht einmal versuchen, beim Händler einzukaufen, bis er eine Gelegenheit hat, und wenn er es tut, wird es sein, wenn er eine gefunden hat Block. Der Angriff wird also auf jeden Fall erfolgreich sein, wenn der Händler nicht auf Bestätigungen wartet.
@RichApodaca: Der Angreifer muss auch den Kauf selbst sofort abschließen, bevor der Block, den er gerade gefunden hat, verwaist ist, genau wie beim Finney-Angriff. Es ist etwas weit hergeholt, weshalb es genauso vernünftig ist zu argumentieren, dass Satoshi mit seinen Berechnungen einfach nachlässig war.
Der Abschnitt „Berechnungen“ schließt einen Finney-Angriff ausdrücklich aus: „Sobald die Transaktion gesendet wurde, beginnt der unehrliche Absender im Geheimen an einer parallelen Kette zu arbeiten, die eine alternative Version seiner Transaktion enthält.“ Mit anderen Worten, der Angriff beginnt, ohne dass der Angreifer Blöcke abgebaut hat.

Bedeutet z = 0, dass eine Transaktion noch nicht bestätigt wurde oder dass sie bestätigt wurde, aber ihre Sperre noch nicht verlängert wurde?

Z = 0 bedeutet, dass die Transaktion noch nicht bestätigt wurde. Die Wahrscheinlichkeit ist 1, da unbestätigte Transaktionen unter den Annahmen, die für diese Berechnungen getroffen wurden, unabhängig von ihrer Hashrate immer als unsicher und vom Angreifer doppelt auszahlbar angesehen werden können.

z=0 bedeutet eindeutig, dass die Transaktion eine Bestätigung hat: "Der Empfänger wartet, bis die Transaktion zu einem Block hinzugefügt wurde und z Blöcke danach verknüpft wurden." Mit anderen Worten, die Transaktion wurde an die Spitze der aktiven Kette hinzugefügt.
@RichApodaca z=0 stellt eindeutig den Punkt dar, an dem das Rennen beginnt (ehrliche Kette vs. Angreiferkette). Wenn Sie pedantisch sein wollen, gehen Sie davon aus, dass beide Ketten jeweils einen Block haben (gleiche Höhe).