Ich würde denken, dass die Änderung des Bitcoin-Protokolls dahingehend, dass eine Supermajorität, sagen wir 60 % oder 75 %, zur Überprüfung des Arbeitsnachweises erforderlich ist, dazu beiträgt, das Risiko eines 51-%-Angriffs zu verringern. Wenn dem so ist, was sind die größten Hindernisse oder Dinge, die ich nicht in Erwägung ziehe?
Das einzige, was mir sofort in den Sinn kam, war, dass es den Zeithorizont verlängern würde, in dem die meisten Transaktionen verifiziert werden, was dem Ökosystem erheblich schaden könnte. Was sonst?
Der 51%-Angriff ist ein emergentes Verhalten des Systems. Es liegt nicht daran, dass irgendwo im Protokoll „50 %“ vergraben sind, die einfach auf 60 % oder 75 % geändert werden können. Jemand mit mehr Hashing-Power als alle anderen zusammen kann mit genügend Zeit immer eine längere Kette aufbauen als alle anderen.
David Schwartz hat eine gute Antwort.
Aber um ein wenig weiter zu untersuchen, können Sie sich das Proof-of-Work-System von Bitcoin auf lange Sicht grob als Wahl vorstellen, um zu entscheiden, welche die „wahre“ Blockchain ist und somit welche Transaktionen als stattgefunden anerkannt werden. So wie es aussieht, erhält jeder Miner bei dieser Wahl ein Stimmrecht proportional zu seiner Hash-Macht (ein Hash, eine Stimme), und das Ergebnis wird durch die Mehrheit bestimmt. Ein Miner, der mehr als die Hälfte der Hash-Macht kontrolliert, kann also immer die Wahl gewinnen und ist als solcher praktisch ein Diktator: Er kann entscheiden, welche Transaktionen anerkannt werden und welche nicht. Dies macht es ihr sehr leicht, Menschen zu betrügen, da sie eine Transaktion durchführen, die Waren abholen und später erklären kann, dass die Transaktion nie stattgefunden hat und sie immer noch ihr Geld hat.
Angenommen, wir könnten einen Weg finden, um die Wahl von einer Mehrheit zu einer Supermajorität zu ändern (obwohl mir nicht sofort klar ist, wie das erreicht werden könnte). Nehmen wir an, eine 75-prozentige Supermajorität war erforderlich. Dies hätte den Vorteil, dass ein Angreifer mit beispielsweise 70 % der Hash-Power nicht mehr zum Diktator werden könnte.
Aber es hätte das ernsthafte Problem, dass ein Angreifer mit nur 30% der Hash-Power einen Denial-of-Service-Angriff starten könnte, indem er einfach auf eine gegenteilige Weise abstimmt. Damit verhindert er, dass eine Supermajorität erreicht wird, keine Transaktionen bestätigt werden können und das gesamte Währungssystem kreischend zum Erliegen kommt.
Ich nehme an, dieses Problem ist jedem politischen System eigen, das eine Supermajorität verwendet (siehe zum Beispiel den US-Senat). Bitcoin ist insofern etwas anders, als die Fragen, über die abgestimmt wird, nicht kontrovers sein sollen: Jeder ehrliche Wähler sollte auf die gleiche Weise abstimmen. Die Minderheit sollte also absichtlich keine Stimme haben. Und unter dem derzeitigen System haben sie überhaupt keine Stimme. Aber bei einer Supermajorität kann die Minderheit die Mehrheit behindern, und das wollen wir nicht.
Ich denke, Sie sollten genau angeben, was Sie mit "51% Angriff" meinen. Wenn Sie mit Angriff doppelte Ausgaben meinen, beschreibt das ursprüngliche Bitcoin-Papier von Satoshi, dass es mehr Belohnung bringt, alle Blöcke für sich selbst abzubauen und 100 % der Belohnungen zu erhalten, anstatt eine Neuorganisation für das doppelte Senden zu versuchen, was möglich wäre verlieren Sie die Belohnungen und damit die Miner (die Ihren Pool während Ihres belohnungslosen Versuchs, die Historie neu zu organisieren, verlassen würden). Aus dem Papier:
Wenn ein gieriger Angreifer mehr CPU-Leistung als alle ehrlichen Knoten zusammenbauen kann, müsste er wählen, ob er damit Menschen betrügen möchte, indem er seine Zahlungen zurückstiehlt, oder ob er damit neue Coins generiert. Er sollte es profitabler finden, sich an die Regeln zu halten, solche Regeln, die ihn mit mehr neuen Münzen begünstigen als alle anderen zusammen, als das System und die Gültigkeit seines eigenen Reichtums zu untergraben.
Ich habe versucht zu quantifizieren, unter welchen Umständen ein 51%-Angriff in den Kommentaren zu einer Schwesterantwort durchgeführt werden kann und unter welchen Umständen nicht, und ein paar Leute zogen mich auf die mathematischen Vor- und Nachteile zurück. Also dachte ich, ich schreibe das genau auf, bestenfalls beantworte ich die Frage etwas genauer als bisher getan, und schlimmstenfalls mache ich es jemandem leichter, mich genau darauf hinzuweisen, wo ich falsch liege.
Angenommen, Sie kontrollieren etwa die Hälfte der Rechenleistung im Netzwerk und möchten das Netzwerk angreifen. Dafür gibt es im Wesentlichen zwei Möglichkeiten:
Lassen Sie uns zuerst die Mechanik davon diskutieren und dann die Mathematik betrachten:
Angenommen, es gibt einige Transaktionen, von denen Sie profitieren können, indem Sie sie aus der Blockchain entfernen oder hinzufügen, und es ist Ihnen egal, ob jemand bemerkt, dass Sie einen Angriff vorbereiten. Nehmen Sie zur Vereinfachung an, es handelt sich um eine einzelne Transaktion mit einer Gegenpartei namens Bob, die Sie entfernen möchten. Nehmen wir an, dass die Transaktion N-mal auf der legitimen Kette bestätigt werden muss, bevor Sie zum Angriff bereit sind (z. B. mussten Sie auf N Bestätigungen warten, bevor Sie Fiat im Austausch für einen Coin-Transfer erhalten).
Um eine alternative Kette zu erstellen, die als die längste Kette akzeptiert wird, müssen Sie N Blöcke zurückgehen, einen neuen Block mit Ihrer Änderung hinzufügen und dann Blöcke zur gegabelten Kette hinzufügen, bis sie länger als die legitime Kette ist. Dazu benötigen Sie O(N^2) Blöcke. Während Sie dies tun, veröffentlichen Sie entweder jeden Block der gegabelten Kette und machen so das gesamte Netzwerk auf die Gabelung aufmerksam (nennen Sie es Fall 1.a), oder Sie hören überhaupt auf, Blöcke zu veröffentlichen, und lassen alle wissen, dass Sie sich zurückgezogen haben Ihre Ressourcen aus dem Hashing (nennen Sie es Fall 1.b).
Sobald Sie dies getan haben, setzen Sie sich Gegenmaßnahmen aus – bevor Sie die richtige Anzahl an Blöcken erreichen. Im Fall 1.a wird der Fork von anderen Akteuren im Netzwerk untersucht. Die Leute werden versuchen, den Fork so schnell wie möglich zu lösen, wenn er unbeabsichtigt ist, und zu erkennen, welche Seite bösartig ist, wenn dies nicht der Fall ist. (Kurze unbeabsichtigte Gabeln wurden in der Vergangenheit durch Vereinbarung zwischen den großen Pools behoben.)
Nun wird Bob offensichtlich auf die (wahrscheinlich große) Transaktion hinweisen, die sich nicht in Ihrer Kette befindet, und Sie können natürlich genauso darauf hinweisen, dass es sich um eine betrügerische Transaktion handelt, die von Bob und seinen bösen Kohorten eingefügt wurde. Er hat jedoch die Tatsache, dass es in N Transaktionen vorgekommen ist, bevor irgendjemand von einem Fork auf seiner Seite wusste. Es wird Ihnen schwer fallen zu erklären, warum es in keinem Block Ihrer Kette auftaucht - ein Großteil des Netzwerks muss es gesehen haben, und da der Fork O (N ^ 2) Blöcke lang ist, ist die Entschuldigung, dass es nicht Noch nicht erreicht, du wirst dich nicht waschen. (Ein weniger ausgeklügelter Angriff, dessen Ziel es ist, Bitcoin zu zerstören, bei dem Sie sich beispielsweise mit dieser Strategie das Geld aller selbst bezahlen, wird an dieser Stelle vollständig scheitern.)
Sobald genügend Leute Ihre Seite der Fork als die korrupte erkennen, „checkpointen“ sie einfach einen Block auf der anderen Seite, vielleicht denjenigen, der zuerst die Transaktion mit Bob enthält. Das bedeutet, dass dieser Block als Wurzel der Kette behandelt wird. Dies wird bereits gelegentlich durchgeführt, wenn Client-Software aktualisiert wird, um den Überprüfungsaufwand für einen Client zu reduzieren. Der Effekt wird sein, dass sich Bitcoin selbst verzweigt, wobei Leute, die Ihre Kette akzeptieren, ein anderes Hauptbuch verwenden als diejenigen, die Ihre Kette unabhängig von der Länge ablehnen. Dies kann für Pools im Wesentlichen sofort und für andere Clients ziemlich schnell durchgeführt werden, obwohl sie möglicherweise Ausfallzeiten erleiden, bis das Problem behoben ist. Solange alle schnell dazu übergehen, Ihre Kette abzulehnen, haben Sie die Kontrolle über eine wertlose Währung Bitcoin A,
Was wäre, wenn Sie Strategie 1.b übernehmen und Ihren Fork geheim halten, bis er lang genug ist, um die „richtige“ Kette zu schlagen? Vermutlich bemerken viele Leute, dass Ihre Hashing-Power nicht mehr da ist. Das wird sie wahrscheinlich beunruhigen, und sie werden versuchen, etwas dagegen zu unternehmen. Die einfachste Antwort ist wieder, einen Block zu „checkpointen“. Abhängig davon, was N vernünftigerweise zu erwarten ist, werden sie eine Vorstellung von N^2 haben und wie lange es dauern wird, bis Sie aufholen. Sie müssen Blöcke überprüfen, mit denen alle (außer Ihnen) zufrieden sind, und zwar häufig genug, um Ihren mutmaßlichen Angriff zu vereiteln. Wenn Sie weiter angreifen wollen, müssen Sie jedes Mal, wenn sie dies tun, eine neue Transaktion generieren und von vorne beginnen.
Im Idealfall möchte die Community Blöcke überprüfen, die etwas älter als N Blöcke sind, damit jeder Zeit hat, sich zu vergewissern, dass er mit den Transaktionen in diesem Block einverstanden ist, und auf keinen Fall warten möchte, bis er in der Nähe von N ^ 2 Blöcken ist ; falls Sie eine Gewinnkette erhalten und vor dem Kontrollpunkt mit der Veröffentlichung beginnen. Da N^2 viel größer als N ist, gibt es viel Spielraum dafür.
Beachten Sie, dass das Scheitern dieser Strategie darauf beruht, dass Sie beim Mining verpasst werden. Wenn ein Angreifer einen geheimen Mining-Pool hat, den niemand kennt und der in etwa so groß ist wie alle bestehenden Minings, kann er mit diesem Angriff erfolgreich sein. (Nennen Sie es einen 101%-Angriff.)
In Strategie 2. greifen Sie die Kette an, versuchen aber, den Anschein zu erwecken, nicht böswillig zu sein, bis Ihr Angriff erfolgreich war. Die Art und Weise, wie Sie dies tun, besteht darin, zu versuchen, die legitime Kette zu überholen, bevor jemand Ihre Abwesenheit bemerkt. Wenn Sie (ungefähr) die Hälfte der Leistung haben, wird jeder zweite neue Block im Durchschnitt Ihnen gehören, aber es könnte lange Folgen von nur Ihren Blöcken oder nur solchen geben, die nicht Ihnen gehören.
Was Sie tun, ist, sobald Sie Ihre und Bobs Transaktion veröffentlicht haben, versuchen Sie, N + 1 Blöcke zu erstellen, während der Rest des Netzwerks N erstellt. Sie halten all diese geheim, bis die anderen Miner N Blöcke abgebaut haben. und Bob hat das Kokain oder den Leonardo-Cartoon oder was auch immer übergeben, und dann veröffentlichen Sie alle N+1 davon, wodurch Ihre Kette am längsten wird.
Wenn Sie es nicht schaffen, N + 1 zu erreichen, bevor der Rest des Netzwerks N erreicht, werfen Sie Ihren Versuch weg und gehn zurück, um die richtige Kette zu hashen. Sie warten eine Weile, arrangieren dann eine weitere Transaktion mit Bob und versuchen es erneut. Die Zeit, die Sie warten müssen, hängt davon ab, wie unwahrscheinlich es ist, dass N Blöcke hintereinander abgebaut werden, keiner davon von Ihnen.
Ein paar Punkte zu dieser Methode. Zunächst einmal, während Sie in 1.a Ihre gegabelten Blöcke gegenüber dem Rest des Netzwerks rechtfertigen mussten und daher einen Anreiz hatten, Ihre Änderungen so plausibel wie möglich zu machen, können Sie hier beliebige Änderungen vornehmen – sogar Bezahlen Sie sich alle Bitcoins, die es gibt. Niemand wird die gefälschten Transaktionen sehen, bis es zu spät ist.
Was das wirklich bedeutet, ist, dass Sie keinen betrogenen Bob brauchen, der nach einer kleinen Anzahl von Bestätigungen gerne Nicht-Bitcoin-Assets weitergibt, vorausgesetzt , Sie werden gerne in Bitcoin bezahlt. Wenn Sie die Währung sabotieren wollen, können Sie dies tun, und es steht Ihnen tatsächlich frei, N als eine beliebige Zahl zu wählen, die klein genug ist, dass Sie keinen Verdacht erregen, dass Sie Strategie 1.b anwenden. Wenn Sie den Bitcoin nur wollen, um Fiat zu kaufen oder ein Lösegeld zu zahlen, müssen Sie sich an Bob's N halten.
Zweitens müssen Sie abwägen, wie verdächtig Ihr Verhalten ist und wie oft Sie es versuchen müssen. Wenn Sie weit mehr als 50 % haben, sind lange Sequenzen von Blöcken ohne von Ihnen geschürfte verdächtiger, und Sie müssen möglicherweise ein paar Blöcke in der regulären Kette hashen, damit die Dinge normal aussehen. Wenn Sie fast 50 % haben, erscheint es weniger verdächtig, aber es wird schwieriger für Sie, das Rennen um N+1 zu gewinnen. Natürlich hilft das Vergrößern von N in jedem Fall, diesen Angriff zu verhindern.
Drittens könnte Ihnen auch hier viel geheime Kraft helfen, indem Sie das Rennen gewinnen und gleichzeitig weniger offensichtlich machen, dass Sie eher auf Ihrer Gabel als auf der richtigen Kette hashen. Sie könnten versuchen zu beurteilen, wie lohnenswert es ist, geheime Hashing-Kapazitäten für Angriffe bereitzuhalten, anstatt sie zu verwenden, um ehrlich bezahlt zu werden.
Ich akzeptiere, was einige Leute gesagt haben, dass knapp über oder knapp unter 50 % den Unterschied zwischen einem definitiven Erfolg mit 1.a oder 1.b und nur mit einer geringen Wahrscheinlichkeit ausmachen. Dies folgt nicht aus dem schwachen Gesetz der großen Zahlen, sondern aus der Wiederholungseigenschaft von 1-d Random Walks (ein Unterschied zwischen den beiden besteht darin, dass letzteres anwendbar ist, selbst wenn Sie genau 50% konstant hätten). Ich glaube jedoch argumentiert zu haben, dass es nicht gut genug ist, um schließlich erfolgreich zu sein - die Zeit von O (N ^ 2), die Sie benötigen (was aus dem zentralen Grenzwertsatz stammt), sollte bedeuten, dass Ihr Angriff normalerweise verhindert wird.
Vorausgesetzt, Sie haben dagegen knapp 50 %, sollten Sie mit Strategie 2. erfolgreich sein, unabhängig davon, ob Sie knapp darüber oder knapp darunter sind. Natürlich helfen Ihnen höhere Proportionen und niedrigeres N, aber die Auswirkungen sind jetzt geringer - wenn Sie 1/2 - h haben, für h klein und positiv, sind Ihre Chancen 1/2 - O (h / sqrt (N)) . Das Central Limit Theorem funktioniert in die entgegengesetzte Richtung – selbst mit einer leicht gegen Sie gerichteten Münze ist es nicht unwahrscheinlich, dass Sie ein kurzes Rennen mit einem einzigen Wurf gewinnen.
Sie könnten auch verschiedene einfache Dinge tun, z. B. nur dann einen Angriff starten, wenn Sie den ersten Block vor den anderen Minern erhalten, oder nur, wenn Sie die ersten beiden Blöcke erhalten usw. Ob dies eine gute Idee ist und wie genau abgestimmt werden muss Dieser Angriff hängt davon ab, wie misstrauisch die Leute sind und/oder wie entgegenkommend Bob ist.
Wenn Sie auf Zerstörung aus sind, können Sie N auf Ihre eigene Kapazität optimieren - wenn Sie weniger als 50 % haben, können Sie kurze Rennen viel besser gewinnen als lange.
Zuallererst sollten Sie so viele Bestätigungen verwenden, wie Sie sich leisten können, wenn Sie glauben, dass Ihre Transaktion diejenige sein könnte, die GHash.io dazu anregt, abtrünnig zu werden. Zweitens muss es Leute da draußen geben, die nach ungewöhnlichen Mustern von Mining-Aktivitäten suchen, insbesondere große Miner, die aus dem Netzwerk verschwinden.
Seien Sie jedoch gewarnt, dass eine mutwillige Zerstörung von Bitcoin bereits unter einer Konzentration von 50 % sehr wahrscheinlich ist und dass jede Art von Angriff leicht passieren kann, wenn jemand über große und geheime Machtreserven verfügt (dies gilt für viele Altcoins, wenn ihr Arbeitsnachweis dies kann effizient auf Bitcoin-Hardware durchgeführt werden).
Der Angreifer muss Konsequenzen haben, die groß genug sind, um den Schlag seines eigenen Angriffs zu spüren.
Um die Konsequenz für ihn zu schaffen: Der Wähler (Trusted Node/Full Node) muss Bitcoin haben, und je mehr Bitcoin der Node hat, desto mehr Stimmrecht (mehr Vertrauen haben sie). Wenn der Angreifer beispielsweise wirklich das gesamte Bitcoin-Netzwerk töten will, muss er mindestens 51 % der Bitcoins im Umlauf haben. Wenn ein Bitcoin-Netzwerk 100 Milliarden Dollar wert ist. Er muss es im Wert von 50 Milliarden Dollar kaufen. Versuchen Sie, das Netzwerk zu töten, und er wird seine 50 Milliarden Dollar verlieren. Ja, andere werden etwas an Wert verlieren, aber er wird viel mehr an Wert verlieren, und wir können eine weitere Kryptowährung starten.
Es muss kein lineares 1 Bitcoin = 1 Stimmrecht sein. Es kann eine Funktion sein. wie Stimmrecht = root2 (Bitcoin) oder andere Funktionen.
Das einzige Problem dabei ist, dass die meisten Leute einen zentralisierten Knoten verwenden (weil sie entweder einen leichten Knoten verwenden und keine Ressourcen für einen vollständigen Knoten verschwenden wollen), sodass ihre Stimmrechte irgendwo zentralisiert sein und vom verwendet werden können Angreifer zum Angriff (unter der Annahme, dass mehr Bitcoin = mehr Stimmrecht). Die Lösung hierfür besteht wahrscheinlich darin, eine Verlangsamungsfunktion (wie die Root-Funktion) anzuwenden, um ihre Stimmkraft zu begrenzen. Aber dann kann der Angreifer viele Brieftaschen mit kleinem Wert verwenden, um die große zentralisierte Brieftasche zu untergraben. (Alles in Maßen Taktik, zu viel oder zu wenig ist nicht gut) Also sollten wir auch das Stimmrecht derer senken, die sehr wenig Bitcoin in ihrem Knoten haben – siehe Bild.
Was passiert also mit dem Knoten, der kein Bitcoin hat? Es wird sowieso nutzlos sein, weil sie aus dem Netzwerk saugen werden. Ich würde sagen, ihnen überhaupt keine Bandbreite und Stimmrechte zuzuweisen, da sie ohnehin kein Bitcoin verwenden und nur Netzwerkressourcen verschwenden. Lassen Sie sie vielleicht eine Referenz mit niedriger Priorität sein, nur um sie ein wenig nützlich zu machen.
Gleiches gilt für die Miner. Wir sollten eine ähnliche Funktion wie auf dem Bild zuweisen. Wir wollen nicht, dass große Bergleute das Netzwerk zentralisieren und am Ende zu viel Macht haben, um das Netzwerk zu ruinieren. Da die Bitcoin-Community von den Menschen und für die Menschen ist; Das ist der Sinn der ganzen Sache mit der Dezentralisierung, nicht wahr? Damit wir nicht von der Großmacht schikaniert werden, die alles zentralisieren will. Wir sollten definitiv die große Macht begrenzen, ebenso wie die nutzlosen Leute, die Bitcoin nicht verwenden und aus dem Netzwerk saugen und die echte Gemeinschaft als Ganzes verlangsamen.
Kann dies auch beim Umgang mit dem DDOS-Angriff helfen?
Nate Eldredge
Brenda Lang