Wie könnte ein Timewarp-Angriff verhindert werden?

jarpian erklärt, was ein Timewarp-Angriff (AKA Zeitgeist-Angriff) ist:

Dies ist ein 51%-Angriff, bei dem der Angreifer die Block-Zeitstempel künstlich setzt, um die Schwierigkeit zu verringern, sodass er mehr Münzen gewinnen kann, als seine Hash-Rate rechtfertigen würde. Es funktioniert, weil die Schwierigkeitsanpassungsformel rein auf Zeitstempeln basiert, die vom Angreifer ziemlich frei gewählt werden können. Insbesondere müssen die Zeitstempel nicht in aufsteigender Reihenfolge sein . ArtForz erklärt den Angriff hier im Detail .

Dieser Angriff wurde gegen die neue Blockchain von Geist Geld eingesetzt. Die Schwierigkeit von Geist Geld passt sich alle 16 Blöcke an, wodurch die Kette besonders anfällig für diesen Angriff wird. Ein Angreifer, der auf Bitcoin abzielt, müsste bei der aktuellen Schwierigkeit einen vollständigen Satz von 2016-Blöcken abbauen, bevor er einen Vorteil gegenüber einem „normalen“ 51-%-Angriff erzielt.

Offensichtlich wäre die Durchführung dieses Angriffs horrend teuer. (Coinometrics beziffert die Kosten zum Zeitpunkt des Schreibens auf etwa 463 Millionen US-Dollar .)

Wenn Sie jedoch erfolgreich waren, könnten Sie die Schwierigkeit verringern und die Blockrate alle 2 Wochen um den Faktor 4 erhöhen, sodass Sie mehr als alle 10 Minuten Münzen prägen können.

Der offensichtliche Weg, dies zu beheben – die Änderung des Block-Retargeting-Zeitraums von (2016*n, 2016*n + 2015) auf (2016*n, 2016*n + 2016 ) ist problematisch. Von der neuen Implementierung erzeugte Blöcke wären in der alten Implementierung ungültig und umgekehrt. (Quelle)

Wie könnte also ein Time Warp-Angriff auf unterbrechungsfreie Weise verhindert werden?

Ich finde diese Frage wertvoll und ziehe eine offene Diskussion der Angst vor der Angst vor. Wenn es an anderer Stelle eine interessante Diskussion darüber gibt, verweisen Sie bitte in der Antwort für die Nachwelt darauf.
Ich wusste nicht, dass es so etwas wie unterbrechungsfreien Zeitsprung gibt?

Antworten (2)

Die einfache Lösung ist ein Soft Fork, der erfordert, dass die Zeit jedes Blocks gleich oder größer als die Zeit des vorherigen Blocks in der Blockkette ist. Das heißt, die Zeit auf der Blockchain kann nicht rückwärts gehen.

Wenn die Zeit nicht rückwärts gehen kann, kann der Angreifer die Schwierigkeit nicht künstlich verringern, außer indem er Blöcke mit Zeiten in der Zukunft schürft, und das Netzwerk weist Blöcke bereits mehr als 120 Minuten in die Zukunft zurück.

Dieser Vorschlag ist ein Soft Fork, da Bergleute ohne Upgrade eine schwierigere Kette akzeptieren, deren Zeiten sich nur verlängern oder gleich bleiben. Bei einer Implementierung auf die gleiche Weise wie BIP34 würde die Supermajority der Hash-Rate aktualisiert, bevor die neue Regel angewendet wird, wodurch Unterbrechungen minimiert werden.

Der Nachteil könnte vermieden werden, indem die Regel leicht geändert wird: Ändern Sie sie dahingehend, dass Zeitstempel von untergeordneten Blöcken größer oder gleich den Zeitstempeln ihrer Eltern sein müssen. Wenn ein Knoten das Gefühl hat, dass der Zeitstempel der Kettenspitze zu weit in der Zukunft liegt (aber nicht so weit, dass er ihn ablehnen würde), dann kann er den Zeitstempel seines Blocks so setzen, dass er dem Zeitstempel seines Elternteils entspricht. Jeder Knoten, der seinen Block als zu weit in der Zukunft liegend ablehnen würde, würde auch den übergeordneten Block ablehnen. Also würde die Regel diesen Fall nicht ändern.
@NickODell Wollen Sie damit sagen, dass für die Blockchain A->B->Cdie Zeit von C >= die Zeit von A sein könnte? Das ist im Grunde nicht anders als die Zeit von C == die Zeit von B, weil jeder Knoten, der B ablehnt, >= the previous block's timeauch C ablehnt diejenige, auf die im Block-Header-Feld prevHeaderHash verwiesen wird. Also Zeit Block A <= Zeit Block B <= Zeit Block C. Wenn es einen veralteten Block B' gibt, hat seine Zeit keinen Einfluss auf die Zeit von Block C. Ich werde den Beitrag bearbeiten, um dies klarer zu machen.
Hmm. Ich denke, es stimmt heute, dass jeder Knoten, der B ablehnt (weil er eine zu weit in der Zukunft liegende Zeit hat), auch C ablehnt, also gibt es keinen neuen Nachteil, an den ich denken kann. Ich werde diesen Teil meines Beitrags entfernen.

Behalten Sie Netzwerke wie Myriad, Digibyte, Digitalcoin, Unitus und andere im Auge, die Multi-Algo Proof of Work verwenden. Wie einige von Ihnen vielleicht wissen, wurde Myriadcoin gegen Ende des letzten Jahres von Timewarp angegriffen und hat die Bemühungen der schlechten Schauspieler erfolgreich beendet. Ich für meinen Teil weiß nicht, wo die Schwellenwerte für einen Prozentsatz der Hashrate liegen, um einen solchen Angriff durchführen zu können. Eine eingehende Analyse der Myriad Blockchain (Zeitstempel und alles, Netzwerkverkehr vom Angriff wäre auch schön, muss aber live erfasst werden) und ein Blick auf https://github.com/myriadcoin/myriadcoin wäre eine gute Idee für alle, die an der Lösung von Timewarp-Problemen interessiert sind.

Also, was war ihre Lösung?
Tut mir leid, ich habe keine Zeit zum Schreiben. Bitte überprüfen Sie den Github auf die neuesten Commits.