Schwierigkeit

Siehe auch: Ziel

Was ist „Schwierigkeit“?

Die Schwierigkeit ist ein Maß dafür, wie schwierig es ist, einen Hash unter a zu finden gegebenes Ziel.

Das Bitcoin-Netzwerk hat eine globale Blockierschwierigkeit. Gültige Blöcke müssen einen Hash unter diesem Ziel haben. Minenpools haben auch eine poolspezifische Freigabeschwierigkeit, die eine Untergrenze für Freigaben festlegt.

Wie oft ändert sich die Netzwerkschwierigkeit?

Alle 2016 Blöcke.

Wie lautet die Formel für den Schwierigkeitsgrad?

Schwierigkeitsgrad = Schwierigkeitsgrad_1_Ziel / aktuelles_Ziel

(Ziel ist eine 256-Bit-Zahl)

schwierigkeit_1_Ziel kann für verschiedene Arten der Messung der Schwierigkeit unterschiedlich sein. Traditionell stellt es einen Hash dar, bei dem die führenden 32 Bits Null und der Rest Eins sind (dies wird als „Poolschwierigkeit“ oder „pdiff“ bezeichnet). Das Bitcoin-Protokoll repräsentiert Ziele als benutzerdefinierter Gleitkommatyp mit begrenzter Genauigkeit; Infolgedessen schätzen Bitcoin-Clients die Schwierigkeit häufig auf dieser Grundlage ein (dies wird als „bdiff“ bezeichnet).

Wie wird die Schwierigkeit in Blöcken gespeichert?

Jeder Block speichert eine gepackte Darstellung ( genannt „Bits“) für sein tatsächliches hexadezimales Ziel. Das Ziel kann über eine vordefinierte Formel daraus abgeleitet werden. Wenn das gepackte Ziel im Block beispielsweise 0x1b0404cb ist (in Little-Endian-Reihenfolge gespeichert: cb 04 04 1b), lautet das hexadezimale Ziel

0x0404cb * 2**(8*(0x1b - 3)) = 0x00000000000404CB000000000000000000000000000000000000000000000000

Beachten Sie, dass dieses gepackte Format ein Vorzeichenbit im 24. Bit enthält und die Negation des obigen Ziels beispielsweise 0x1b8404cb im gepackten Format wäre. Da Ziele in der Praxis jedoch niemals negativ sind, bedeutet dies, dass der größte zulässige Wert für die unteren 24 Bits 0x7fffff ist. Außerdem ist 0x008000 der kleinste zulässige Wert für die unteren 24 Bits, da Ziele immer mit dem niedrigstmöglichen Exponenten gespeichert werden.

Wie wird die Schwierigkeit berechnet? Was ist der Unterschied zwischen bdiff und pdiff?

Das höchstmögliche Ziel (Schwierigkeitsgrad 1) ist als 0x1d00ffff definiert, was uns ein Hex-Ziel von

0x00ffff * 2**(8*(0x1d - 3)) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000

Es sollte beachtet werden, dass beim Pooled Mining häufig nicht abgeschnittene Ziele verwendet werden, wodurch „Poolschwierigkeit 1“ bei

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

liegt 0x1b0404cb ist daher:

0x00000000FFFF0000000000000000000000000000000000000000000000000000 /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.420938523983 (bdiff)

Und:

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.669773817162 (pdiff)

Hier „ist ein schneller Weg zu Berechnen Sie den Bitcoin-Schwierigkeitsgrad. Für den Logarithmus wird eine modifizierte Taylor-Reihe verwendet (Sie können Tutorials zu Flipcode und Wikipedia sehen) und es werden Protokolle verwendet, um die Schwierigkeitsberechnung zu transformieren:

Um zu sehen, wie die Mathematik vom normalen Schwierigkeitsgrad abweicht Berechnungen (die große große Ints erfordern, die größer sind als der Raum in einer normalen Ganzzahl) zu der obigen Berechnung, hier ist eine Python:

Was ist die aktuelle Schwierigkeit?

Aktuelle Schwierigkeit, wie von Bitcoin getDifficulty ausgegeben.

Diagramme

Was ist die Maxime um Schwierigkeit?

Es gibt kein Mindestziel. Die maximale Schwierigkeit ist ungefähr: Maximum_Target / 1 (da 0 zu Unendlichkeit führen würde), was eine lächerlich große Zahl ist (ungefähr 2 ^ 224).

Die tatsächliche maximale Schwierigkeit ist, wenn current_target = 0 ist, aber wir wäre nicht in der Lage, die Schwierigkeit zu berechnen, wenn das passiert wäre. (Zum Glück wird es nie, also sind wir in Ordnung.)

Kann die Netzwerkschwierigkeit sinken?

Ja, das kann es. Siehe Diskussion im Ziel.

Was ist die minimale Schwierigkeit?

Die minimale Schwierigkeit, wenn sich das Ziel auf dem maximal zulässigen Wert befindet, ist 1.

Welche Netzwerk-Hash-Rate führt zu einer bestimmten Schwierigkeit?

Die Schwierigkeit wird alle 2016-Blöcke basierend auf der Zeit angepasst, die zum Auffinden der vorherigen 2016-Blöcke benötigt wurde. Bei der gewünschten Rate von einem Block alle 10 Minuten würde das Auffinden von 2016-Blöcken genau zwei Wochen dauern. Wenn die vorherigen 2016-Blöcke Das Auffinden dauerte mehr als zwei Wochen, die Schwierigkeit wurde verringert. Wenn sie weniger als zwei Wochen dauerten, erhöhte sich die Schwierigkeit. Die Änderung des Schwierigkeitsgrads ist proportional zu der Zeit, die die vorherigen Blöcke 2016 über oder unter zwei Wochen für das Auffinden benötigt haben .

Um einen Block zu finden, muss der Hash kleiner als das Ziel sein. Der Hash ist effektiv eine Zufallszahl zwischen 0 und 2 ** 256-1. Der Offset für Schwierigkeitsgrad 1 ist

0xffff * 2**208

und für Schwierigkeit D ist

(0xffff * 2**208)/D

Die erwartete Anzahl von Hashes, die wir berechnen müssen, um einen Block mit Schwierigkeit D zu finden, ist daher

D * 2**256 / (0xffff * 2**208)

oder nur

D * 2**48 / 0xffff

Die Schwierigkeit ist so eingestellt, dass die vorherigen 2016-Blöcke gewesen wären gefunden mit einer Rate von eins alle 10 Minuten, also berechneten wir (D * 2 ** 48 / 0xffff) Hashes in 600 Sekunden. Das bedeutet, dass die Hash-Rate des Netzwerks

D * 2**48 / 0xffff / 600

über die vorherigen 2016-Blöcke betrug. Kann weiter vereinfacht werden, um

D * 2**32 / 600

ohne großen Genauigkeitsverlust.

Bei Schwierigkeitsgrad 1 sind das etwa 7 Mhashes pro Sekunde.

Zum Zeitpunkt des Schreibens beträgt die Schwierigkeit 22012.4941572, was bedeutet, dass im Vergleich zu den vorherigen Blöcken von 2016 die durchschnittliche Netzwerk-Hash-Rate

22012.4941572 * 2**32 / 600 = around 157 Ghashes per second.

war. Wie schnell kann ich mit der Generierung eines Blocks rechnen?

(Die ewige Frage.)

Die durchschnittliche Zeit zum Auffinden eines Blocks kann durch Berechnung von

time = difficulty * 2**32 / hashrate

angenähert werden Dabei ist die Schwierigkeit die aktuelle Schwierigkeit, die Hashrate die Anzahl der Hashes, die Ihr Miner pro Sekunde berechnet, und die Zeit der Durchschnitt in Sekunden zwischen den gefundenen Blöcken.

Mit Python berechnen wir beispielsweise die durchschnittliche Zeit bis Generieren Sie einen Block mit einem 1Ghash / s-Mining-Rig, wenn der Schwierigkeitsgrad 20000 beträgt:

$ python -c "print 20000 * 2**32 / 10**9 / 60 / 60.0"23.85

und stellen Sie fest, dass es durchschnittlich knapp 24 Stunden dauert.

  • Jeder, der den Hash mahlt, hat die gleiche Chance zu „gewinnen“ wie jeder andere. Das Zahlenspiel gibt an, wie viele Versuche Ihre Hardware pro Sekunde ausführen kann.
  • Sie müssen die Schwierigkeit (oben) und Ihre Khash / Sek-Rate (vom Client gemeldet) kennen.
    • Mining Der Hardwarevergleich enthält einige Statistiken, mit denen Sie vorhersagen können, was Sie erhalten könnten.
  • Besuchen Sie einen Taschenrechner oder führen Sie die Berechnungen selbst durch,
    • http://www.alloscomp.com/bitcoin/calculator.php
    • http://www.vnbitcoin.org/bitcoincalculator.php
    • https://bitknock.com/calculator
  • Denken Sie daran, es ist nur eine Wahrscheinlichkeit! Es gibt keine Garantie, dass Sie alle N Tage gewinnen.
  • Verwandte Links

    • Verlauf der Bitcoin-Schwierigkeit
    • Was ist die Schwierigkeit des Bitcoin-Mining?
    • Siehe auch: Ziel

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.