From c68ffb30dd17b32f69665af18b72687875770972 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Wed, 2 Feb 2011 18:47:04 -0500 Subject: [PATCH] Display proof-of-work hash when one is discovered --- miner.h | 17 +++++++++++++++++ sha256_4way.c | 3 +++ sha256_cryptopp.c | 16 ++-------------- sha256_generic.c | 8 +------- sha256_via.c | 8 +------- util.c | 11 +++++++++++ 6 files changed, 35 insertions(+), 28 deletions(-) diff --git a/miner.h b/miner.h index 7639cd7d..49bc07d0 100644 --- a/miner.h +++ b/miner.h @@ -27,6 +27,21 @@ static inline uint32_t swab32(uint32_t v) return __builtin_bswap32(v); } +static inline void swap256(void *dest_p, const void *src_p) +{ + uint32_t *dest = dest_p; + const uint32_t *src = src_p; + + dest[0] = src[7]; + dest[1] = src[6]; + dest[2] = src[5]; + dest[3] = src[4]; + dest[4] = src[3]; + dest[5] = src[2]; + dest[6] = src[1]; + dest[7] = src[0]; +} + extern bool opt_debug; extern bool opt_protocol; extern const uint32_t sha256_init_state[]; @@ -55,4 +70,6 @@ extern bool scanhash_asm32(const unsigned char *midstate,unsigned char *data, extern int timeval_subtract (struct timeval *result, struct timeval *x, struct timeval *y); +extern void print_pow(const unsigned char *hash); + #endif /* __MINER_H__ */ diff --git a/sha256_4way.c b/sha256_4way.c index bdc4c237..556a07ad 100644 --- a/sha256_4way.c +++ b/sha256_4way.c @@ -123,6 +123,9 @@ unsigned int ScanHash_4WaySSE2(const unsigned char *pmidstate, unsigned char *pd for (i = 0; i < 32/4; i++) ((unsigned int*)phash)[i] = thash[i][j]; + + print_pow(phash); + *nHashesDone = nonce; *nNonce_p = nonce + j; return nonce + j; diff --git a/sha256_cryptopp.c b/sha256_cryptopp.c index 1535b6be..4ada4807 100644 --- a/sha256_cryptopp.c +++ b/sha256_cryptopp.c @@ -110,13 +110,7 @@ bool scanhash_cryptopp(const unsigned char *midstate, unsigned char *data, stat_ctr++; if (hash32[7] == 0) { - char *hexstr; - - hexstr = bin2hex(hash, 32); - fprintf(stderr, - "DBG: found zeroes in hash:\n%s\n", - hexstr); - free(hexstr); + print_pow(hash); *hashes_done = stat_ctr; return true; @@ -601,13 +595,7 @@ bool scanhash_asm32(const unsigned char *midstate, unsigned char *data, stat_ctr++; if (hash32[7] == 0) { - char *hexstr; - - hexstr = bin2hex(hash, 32); - fprintf(stderr, - "DBG: found zeroes in hash:\n%s\n", - hexstr); - free(hexstr); + print_pow(hash); *hashes_done = stat_ctr; return true; diff --git a/sha256_generic.c b/sha256_generic.c index 8817d927..91fbbcf5 100644 --- a/sha256_generic.c +++ b/sha256_generic.c @@ -256,13 +256,7 @@ bool scanhash_c(const unsigned char *midstate, unsigned char *data, stat_ctr++; if (hash32[7] == 0) { - char *hexstr; - - hexstr = bin2hex(hash, 32); - fprintf(stderr, - "DBG: found zeroes in hash:\n%s\n", - hexstr); - free(hexstr); + print_pow(hash); *hashes_done = stat_ctr; return true; diff --git a/sha256_via.c b/sha256_via.c index 94576a4a..011d854d 100644 --- a/sha256_via.c +++ b/sha256_via.c @@ -57,13 +57,7 @@ bool scanhash_via(unsigned char *data_inout, stat_ctr++; if (hash32[7] == 0) { - char *hexstr; - - hexstr = bin2hex(tmp_hash, 32); - fprintf(stderr, - "DBG: found zeroes in hash:\n%s\n", - hexstr); - free(hexstr); + print_pow(tmp_hash); /* swap nonce'd data back into original storage area; * TODO: only swap back the nonce, rather than all data diff --git a/util.c b/util.c index 669dd824..2a52a048 100644 --- a/util.c +++ b/util.c @@ -255,3 +255,14 @@ timeval_subtract ( return x->tv_sec < y->tv_sec; } +void print_pow(const unsigned char *hash) +{ + char *hexstr; + unsigned char hash_swap[32]; + + swap256(hash_swap, hash); + hexstr = bin2hex(hash_swap, 32); + fprintf(stderr, "PoW found: %s\n", hexstr); + free(hexstr); +} +