Ich versuche, tief in Casper einzudringen, und eines der Dinge, die immer wieder auftauchen, ist der Langstreckenangriff in PoS. Ich verstehe den Angriff auf hohem Niveau – im Grunde würden Sie eine große Anzahl von Blöcken zurückgehen, wo Sie einen großen Anteil am Netzwerk hatten, und anfangen, Blöcke zu schmieden, so dass Sie, wenn Sie auf der Höhe der Hauptkette angekommen sind, einen großen halten würden Betrag der Währung und übernehmen die Kette.
Ich habe hier eine ähnliche Frage bezüglich des Angriffs gesehen, deren Antwort den folgenden Auszug aus dem Ethereum-Blog zitierte:
Nehmen Sie in einem naiv implementierten Proof of Stake an, dass es einen Angreifer mit 1% aller Münzen am oder kurz nach dem Genesis-Block gibt. Dieser Angreifer startet dann seine eigene Kette und beginnt, sie abzubauen. Obwohl der Angreifer nur in 1 % der Fälle für die Erstellung eines Blocks ausgewählt wird, kann er leicht 100-mal so viele Blöcke produzieren und auf diese Weise einfach eine längere Blockchain erstellen.
Die Frage, die ich zu diesem Zitat habe, lautet: Wie genau würde die geheime Kette die übergeordnete Kette übertreffen ? Nach meinem Verständnis besteht der allgemeine Weg, einen Block in PoS 3 abzubauen, darin, diese Gleichung zu lösen:
hash(kernel) ≤ target × balance of UTXO
Wo der Kernel von unten abgeleitet ist:
Wie können Sie dies manipulieren, um Blöcke schneller als die übergeordnete Kette abzubauen? Sind es die Zeitstempel?
Vielen Dank!
EDIT: Nachdem ich ein bisschen mehr darüber nachgedacht habe, bin ich mir nicht sicher, ob dieser Angriff tatsächlich machbar ist ... es scheint rein theoretisch zu sein. Meine Logik ist wie folgt: Angenommen, der Angreifer hat seine eigene Chain mit sogar 50 % der gesamten „Mainchain“-Münzen erstellt. Da er sich auf seiner eigenen Kette befindet, hat er 100 % der gesamten gestaketen Coins auf seiner eigenen Kette. Mit 100 % der gesamten Coins auf seiner eigenen Chain wird er sicherlich der einzige Minter auf der Secret Chain sein und wird für die Hälfte der insgesamt möglichen „Minting Opportunities“ auf der Chain ausgewählt.
Da er der einzige Online-Staker in seiner eigenen Kette ist, prägt er tatsächlich jeden Block, aber das Problem ist, dass der Angreifer immer noch der 1-Transaktion pro UTXO pro Sekunde unterliegt, sodass er Blöcke nicht schneller produzieren kann. Er kann sicherlich eine massive Blockchain produzieren, die viel größer als die Mainchain ist, da die Zeit, die er braucht, um durch ein paar Jahre zu beschleunigen, in der Simulation vielleicht nur ein paar Sekunden beträgt, aber das Problem wird sein, dass der Kopfzeitstempel doppelt so lang sein könnte wie die Mainchain (vielleicht ein Jahr), und Kunden werden einfach keine Kette akzeptieren, deren Kopf Jahre in der Zukunft liegt.
Wenn jemand zusätzliche Einsichten oder einen anderen Ansatz hat, um über das Problem nachzudenken, würde ich mich freuen! Ich fand diese Quelle ziemlich gut.
Wie der Autor des zitierten Artikels selbst bemerkte:
Ursprünglich dachte ich, dass dieses Problem grundlegend ist, aber in Wirklichkeit ist es ein Problem, das umgangen werden kann. Eine Lösung besteht beispielsweise darin, zu beachten, dass jeder Block einen Zeitstempel haben muss, und Benutzer lehnen Ketten mit Zeitstempeln ab, die ihrem eigenen weit voraus sind. Ein Langstreckenangriff muss also in die gleiche Zeitspanne passen, aber da es sich um eine viel geringere Menge an Währungseinheiten handelt, wird seine Punktzahl viel geringer sein.
Ihre Schlussfolgerung über die Unmöglichkeit der „geheimen Kette“ mit nur 1% Anteil, die die Hauptkette übertrifft, ist also richtig, da die Kunden die Blockzeitstempel validieren (sie können nicht zu weit in die Zukunft gehen).
Der Begriff Long-Range Attack kann sich je nach Kryptowährung und gewähltem Algorithmus auf unterschiedliche Dinge beziehen. Die Formel, die Sie in Ihre Frage aufgenommen haben
hash(kernel) ≤ target × balance of UTXO
gilt nicht für Ethereum und Casper, da es dort kein UTXO gibt.
Der im NeuCoin-Whitepaper beschriebene vorprogrammierte Langstreckenangriff, der sich aus der Tatsache ergibt, dass der Einsatzmodifikator eines bestimmten Einsatzes statisch ist und aufgrund der Verwendung des Münzalters in der Mining-Gleichung, gilt auch nicht für Ethereum.
Ich bin keineswegs ein PoS-Experte, aber ich werde versuchen, die Logik hinter dem in On Stake von V. Buterin beschriebenen Langstreckenangriff zu skizzieren, der sogar mit weniger als 50 % Beteiligung an einer „nicht geheimen“ Kette funktioniert:
SHA256(Prevhash + Adresse + Zeitstempel) <= 2^256 * Balance / Diff
„Es steht nichts auf dem Spiel“-Problem: Ein rationaler Miner wird sich entscheiden, auf 2 Chains oder mehr abzubauen, wann immer sich die Gelegenheit bietet, um seinen erwarteten Wert zu maximieren.
Um dieses Problem zu lösen, kann der Slasher- Algorithmus verwendet werden. Wenn ein Miner einen Block auf 2 Ketten erstellt, wird er bestraft. Dafür kann jeder den Block von der anderen Kette in die ursprüngliche Kette einreichen, um die Mining-Belohnung zu stehlen und den Doppelwähler zu bestrafen.
Langstreckenangriff ist, wenn ein Miner beginnt, eine Sidechain 1000 oder mehr Blöcke zurück zu schürfen.
Die Lösung, wie der Autor feststellte, besteht darin, in jeden Client eine Regel einzuführen, um keine Forks zu akzeptieren, die mehr als 1000 Blöcke zurückreichen. Das Problem ist jedoch, was passiert, wenn ein neuer Benutzer das Bild betritt. Dann hält er hybride PoW/PoS- und Social-Graph-Systeme für eine mögliche Lösung.
Mit dem im Mauve Paper beschriebenen Finalitäts-Gadget :
selbst mehrheitliche Kollusionen können keine 51%-Angriffe mit mittlerer oder langer Reichweite durchführen, ohne ihren gesamten Äther zu zerstören.
Nach langer Recherche verstehe ich diesen Angriff jetzt besser. Ich möchte zunächst anmerken, dass dieser Angriff nicht auf Ethereum zutrifft, da Ethereum ein Proof-of-Work ist, und auch nicht auf Ethereum mit Casper FFG, das darüber gelegt wird, da dies eigentlich immer noch ein Proof-of-Work als Vorschlagsmechanismus ist .
Erstens, um es klarer zu sagen, der in der Frage beschriebene Langstreckenangriff ist eine bestimmte Art von Langstreckenangriff. Es ist wahrscheinlich am besten, es den Angriff „Verlaufsrevision mit alten privaten Schlüsseln“ zu nennen. Es gibt andere Angriffe, die „lange Reichweite“ beinhalten, wie der vorprogrammierte Langstreckenangriff, der im NeuCoin-Whitepaper beschrieben wird, aber das ist eine lange Reichweite in die tatsächliche Zukunft – dieser liegt in der Vergangenheit.
Die eigentlichen Schritte des Angriffs sind wie folgt:
N-1000000
in der Vergangenheit zu einem gewissen Zeitpunkt die Kontrolle über alte private Schlüssel in der Blockchain, und der Gesamtwert der vom Angreifer gehaltenen Coins ist ein Bruchteil, q
, der Gesamtmenge der Coins, die derzeit auf der Mainchain gestaket werden . N
ist die aktuelle Höhe der Mainchain.N-1000000
in der Vergangenheit beginnt. Sie deaktiviert alle eingehenden oder ausgehenden Clientverbindungen.q
die gesamten Münzen gewinnen kann. Was sie also tun wird, ist, alle Transaktionen aus dem Block N-1000000+1
in der Hauptkette zu nehmen, sie in ihren Block N-1000000+1
in der geheimen Kette zu stecken und zu versuchen, sie zu prägen, indem sie eine Zeit versucht t+1
, wo t
der Zeitstempel in UNIX-Ticks von Block ist N-1000000
. Wenn die Zeit t+1
nicht funktioniert, wird sie es versuchent+2
usw. Sehen Sie sich die Gleichung in der Frage an, was sie zu lösen versucht.t+s
Sekunden N-1000000+1
auf der geheimen Kette Minzen blockieren. Sie wird dafür die Coinstake-Belohnung erhalten.N+n
bei n
der einige Blöcke hinter dem Kopf der Hauptkette liegen (dies ist möglich, weil sie einfach Transaktionen nehmen kann, die auf dem Mempool der Hauptkette anstehen, und sie in ihre geheime Kette einfügen kann). An diesem Punkt wird sie alle Coinstake-Belohnungen durch das Prägen aller 1000000 Blöcke erhalten haben. Sie kann ihre geheime Blockchain jetzt wieder an das Netzwerk senden, und solange die Clients sie akzeptieren, ist die Kette gültig und sie hat effektiv die „Geschichte neu geschrieben“.Die eigentliche Ausführung der Schritte 3 bis 5 kann in einem Skript nur ein paar Minuten dauern und ehrlich gesagt wahrscheinlich weniger. Das Problem ist jedoch, dass dieser Angriff nicht durchführbar ist, da der Angreifer immer noch der Ein-Hash-pro-UTXO-pro-Sekunde-Regel unterliegt. Auch wenn sie das Ganze in ein paar Minuten simulieren kann, wird sie, sobald sie blocken N+n
kann, wahrscheinlich zu einer Zeit sein t+T
, T
die sehr groß und t+T
deutlich weiter als die gegenwärtige Zeit ist. Es könnte in Bezug auf die Zeitstempel für den Kopf ihrer Kette zwei Jahre voraus sein, und die Zeitdriftregel von Clients, die keine Blöcke mehr als 2 Stunden in der Zukunft akzeptieren, wird die Kette ablehnen.
Überlegen Sie für ein bisschen mehr Intuition, ob q=1/3
, dh sie ein Drittel aller Coins hat, die derzeit auf der Mainchain gestaket werden. In diesem Fall prägt sie jeden Block auf der Secret Chain, aber mit einer Rate von nur einem Drittel der Rate der Mainchain . Sie wird also 1/3
keine Gelegenheit mehr haben, an ihrer geheimen Kette zu partizipieren, und nicht mehr. Tatsächlich wird ihr 2/3
die Möglichkeit entgehen, ihre geheime Kette durch die Ein-Hash-pro-UTXO-pro-Sekunde-Regel zu pfählen. Wahrscheinlichkeitsmäßig ist es für sie, die Hauptkette in einer Zeit t+T
von T
weniger als 2 Stunden einzuholen, effektiv null und nähert sich null, wenn die Zeitverzögerung zunimmt, dh es ist viel unmöglicher mit einer Zeitverzögerung von 2000000
.
coolboyjules