Last active
December 16, 2015 15:18
-
-
Save codedot/5454447 to your computer and use it in GitHub Desktop.
Recompile a Bitcoin miner per Getwork
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
all: nonce | |
time ./nonce | |
nonce: nonce.c data.c | |
gcc -O3 -Wall -Werror nonce.c -o $@ | |
data.c: parse.sed work.js | |
sed -n -f parse.sed work.js >$@ | |
clean: | |
-rm -f nonce data.c |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdint.h> | |
#include <stdio.h> | |
#include <string.h> | |
#include "data.c" | |
#define ntohl(x) \ | |
((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ | |
(((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24)) | |
static const uint32_t init[8] = { | |
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, | |
0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 | |
}; | |
static inline uint32_t ror32(uint32_t word, unsigned int shift) | |
{ | |
return (word >> shift) | (word << (32 - shift)); | |
} | |
static inline uint32_t Ch(uint32_t x, uint32_t y, uint32_t z) | |
{ | |
return z ^ (x & (y ^ z)); | |
} | |
static inline uint32_t Maj(uint32_t x, uint32_t y, uint32_t z) | |
{ | |
return (x & y) | (z & (x | y)); | |
} | |
#define e0(x) (ror32(x, 2) ^ ror32(x,13) ^ ror32(x,22)) | |
#define e1(x) (ror32(x, 6) ^ ror32(x,11) ^ ror32(x,25)) | |
#define s0(x) (ror32(x, 7) ^ ror32(x,18) ^ (x >> 3)) | |
#define s1(x) (ror32(x,17) ^ ror32(x,19) ^ (x >> 10)) | |
static inline void BLEND_OP(int I, uint32_t *W) | |
{ | |
W[I] = s1(W[I-2]) + W[I-7] + s0(W[I-15]) + W[I-16]; | |
} | |
static uint32_t runhash(uint32_t nonce) | |
{ | |
uint32_t a = ntohl(mid[0]); | |
uint32_t b = ntohl(mid[1]); | |
uint32_t c = ntohl(mid[2]); | |
uint32_t d = ntohl(mid[3]); | |
uint32_t e = ntohl(mid[4]); | |
uint32_t f = ntohl(mid[5]); | |
uint32_t g = ntohl(mid[6]); | |
uint32_t h = ntohl(mid[7]); | |
uint32_t t1, t2; | |
uint32_t W[64]; | |
int i; | |
W[ 0] = ntohl(data[16]); | |
W[ 1] = ntohl(data[17]); | |
W[ 2] = ntohl(data[18]); | |
W[ 3] = nonce; | |
W[ 4] = ntohl(data[20]); | |
W[ 5] = ntohl(data[21]); | |
W[ 6] = ntohl(data[22]); | |
W[ 7] = ntohl(data[23]); | |
W[ 8] = ntohl(data[24]); | |
W[ 9] = ntohl(data[25]); | |
W[10] = ntohl(data[26]); | |
W[11] = ntohl(data[27]); | |
W[12] = ntohl(data[28]); | |
W[13] = ntohl(data[29]); | |
W[14] = ntohl(data[30]); | |
W[15] = ntohl(data[31]); | |
for (i = 16; i < 64; i++) | |
BLEND_OP(i, W); | |
t1 = h + e1(e) + Ch(e,f,g) + 0x428a2f98 + W[ 0]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0x71374491 + W[ 1]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0xb5c0fbcf + W[ 2]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0xe9b5dba5 + W[ 3]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0x3956c25b + W[ 4]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0x59f111f1 + W[ 5]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0x923f82a4 + W[ 6]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0xab1c5ed5 + W[ 7]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
t1 = h + e1(e) + Ch(e,f,g) + 0xd807aa98 + W[ 8]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0x12835b01 + W[ 9]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0x243185be + W[10]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0x550c7dc3 + W[11]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0x72be5d74 + W[12]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0x80deb1fe + W[13]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0x9bdc06a7 + W[14]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0xc19bf174 + W[15]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
t1 = h + e1(e) + Ch(e,f,g) + 0xe49b69c1 + W[16]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0xefbe4786 + W[17]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0x0fc19dc6 + W[18]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0x240ca1cc + W[19]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0x2de92c6f + W[20]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0x4a7484aa + W[21]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0x5cb0a9dc + W[22]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0x76f988da + W[23]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
t1 = h + e1(e) + Ch(e,f,g) + 0x983e5152 + W[24]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0xa831c66d + W[25]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0xb00327c8 + W[26]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0xbf597fc7 + W[27]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0xc6e00bf3 + W[28]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0xd5a79147 + W[29]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0x06ca6351 + W[30]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0x14292967 + W[31]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
t1 = h + e1(e) + Ch(e,f,g) + 0x27b70a85 + W[32]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0x2e1b2138 + W[33]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0x4d2c6dfc + W[34]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0x53380d13 + W[35]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0x650a7354 + W[36]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0x766a0abb + W[37]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0x81c2c92e + W[38]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0x92722c85 + W[39]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
t1 = h + e1(e) + Ch(e,f,g) + 0xa2bfe8a1 + W[40]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0xa81a664b + W[41]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0xc24b8b70 + W[42]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0xc76c51a3 + W[43]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0xd192e819 + W[44]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0xd6990624 + W[45]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0xf40e3585 + W[46]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0x106aa070 + W[47]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
t1 = h + e1(e) + Ch(e,f,g) + 0x19a4c116 + W[48]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0x1e376c08 + W[49]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0x2748774c + W[50]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0x34b0bcb5 + W[51]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0x391c0cb3 + W[52]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0x4ed8aa4a + W[53]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0x5b9cca4f + W[54]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0x682e6ff3 + W[55]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
t1 = h + e1(e) + Ch(e,f,g) + 0x748f82ee + W[56]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0x78a5636f + W[57]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0x84c87814 + W[58]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0x8cc70208 + W[59]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0x90befffa + W[60]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0xa4506ceb + W[61]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0xbef9a3f7 + W[62]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0xc67178f2 + W[63]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
W[ 0] = ntohl(mid[0]) + a; | |
W[ 1] = ntohl(mid[1]) + b; | |
W[ 2] = ntohl(mid[2]) + c; | |
W[ 3] = ntohl(mid[3]) + d; | |
W[ 4] = ntohl(mid[4]) + e; | |
W[ 5] = ntohl(mid[5]) + f; | |
W[ 6] = ntohl(mid[6]) + g; | |
W[ 7] = ntohl(mid[7]) + h; | |
W[ 8] = ntohl(hash1[ 8]); | |
W[ 9] = ntohl(hash1[ 9]); | |
W[10] = ntohl(hash1[10]); | |
W[11] = ntohl(hash1[11]); | |
W[12] = ntohl(hash1[12]); | |
W[13] = ntohl(hash1[13]); | |
W[14] = ntohl(hash1[14]); | |
W[15] = ntohl(hash1[15]); | |
for (i = 16; i < 64; i++) | |
BLEND_OP(i, W); | |
a = init[0]; | |
b = init[1]; | |
c = init[2]; | |
d = init[3]; | |
e = init[4]; | |
f = init[5]; | |
g = init[6]; | |
h = init[7]; | |
t1 = h + e1(e) + Ch(e,f,g) + 0x428a2f98 + W[ 0]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0x71374491 + W[ 1]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0xb5c0fbcf + W[ 2]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0xe9b5dba5 + W[ 3]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0x3956c25b + W[ 4]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0x59f111f1 + W[ 5]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0x923f82a4 + W[ 6]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0xab1c5ed5 + W[ 7]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
t1 = h + e1(e) + Ch(e,f,g) + 0xd807aa98 + W[ 8]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0x12835b01 + W[ 9]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0x243185be + W[10]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0x550c7dc3 + W[11]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0x72be5d74 + W[12]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0x80deb1fe + W[13]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0x9bdc06a7 + W[14]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0xc19bf174 + W[15]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
t1 = h + e1(e) + Ch(e,f,g) + 0xe49b69c1 + W[16]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0xefbe4786 + W[17]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0x0fc19dc6 + W[18]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0x240ca1cc + W[19]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0x2de92c6f + W[20]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0x4a7484aa + W[21]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0x5cb0a9dc + W[22]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0x76f988da + W[23]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
t1 = h + e1(e) + Ch(e,f,g) + 0x983e5152 + W[24]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0xa831c66d + W[25]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0xb00327c8 + W[26]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0xbf597fc7 + W[27]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0xc6e00bf3 + W[28]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0xd5a79147 + W[29]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0x06ca6351 + W[30]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0x14292967 + W[31]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
t1 = h + e1(e) + Ch(e,f,g) + 0x27b70a85 + W[32]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0x2e1b2138 + W[33]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0x4d2c6dfc + W[34]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0x53380d13 + W[35]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0x650a7354 + W[36]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0x766a0abb + W[37]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0x81c2c92e + W[38]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0x92722c85 + W[39]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
t1 = h + e1(e) + Ch(e,f,g) + 0xa2bfe8a1 + W[40]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0xa81a664b + W[41]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0xc24b8b70 + W[42]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0xc76c51a3 + W[43]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0xd192e819 + W[44]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0xd6990624 + W[45]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0xf40e3585 + W[46]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0x106aa070 + W[47]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
t1 = h + e1(e) + Ch(e,f,g) + 0x19a4c116 + W[48]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
t1 = g + e1(d) + Ch(d,e,f) + 0x1e376c08 + W[49]; | |
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; | |
t1 = f + e1(c) + Ch(c,d,e) + 0x2748774c + W[50]; | |
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; | |
t1 = e + e1(b) + Ch(b,c,d) + 0x34b0bcb5 + W[51]; | |
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; | |
t1 = d + e1(a) + Ch(a,b,c) + 0x391c0cb3 + W[52]; | |
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; | |
t1 = c + e1(h) + Ch(h,a,b) + 0x4ed8aa4a + W[53]; | |
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; | |
t1 = b + e1(g) + Ch(g,h,a) + 0x5b9cca4f + W[54]; | |
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; | |
t1 = a + e1(f) + Ch(f,g,h) + 0x682e6ff3 + W[55]; | |
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; | |
t1 = h + e1(e) + Ch(e,f,g) + 0x748f82ee + W[56]; | |
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; | |
c += g + e1(d) + Ch(d,e,f) + 0x78a5636f + W[57]; | |
b += f + e1(c) + Ch(c,d,e) + 0x84c87814 + W[58]; | |
a += e + e1(b) + Ch(b,c,d) + 0x8cc70208 + W[59]; | |
h += d + e1(a) + Ch(a,b,c) + 0x90befffa + W[60]; | |
return init[7] + h; | |
} | |
int main(int argc, char *argv[]) | |
{ | |
static uint32_t nonce = 0x38000000; | |
int i; | |
do { | |
if (!runhash(nonce)) { | |
for (i = 0; i < 19; i++) | |
printf("%08x", data[i]); | |
printf("%08x", ntohl(nonce)); | |
for (i = 20; i < 32; i++) | |
printf("%08x", data[i]); | |
printf("\n"); | |
return 0; | |
} | |
++nonce; | |
} while (nonce); | |
return 1; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1s/^.*$/#ifndef _DATA_C\ | |
#define _DATA_C\ | |
/p | |
/data/ { | |
s/.*: \"// | |
i\ | |
static const uint32_t data[32] = { | |
s/\(.\{8\}\)/ 0x\1,\ | |
/g | |
s/\".*$/};\ | |
/ | |
p | |
} | |
/hash1/ { | |
s/.*: \"// | |
i\ | |
static const uint32_t hash1[16] = { | |
s/\(.\{8\}\)/ 0x\1,\ | |
/g | |
s/\".*$/};\ | |
/ | |
p | |
} | |
/midstate/ { | |
s/.*: \"// | |
i\ | |
static const uint32_t mid[8] = { | |
s/\(.\{8\}\)/ 0x\1,\ | |
/g | |
s/\".*$/};\ | |
/ | |
p | |
} | |
$s/^.*$/#endif/p |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"error": null, | |
"id": 1, | |
"result": { | |
"data": "00000002b15704f4ecae05d077e54f6ec36da7f20189ef73b77603225ae56d2b00000000b052cbbdeed2489ccb13a526b77fadceef4caf7d3bb82a9eb0b69ebb90f9f5a7510c27fd1c0e8a3700000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000", | |
"hash1": "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000", | |
"midstate": "509ee324c8bbfe1e915b54fbcaf31fdb6d356fa6f3c08274a8cac0acad0df100", | |
"target": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment