(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?

Schreibe einen Kommentar