Wie verhindert Peercoin (oder andere PoS) das Fälschen von Zeitstempeln, die Hash-Versuche oder zufälliges Prägen beeinträchtigen?

Ich verstehe, dass jede Sekunde der Zeitstempel und potenzielle Transaktionen gehasht werden.

Ich denke, es gibt eine "Startzeit" in der Blockchain, vor der wir die Uhr nicht drehen können, da Transaktionen mit Zeitstempeln bereits in der Kette vorhanden sind. Aber könnten wir sagen, nur ein paar Minuten zurücksetzen? Könnte uns das etwas bringen?

Wie auch immer, selbst wenn wir die Zeit nicht zurückdrehen können, könnten wir das Programm so bearbeiten, dass jede Sekunde so viele Hashes wie möglich ausprobiert werden. Nehmen wir zum Beispiel an, wir versuchen 100 Mal statt nur einmal zu hashen, für eine bestimmte Sekunde übertragen wir dann den Block. Würden andere Knoten im Netzwerk den Block akzeptieren, auch wenn es etwas spät sein wird? Verwenden andere Knoten im Netzwerk eine API, um die tatsächliche Zeit abzurufen? Sicherlich muss das System einen Fudge-Faktor zulassen, um die Latenzen zu berücksichtigen?

Selbst wenn sie ablehnen, was ist damit: Die Zeit ist 5 Sekunden nach sechs, wir versuchen dann wiederholt, den 10-Sekunden-Zeitstempel zu hashen - wir haben dafür ganze 5 Sekunden. Wenn wir Erfolg haben und niemand sonst hat, können wir den Block übertragen.

Grundsätzlich ist es im PoW-System nachweislich unmöglich, einen Vorteil zu erlangen, ohne mehr Hardware zu kaufen - ein Knoten kann Code und Uhren so viel manipulieren, wie er will, er wird keinen Vorteil erzielen. Mir ist nicht klar, wie PoS-Systeme geschützt werden, da sie sich auf Codeintegrität und Uhren verlassen müssen?

Könnte auch das Prägen ausgetrickst werden? Wenn es einen Zufallszahlengenerator verwendet, woher kommt diese Zufallszahl? Kann es gefälscht werden?

Ich bin ein technischer Typ, also freue ich mich über vollständige technische Erklärungen - kein Zurückhalten! :)

Antworten (2)

Alle diese möglichen Angriffe wurden im Whitepaper von Neucoin (Peercoin Fork) untersucht, das hier verfügbar ist:

http://www.neucoin.org/en/whitepaper/download

Hier ist ihre Schlussfolgerung zum Pfahlschleifangriff (3.3.3):

Um diese Diskussion über das Grinden im Proof-of-Stake abzuschließen, hier ist eine Statistik für die Kritiker, die sagen, dass es „kostenlos“ ist, sich durch den Blockspace zu mahlen: wenn ein Angreifer 10 % der gestaketen Währung von NeuCoin besitzt und Zugriff auf alle hat die Hash-Power des Bitcoin-Netzwerks, seine Erfolgschancen bei einem Grinding-Angriff wären eins zu ∼10⁸⁷. Übrigens gibt es im beobachtbaren Universum nur ∼10⁸⁰ Atome.

Diese beiden Angriffe wurden auch im Peercoin-Forum beschrieben:

Zeitverschiebung: https://www.peercointalk.org/index.php?topic=2976.msg27924#msg27924

Stake-Grinding: https://www.peercointalk.org/index.php?topic=2976.msg27789#msg27789

Das ist interessant, aber wie macht es das?
Hallo Nick, der Grinding-Angriff auf PoS wird ausführlich im Neucoin-Whitepaper (Link oben) ab Seite 32 erklärt. Fragen Sie ruhig nach, wenn Sie etwas nicht verstehen. Beim mathematischen Teil werde ich aber keine große Hilfe sein ;)
Dies erklärt die Angriffe umfassend und erklärt mögliche Wege, sie zu verhindern, daher akzeptiere ich diese Antwort.

Die allgemeinen Probleme, die Sie beschreiben, sind inhärente Fehler in PoS, aber Sie haben einige der Grundprinzipien erkannt, die sich auf die Sicherheit und Integrität des Kryptosystems auswirken werden.

Wie auch immer, selbst wenn wir die Zeit nicht zurückdrehen können, könnten wir das Programm so bearbeiten, dass jede Sekunde so viele Hashes wie möglich ausprobiert werden. Nehmen wir zum Beispiel an, wir versuchen 100 Mal statt nur einmal zu hashen, für eine bestimmte Sekunde übertragen wir dann den Block.

Dies wird als Pfahlschleifen bezeichnet.

Die Auswahl des nächsten Unterzeichners in der Blockkette ist fast immer (dies variiert je nach Implementierung) direkt oder indirekt deterministisch basierend auf den vorherigen Blockinformationen. Da nichts eine Person grundsätzlich daran hindert, frühere Blöcke so oft sie möchten aufzugeben, kann sie fortfahren, bis der Kopf der Kette sie auch als nächsten Unterzeichner eines Blocks zuweist. Unter diesem Angriff erhält entweder eine Person eine enorm überhöhte Macht über die Kette, oder wenn jeder versucht, den Stake-Grind zu betreiben, bricht es zu einem besonders ineffizienten Proof-of-Work-System mit schlecht beschriebenen Eigenschaften zusammen.

Proof-of-Stake-Altcoins versuchen im Allgemeinen, dies zu lösen, indem sie den RNG-Seed der Unterzeichnerauswahl von früher in der Kette kommen lassen, sagen wir tausend Blöcke vor dem Kopf, mit der Idee, dass es für jemanden unmöglich ist, das Ergebnis von so weit hinten zu beeinflussen Zeit.

Ich denke, es gibt eine "Startzeit" in der Blockchain, vor der wir die Uhr nicht drehen können, da Transaktionen mit Zeitstempeln bereits in der Kette vorhanden sind. Aber könnten wir sagen, nur ein paar Minuten zurücksetzen? Könnte uns das etwas bringen?

Dies wird als kostenlose Simulation bezeichnet.

Das System fällt wieder auf die einfache Tatsache zurück, dass das Aufgeben von Blöcken an sich nichts Schwieriges ist. Bei einigen Coins am Anfang der Blockchain (eigene, gestohlene, gekaufte „leere“ Wallets) kann ein Angreifer in einem Proof-of-Stake-System einfach die gesamte Kette bis zum heutigen Tag mit sich selbst als einzigem Teilnehmer nachbauen. Angesichts der Option von zwei Ketten (in diesem Fall die angreifende und die Hauptkette) hat ein Client keine Möglichkeit zu wissen, welcher er als echt vertrauen sollte.

Proof-of-Stake-Altcoins versuchen oft, dies zu lösen, indem sie zentralisierte „Checkpoints“ haben, die verhindern, dass die Kette abweicht, obwohl man dagegen argumentieren könnte, dass dieses System überhaupt dezentralisiert ist. Andere haben einfach Knoten im Netzwerk, die sich nach einer gewissen Zeit weigern, sich zu anderen Chains zu reorganisieren, was keinen Schutz für neue Benutzer bietet, die dem Netzwerk beitreten und mit falschen Chains konfrontiert werden. Ethereum PoS wird versuchen, ein „Telefon-einen-Freund“-System einzurichten, bei dem die Benutzer aufgefordert werden, andere Netzwerkteilnehmer außerhalb des Bandes zu kontaktieren und manuell zu bestätigen, dass sie sich in derselben Hauptblockkette befinden.

Abschnitt 6.4 von A Treatise on Altcoins behandelt diese Themen etwas ausführlicher.