Warum das Aktualisierungsverhältnis der Netzwerkschwierigkeiten begrenzen [duplizieren]

Der Entwicklerleitfaden auf Bitcoin.org sagt:

Wenn es weniger als zwei Wochen gedauert hat, die 2.016 Blöcke zu generieren, wird der erwartete Schwierigkeitswert proportional erhöht (um bis zu 300 %) , sodass die Generierung der nächsten 2.016 Blöcke genau zwei Wochen dauern sollte, wenn Hashes mit der gleichen Rate überprüft werden.

Wenn es länger als zwei Wochen gedauert hat, die Blöcke zu generieren, wird der erwartete Schwierigkeitswert aus dem gleichen Grund proportional (um bis zu 75 %) verringert.

Warum gibt es eine solche Begrenzung für das Erhöhungs- oder Verringerungsverhältnis? Die Aktualisierung der Schwierigkeit alle 2 Wochen reicht nicht aus, um abrupte Änderungen abzudecken?

Nur um das klarzustellen, bedeutet dies, das Schwierigkeitsziel mit maximal 4 zu multiplizieren oder zu dividieren. Ich sehe nicht, dass dies in absehbarer Zeit im aktuellen Bitcoin-Netzwerk passieren wird. Bei Altcoins ist dies passiert und sogar Angriffe, bei denen die Schwierigkeit sehr schnell anstieg und dann plötzlich die Miner zu einer anderen Altcoin gingen, wodurch die Schwierigkeit stecken blieb. Beachten Sie, dass es sich um 2016-Blöcke handelt, was normalerweise 2 Wochen dauert, aber wenn 75% der Mining-Leistung übrig sind, dann sind es tatsächlich 4 * 2 Wochen.
Danke Jannes, kannst du den Angriff im Detail erklären? Soweit ich weiß, kommen die Angreifer in ein Altcoin-Netzwerk mit höherer Rechenleistung des gesamten Altcoin-Netzwerks, was zu einem schnellen Anstieg der Schwierigkeiten führt, und verlassen dann das Netzwerk? Das Ziel-Altcoin-Netzwerk hat kein Limit für die Erhöhungsquote? Was ist mit der Verringerung der Ration? Es könnte in einem ähnlichen Szenario nützlich sein?
Unterschiedliche Altcoins können unterschiedliche Erhöhungs-/Verringerungsgrenzen und unterschiedliche Blockintervalle haben. Die Timings sind also wahrscheinlich anders als bei Bitcoin. Aber wenn viel Hashing-Power lange genug in den Altcoin kommt, um die Schwierigkeit ein paar Mal auf das Maximum steigen zu lassen und dann wieder geht, wird es lange dauern, bis die Schwierigkeit wieder sinkt. Nicht so sehr wegen der Limits, sondern weil Blöcke nicht sehr oft gefunden werden. Im Extremfall: Wenn 99 % der Hashing-Leistung weg sind, dauert es 100-mal länger, bis jeder Block abgebaut ist, also dauert es 100-mal länger, um die 2016-Blöcke zu erreichen.

Antworten (1)

Stellen Sie sich vor, wir hätten ein System ohne Beschränkungen hinsichtlich des Zeitraums oder der Abnahmerate. Jeder Block des Zeitraums wird aktualisiert, indem man 6 Blöcke zurückblickt und die Schwierigkeit entsprechend anpasst. Dies ist eine Änderung, die in der Vergangenheit an Bitcoin-Forks vorgenommen wurde, in der Überzeugung, dass dies keinen Schaden anrichtet.

In diesem System müssen wir zum Angriff auf einen einzelnen Benutzer lediglich seinen Knoten (die genaue Methode ist irrelevant, aber möglich) vom Rest des Netzwerks trennen, damit er nicht mehr sehen kann, wie neue Blöcke abgebaut werden. Mit dem richtigen Timing müssen wir möglicherweise nur einen einzigen Block auf unserer neu erstellten Seite des Netzwerks lösen, und die Benutzer dort werden ihre Schwierigkeit drastisch niedriger anpassen, um dies zu kompensieren. Ohne Einschränkungen wird der Benutzer die Verringerung der Hashrate um Größenordnungen ohne Bedenken akzeptieren.

Wir müssen jetzt so gut wie keine Mühe aufwenden, um Blöcke mit sehr niedrigem Schwierigkeitsgrad auf dieser Gabelung zu erstellen. Auf diese Weise können wir beispielsweise die Benutzer dazu zwingen, Zahlungen mit falschen Bestätigungen mit geringem Schwierigkeitsgrad zu akzeptieren. Sobald sie sich wieder dem Netzwerk anschließen, werden sie feststellen, dass die Bestätigungen verschwinden und sie irreparabel betrogen wurden. Dieser Vorgang würde sehr kurz dauern und es gibt keine Möglichkeit, dass ein Benutzer den Angriff rechtzeitig bemerkt, um nicht gestohlen zu werden.

„Sechs Bestätigungen“ ist eine Faustregel, die für Bitcoin gut funktioniert. Aber wenn Sie ein System hätten, das die Schwierigkeit zu schnell anpassen lässt, benötigen wir eine andere Metrik – vielleicht eine gewisse Gesamtzahl von Hashes, die erforderlich sind, um die Blöcke nach dem Block mit der Transaktion zu generieren. Und wir müssten diese Metrik regelmäßig anpassen.