(bitcoin) Berechnen Sie die hash von getwork-Funktion - wie es zu tun?
wenn ich Anrufe, getwork auf meine bitcoind-server, bekomme ich die folgende:
./bitcoind getwork
{
"midstate" : "695d56ae173bbd0fd5f51d8f7753438b940b7cdd61eb62039036acd1af5e51e3",
"data" : "000000013d9dcbbc2d120137c5b1cb1da96bd45b249fd1014ae2c2b400001511000000009726fba001940ebb5c04adc4450bdc0c20b50db44951d9ca22fc5e75d51d501f4deec2711a1d932f00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000",
"hash1" : "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000",
"target" : "00000000000000000000000000000000000000000000002f931d000000000000"
}
Dieses Protokoll scheint nicht dokumentiert zu werden. Wie berechne ich den hash aus diesen Daten. Ich denke, dass diese Daten in little-endian. Der erste Schritt ist also, um alles zu konvertieren, um big-endian? Sobald das geschehen ist, berechne ich den sha256-Daten. Die Daten können unterteilt werden in zwei chuncks von 64 bytes. Der hash-Wert der ersten chuck ist gegeben durch midstate und daher nicht berechnet werden.
Deshalb muss ich die hash-chunck #2 mit sha256, mit dem midstate als der erste hash-Werte. Sobald das geschehen ist, habe ich am Ende mit einem hash der Brocken 2, der ist 32 bytes. Ich berechnen den hash von diesem Stück eine weitere Zeit bis zu einer endgültigen hash.
Dann wandle ich alles um little-endian und Einreichen der Arbeit?
Was ist hash1 verwendet?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klingt es Recht, es ist ein script in javascript, die berechnen den hash aber ich verstehe nicht ganz, so dass ich weiß nicht, vielleicht verstehen Sie es besser, wenn Sie suchen.
QUELLE: https://github.com/jwhitehorn/jsMiner/blob/4fcdd9042a69b309035dfe9c9ddf716119831a16/engine.js#L149-165
Die hash-Berechnung ist dokumentiert in Block-Hash-Algorithmus.
Dort beginnt für die relativ einfache Grundlagen. Die grundlegenden Daten-Strukturen sind dokumentiert in - Protokoll-Spezifikation - Bitcoin Wiki. Beachten Sie, dass der Protokoll-definition und die definition der arbeiten) mehr oder weniger davon ausgegangen, dass SHA-256 hashes 256-bit-little-endian-Werte, eher als big-endian-Format als standard impliziert. Siehe auch
Getwork ist komplizierter und läuft in ernster endian - /byte-Reihenfolge Durcheinander.
Ersten Hinweis, dass die getwork-API ist optimiert, um die Geschwindigkeit der ersten Schritte der Bergbau.
Die midstate und hash1 Werte sind für diese performance-Optimierungen und können ignoriert werden. Schauen Sie sich einfach die "Daten".
Und wenn ein standard-sha256 implementation verwendet wird, werden nur die ersten 80 bytes (160 hex-Zeichen) der "Daten" gehasht werden.
Leider, die JSON-Daten, die in die getwork Daten-Struktur, die hat unterschiedliche endian Merkmale als das, was notwendig ist für das hashing in den block-Beispiel oben.
Sie alle sagen, an die Quelle zu gehen für die Antwort, aber der C++ - Quellcode, können groß und unübersichtlich. Eine einfache alternative ist die poold.py code. Es ist die Diskussion darüber hier: Neue mining-pool zum testen. Müssen Sie nur Blick auf die ersten paar Zeilen von "checkwork" - routine, und die "bufreverse" und "bytereverse" - Funktionen, um die byte-Reihenfolge richtig. Am Ende ist es nur eine Sache zu tun, eine Umkehrung der bytes in jedem 32-bit-segment der Daten. Ja - sehr seltsam. Aber endian Probleme sind schwierig und kann am Ende so....
Einige andere hilfreiche Informationen auf dem Weg "getwork" funktioniert, finden Sie in den Diskussionen auf:
Beachten Sie, dass die Suche nach der signal-Rausch in der original Bitcoin-forum ist immer sehr schwer, und es ist derzeit das Area51 Vorschlag für eine StackExchange Seite für Bitcoin-und Crypto-Währung im Allgemeinen. Kommen Sie zu uns!
Ehrlich gesagt
Bitcoin block-Hash-Algorithmus ist nicht offiziell beschrieben, von jeder beliebigen Quelle.
"
Die hash-Berechnung ist dokumentiert in Block-Hash-Algorithmus.
"
Lesen sollte
Die hash-Berechnung "beschrieben," bei der Block-Hash-Algorithmus.
de.bitcoin.es/wiki/Block_hashing_algorithm
btw das Beispiel-code in PHP kommt mit einem Fehler (Tippfehler)
der Beispiel-code in Python-generiert Fehler beim ausführen von Python ist3.3 für Windows XP 32
(fehlende Unterstützung für string.Dekodieren)