Ich versuche, den Nbit-Wert aus dem Stratum-Protokoll zu verstehen
-
23-12-2019 - |
Frage
Ich schaue mir das an Stratum-Protokoll und ich habe ein Problem mit dem nbits-Wert der Methode mining.notify.Ich habe Schwierigkeiten, es zu berechnen, ich gehe davon aus, dass es an der Währungsschwierigkeit liegt.
Ich rufe eine Benachrichtigung aus einem Dogecoin-Pool ab und sie gab 1b3cc366 zurück und zu diesem Zeitpunkt war die Schwierigkeit 1078,52975077.
Ich gehe hier davon aus, dass 1b3cc366 bei der Konvertierung 1078,52975077 ergeben sollte.Aber ich schaffe es anscheinend nicht, die Konvertierung richtig durchzuführen.
Ich habe geschaut Hier, Hier und habe auch die .NET-Funktion ausprobiert BitConverter.Int64BitsToDouble.
Kann mir jemand helfen zu verstehen, was der Nbit-Wert bedeutet?
Lösung
Du hast Recht, nbits
ist die aktuelle Netzwerkschwierigkeit.
Die Schwierigkeit der Kodierung wird ausführlich beschrieben Hier.
Hexadezimale Darstellung wie 0x1b3cc366
besteht aus zwei Teilen:
0x1b
– Anzahl der Bytes in einem Ziel0x3cc366
-- Zielpräfix
Das bedeutet, dass der gültige Hash kleiner sein sollte als 0x3cc366000000000000000000000000000000000000000000000000
(Es ist genau 0x1b
= 27 Byte lang).
Die Gleitkommadarstellung des Schwierigkeitsgrads zeigt, um wie viel das aktuelle Ziel schwieriger ist als das im Genesis-Block verwendete.
Satoshi entschied sich für die Verwendung 0x1d00ffff
als Schwierigkeit für den Genesis-Block, so war das Ziel0x00ffff0000000000000000000000000000000000000000000000000000
.
Und 1078,52975077 gibt an, um wie viel das aktuelle Ziel größer ist als das ursprüngliche Ziel:
$ echo 'ibase=16;FFFF0000000000000000000000000000000000000000000000000000 / 3CC366000000000000000000000000000000000000000000000000' | bc -l
1078.52975077482646448605