1
0
mirror of https://github.com/GOSTSec/sgminer synced 2025-03-13 06:01:03 +00:00

Display correct share hash and share difficulty with scrypt mining.

This commit is contained in:
Con Kolivas 2012-10-15 23:10:24 +11:00
parent 04c7a21ddd
commit 7adb7a30e6
4 changed files with 44 additions and 7 deletions

View File

@ -47,6 +47,7 @@
#include "driver-cpu.h"
#include "driver-opencl.h"
#include "bench_block.h"
#include "scrypt.h"
#if defined(unix)
#include <errno.h>
@ -1988,7 +1989,17 @@ static uint64_t share_diff(const struct work *work)
return ret;
}
static bool submit_upstream_work(const struct work *work, CURL *curl, bool resubmit)
static uint32_t scrypt_diff(const struct work *work)
{
const uint32_t scrypt_diffone = 0x0000fffful;
uint32_t d32 = work->outputhash;
if (unlikely(!d32))
d32 = 1;
return scrypt_diffone / d32;
}
static bool submit_upstream_work(struct work *work, CURL *curl, bool resubmit)
{
char *hexstr = NULL;
json_t *val, *res, *err;
@ -2046,13 +2057,19 @@ static bool submit_upstream_work(const struct work *work, CURL *curl, bool resub
if (!QUIET) {
int intdiff = floor(work->work_difficulty);
char diffdisp[16];
hash32 = (uint32_t *)(work->hash);
if (opt_scrypt)
sprintf(hashshow, "%08lx Diff %d", (unsigned long)(hash32[7]), intdiff);
else {
if (opt_scrypt) {
uint32_t sharediff;
scrypt_outputhash(work);
sharediff = scrypt_diff(work);
suffix_string(sharediff, diffdisp, 0);
sprintf(hashshow, "%08lx Diff %s/%d", (unsigned long)work->outputhash, diffdisp, intdiff);
} else {
uint64_t sharediff = share_diff(work);
char diffdisp[16];
suffix_string(sharediff, diffdisp, 0);

View File

@ -897,10 +897,10 @@ struct work {
unsigned char target[32];
unsigned char hash[32];
uint32_t outputhash;
int rolls;
uint32_t output[1];
uint32_t valid;
dev_blk_ctx blk;
struct thr_info *thr;

View File

@ -405,6 +405,18 @@ static uint32_t scrypt_1024_1_1_256_sp(const uint32_t* input, char* scratchpad)
return PBKDF2_SHA256_80_128_32(input, X);
}
void scrypt_outputhash(struct work *work)
{
uint32_t data[20];
char *scratchbuf;
uint32_t *nonce = (uint32_t *)(work->data + 76);
be32enc_vect(data, (const uint32_t *)work->data, 19);
data[19] = htobe32(*nonce);
scratchbuf = alloca(131584);
work->outputhash = scrypt_1024_1_1_256_sp(data, scratchbuf);
}
/* Used externally as confirmation of correct OCL code */
bool scrypt_test(unsigned char *pdata, const unsigned char *ptarget, uint32_t nonce)
{

View File

@ -1,9 +1,13 @@
#ifndef SCRYPT_H
#define SCRYPT_H
#include "miner.h"
#ifdef USE_SCRYPT
extern bool scrypt_test(unsigned char *pdata, const unsigned char *ptarget,
uint32_t nonce);
extern void scrypt_outputhash(struct work *work);
#else /* USE_SCRYPT */
static inline bool scrypt_test(__maybe_unused unsigned char *pdata,
__maybe_unused const unsigned char *ptarget,
@ -11,6 +15,10 @@ static inline bool scrypt_test(__maybe_unused unsigned char *pdata,
{
return false;
}
static inline void scrypt_outputhash(struct work *work)
{
}
#endif /* USE_SCRYPT */
#endif /* SCRYPT_H */