Warum ist 6 die Anzahl der Bestätigungen, die als sicher gilt?

Warum ist 6 die Anzahl der Bestätigungen, die als sicher gilt? Ich habe keine mathematische oder sonstige Erklärung gefunden, die erklärt, warum es 6 und nicht 5 oder 7 ist. Gibt es einen historischen Grund für 6? Gibt es eine bestimmte Methode zur Berechnung, sodass 6 nur eine gewählte Zahl ist?

Antworten (5)

Ich glaube, dies wird auf Seite 8 von Satoshis Bitcoin-Papier angesprochen, wenn die Wahrscheinlichkeit aufgezeigt wird, dass ein Angreifer aufholt.

Das Wiki sagt:

"Nur 6 Blöcke oder 1 Stunde reichen aus, um eine Umkehrung rechnerisch unpraktisch zu machen."

Das Schlüsselwort ist "unpraktisch".

Der wichtige Satz in Satoshis Artikel lautet:

"Unter der Annahme, dass die ehrlichen Blöcke die durchschnittlich erwartete Zeit pro Block benötigten, ist der potenzielle Fortschritt des Angreifers eine Poisson-Verteilung ".

Es ist also nicht so, dass jemand nicht die Welt als Erster erschaffen und eine 50-Millionen-Dollar-ASIC-Farm besitzen könnte, um die Blockchain von einem Fork sechs Blocks zuvor zu überholen, aber das wäre a.) ein gewaltiges Unterfangen , b.) für alle offensichtlich und c.) für den Angreifer furchtbar unrentabel.

Es ist auch bemerkenswert, dass es weitgehend als "6 Blöcke oder 1 Stunde" verstanden wird, je nachdem, was größer ist . Eines der großen Missverständnisse, gegen die wir lange ankämpfen mussten (insbesondere im Fall alternativer Blockchains), ist die Vorstellung, dass schnellere Bestätigungen irgendetwas ändern. Ein Netzwerk mit einer Sperrzeit von einer Minute würde 60 Bestätigungen erfordern, um als sicher zu gelten, nicht 6.
Das hilft einigen, aber es wirft eine andere Frage auf. Warum wird erwartet, dass 1 Stunde ausreicht, um eine Umkehrung rechnerisch unpraktisch zu machen?
Dahinter steckt eine Menge Mathematik, aber nach meinem (begrenzten) Verständnis ist der Schlüssel die Poisson-Verteilung . Die Wahrscheinlichkeit, dass ein bescheiden bewaffneter Angreifer „Glück“ hat und erfolgreich doppelt ausgibt, ohne mindestens 51 % des Netzwerks zu haben, sinkt entlang einer solchen Verteilung, und 60 Minuten Rechenzeit sind der Punkt, an dem es angemessen unwahrscheinlich ist, dass eine Transaktion möglich ist rückgängig gemacht werden (dh der Punkt, an dem der "Long Tail" der Verteilung beginnt).
David, ich fürchte, du bist derjenige, der eine falsche Vorstellung hat. Die mathematischen Teile, die sich auf die Poisson-Verteilung und dergleichen beziehen, sprechen von der Anzahl der Blöcke, nicht von der Zeit. 6 Blöcke garantieren, dass jemand mit, sagen wir, 10% der Hashrate, eine vernachlässigbare Chance hat, doppelt auszugeben. Wenn jeder Block 1 Minute lang ist, dann sind das 6 Minuten. Die Zeit (1 Stunde) spielt nur eine Rolle, wenn wir davon ausgehen, dass der Angreifer seine hohe Hashrate nicht so lange aufrechterhalten kann.
sollte ich davon ausgehen, dass David eher Recht hat als Meni, da er mehr Stimmen erhalten hat?
@Griffin: Schauen Sie sich bitcoil.co.il/Doublespende.pdf an und urteilen Sie selbst.
@MeniRosenfeld Danke Meni Rosenfeld! Ich habe die relativ empfohlenen Bestätigungsraten für hohes Vertrauen für Bitcoin und Litecoin aufgetragen und logarithmisch extrapoliert. Ich kam zu dem Schluss, dass eine 1s-Transaktionsverifizierung mit dem gleichen Vertrauen in 2,3 Minuten bestätigt werden konnte. Der Eitelkeit halber gehe ich davon aus, dass Sie mir recht gegeben haben. ;))

Viele Leute zitieren das Satoshi-Papier falsch und nehmen an, dass 6 ein harter Wert ist.

Satoshis Papier beschreibt die Anzahl der Bestätigungen, die erforderlich sind, um zu 99,9 % sicher zu sein (weniger als 1 zu 1000 Erfolgschancen), dass ein Angreifer keine längere Kette aufbauen konnte, um die Transaktion rückgängig zu machen.

http://bitcoin.org/bitcoin.pdf

P < 0.001
q=0.10   z=5
q=0.15   z=8
q=0.20   z=11
q=0.25   z=15
q=0.30   z=24
q=0.35   z=41
q=0.40   z=89
q=0.45   z=340

p ist die Wahrscheinlichkeit, dass der Angreifer schließlich eine längere Kette erhält und eine Transaktion rückgängig macht (in diesem Fall 0,1 %). q ist der Prozentsatz der Hashing-Macht, die der Angreifer kontrolliert. z ist die Anzahl der Blöcke, um das Risiko einer Umkehrung unter p (0,1 %) zu bringen.

So können Sie sehen, ob der Angreifer einen kleinen Prozentsatz der Hashing-Power von 6 Blöcken hat. Denken Sie daran, dass 10 % des Netzwerks zum Zeitpunkt des Schreibens ~100 GH/s beträgt. Wenn der Angreifer jedoch einen größeren Prozentsatz der Hashing-Macht hätte, würde es immer länger dauern, bis sichergestellt ist, dass eine Transaktion nicht rückgängig gemacht werden kann.

Wenn der Angreifer deutlich mehr Hashpower hätte, sagen wir 25 % des Netzwerks, wären 15 Bestätigungen erforderlich, um sicher zu sein (99,9 % Wahrscheinlichkeit), dass ein Angreifer es nicht rückgängig machen kann.

Wenn der Angreifer q von > 50 % hat ("der 51-%-Angriff"), wird der Angreifer bei unbegrenzter Zeit unweigerlich mit der längsten Kette enden.

Zur Bearbeitung: Um die "unbegrenzte Zeit" zu verdeutlichen, wird die Kette mit der höheren Hashrate unweigerlich am längsten enden, aber die Wahrscheinlichkeit spielt immer noch eine Rolle. Wir können nicht mit 100%iger Sicherheit sagen, wie lange es dauern wird, bestenfalls können wir ein Konfidenzintervall angeben. Wenn der Angreifer nur knapp schneller ist als die guten Miner (51 % vs. 49 %), kann es sehr lange dauern, bis ein Angreifer ein Defizit von 6 Blöcken überwunden hat. Je stärker der Angreifer dominiert (dh 70 % gegenüber 30 %), desto schneller wird das 95 %-Konfidenzintervall erreicht.

Wenn der Angreifer aq >50% hat, braucht er nicht unbegrenzt Zeit, sondern nur genug Zeit, um mehr Hashes zu produzieren, als zur „ehrlichen“ Blockchain beigetragen haben.
Mein Punkt mit unbegrenzter Zeit ist, dass wir nicht genau wissen, wie lange es dauern wird, bis ein Angreifer vorankommt. Selbst mit >50% der Hashpower ist der Angreifer immer noch vom Glück (gut oder schlecht) betroffen. Das meiste, was gesagt werden kann, ist mit einem bestimmten Konfidenzintervall. dh "Mit 95% Vertrauen hat ein Angreifer mit x% der Hashrate die längste Kette nach y Blöcken". Bei knapp über 50 % Hashrate ist die Zeitspanne, um ein Vertrauen von 95 % zu haben, sehr lang und selbst das ist keine Garantie. Die Kette mit >50% Hashrate wird unweigerlich am längsten sein, aber die benötigte Zeit ist wahrscheinlich.
Basieren diese auf Testbeobachtungen oder einer fundierten Theorie?
Es ist eine grundlegende Wahrscheinlichkeit, ich würde es eher Mathematik als eine Theorie nennen, aber man könnte es mit einer Monte-Carlo-Simulation beobachten.

Hier sind einige der relevanten Abschnitte aus Satoshis Papier: http://bitcoin.org/bitcoin.pdf

"11. Berechnungen Wir betrachten das Szenario eines Angreifers, der versucht, eine alternative Kette schneller als die ehrliche Kette zu generieren. ... Das Rennen zwischen der ehrlichen Kette und einer Angreiferkette kann als binomialer Random Walk charakterisiert werden. Das Erfolgsereignis ist das Die ehrliche Kette wird um einen Block verlängert, wodurch ihr Vorsprung um +1 erhöht wird, und das Fehlerereignis besteht darin, dass die Kette des Angreifers um einen Block verlängert wird, wodurch die Lücke um -1 verringert wird ... Die Wahrscheinlichkeit, dass ein Angreifer ein bestimmtes Defizit aufholt ist analog zu einem Gambler's Ruin-Problem. ...

p = Wahrscheinlichkeit, dass ein ehrlicher Knoten den nächsten Block findet q = Wahrscheinlichkeit, dass der Angreifer den nächsten Block findet qz = Wahrscheinlichkeit, dass der Angreifer jemals von z Blöcken dahinter aufholen wird

Gleichung

Unter der Annahme, dass p > q ist, sinkt die Wahrscheinlichkeit exponentiell, wenn die Anzahl der Blöcke zunimmt, die der Angreifer einholen muss. Mit den Chancen gegen ihn, wenn er nicht früh einen glücklichen Sprung nach vorne macht, werden seine Chancen verschwindend gering, wenn er weiter zurückfällt ... der potenzielle Fortschritt des Angreifers wird eine Poisson-Verteilung sein ... Um die Wahrscheinlichkeit des Angreifers zu erhalten jetzt noch aufholen könnte, multiplizieren wir die Poisson-Dichte für jeden Fortschritt, den er hätte machen können, mit der Wahrscheinlichkeit, dass er von diesem Punkt an aufholen könnte.

Konvertieren in C-Code..

include <math.h>
double AttackerSuccessProbability(double q, int z)
{
    double p = 1.0 - q;
    double lambda = z * (q / p);
    double sum = 1.0;
    int i, k;
    for (k = 0; k <= z; k++)
    {
        double poisson = exp(-lambda);
        for (i = 1; i <= k; i++)
            poisson *= lambda / i;
        sum -= poisson * (1 - pow(q / p, z - k));
    }
    return sum;
}

Wenn wir einige Ergebnisse ausführen, können wir sehen, dass die Wahrscheinlichkeit exponentiell mit z abfällt. "

Könnten Sie den relevanten Teil zusammenfassen?
Die Schlussfolgerung ist, dass die Wahrscheinlichkeit, dass jemand Blöcke generieren kann, exponentiell abfällt. Wir wissen, dass sie dies tatsächlich tun können, wenn sie 51 % des Netzwerks haben. Es scheint also, dass, wenn jemand sagen wir 10% des Netzwerks hätte, er manchmal mit 0 Bestätigungen doppelte Ausgaben tätigen könnte, und die Chancen, dass er 2 Blöcke oder 3 oder mehr bekommt ... sinkt exponentiell. So interpretiere ich das, ich verstehe die Mathematik, nach der er löst, nicht im Detail. Ich sehe immer noch keine Vernunft für 6 Blöcke, im Gegensatz zu 4 oder 8. Vielleicht gibt es keine, und das war nur eine nette Zahl, die ausgewählt wurde.
Mit 30% und 6 Blöcken ist die Erfolgswahrscheinlichkeit viel höher als 1/2000, sie liegt näher bei 13% (ich interpoliere aus Satoshis Ergebnissen).
@MeniRosenfeld Scheiß auf dein Recht. Ich habe den falschen Wert nachgeschlagen. Ich lösche meinen vorherigen Kommentar, weil er sachlich falsch ist.

Die Zahl von 6 Blöcken ist völlig willkürlich. Es basiert auf der Annahme, dass der Angreifer nicht mehr als 10 % der Netzwerk-Hashrate anhäufen wird und dass eine vernachlässigbare Wahrscheinlichkeit von 0,1 % für eine erfolgreiche Doppelausgabe akzeptabel ist.

Eine detailliertere Analyse dazu finden Sie unter Analysis of Hashrate-Based Double-Spending

Bei mehr Bestätigungen ist die Wahrscheinlichkeit einer erfolgreichen Double-Spend-Verringerung höher. Während es möglich ist, eine doppelte Ausgabe mit weniger als 51 % der Hashing-Leistung durchzuführen, muss man mehr Glück haben als der Rest der Miner, dh. Blöcke schneller lösen als andere. Dies wird ewig so weitergehen (um genau zu sein: es ist sehr unwahrscheinlich), sodass der Angreifer nicht in der Lage sein wird, die gesamte Kette zu forken. Da Pools bis vor kurzem 30-40 % der gesamten Hashing-Leistung kontrollierten, wäre die 6-Bestätigungs-Regel nicht sicher gewesen, wenn der Pool-Betreiber sich entschieden hätte, eine bösartige Handlung zu begehen.