mirror of
https://github.com/GOSTSec/sgminer
synced 2025-08-26 22:02:09 +00:00
Display correct share hash and share difficulty with scrypt mining.
This commit is contained in:
parent
04c7a21ddd
commit
7adb7a30e6
27
cgminer.c
27
cgminer.c
@ -47,6 +47,7 @@
|
|||||||
#include "driver-cpu.h"
|
#include "driver-cpu.h"
|
||||||
#include "driver-opencl.h"
|
#include "driver-opencl.h"
|
||||||
#include "bench_block.h"
|
#include "bench_block.h"
|
||||||
|
#include "scrypt.h"
|
||||||
|
|
||||||
#if defined(unix)
|
#if defined(unix)
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
@ -1988,7 +1989,17 @@ static uint64_t share_diff(const struct work *work)
|
|||||||
return ret;
|
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;
|
char *hexstr = NULL;
|
||||||
json_t *val, *res, *err;
|
json_t *val, *res, *err;
|
||||||
@ -2046,13 +2057,19 @@ static bool submit_upstream_work(const struct work *work, CURL *curl, bool resub
|
|||||||
|
|
||||||
if (!QUIET) {
|
if (!QUIET) {
|
||||||
int intdiff = floor(work->work_difficulty);
|
int intdiff = floor(work->work_difficulty);
|
||||||
|
char diffdisp[16];
|
||||||
|
|
||||||
hash32 = (uint32_t *)(work->hash);
|
hash32 = (uint32_t *)(work->hash);
|
||||||
if (opt_scrypt)
|
if (opt_scrypt) {
|
||||||
sprintf(hashshow, "%08lx Diff %d", (unsigned long)(hash32[7]), intdiff);
|
uint32_t sharediff;
|
||||||
else {
|
|
||||||
|
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);
|
uint64_t sharediff = share_diff(work);
|
||||||
char diffdisp[16];
|
|
||||||
|
|
||||||
suffix_string(sharediff, diffdisp, 0);
|
suffix_string(sharediff, diffdisp, 0);
|
||||||
|
|
||||||
|
4
miner.h
4
miner.h
@ -897,10 +897,10 @@ struct work {
|
|||||||
unsigned char target[32];
|
unsigned char target[32];
|
||||||
unsigned char hash[32];
|
unsigned char hash[32];
|
||||||
|
|
||||||
|
uint32_t outputhash;
|
||||||
|
|
||||||
int rolls;
|
int rolls;
|
||||||
|
|
||||||
uint32_t output[1];
|
|
||||||
uint32_t valid;
|
|
||||||
dev_blk_ctx blk;
|
dev_blk_ctx blk;
|
||||||
|
|
||||||
struct thr_info *thr;
|
struct thr_info *thr;
|
||||||
|
12
scrypt.c
12
scrypt.c
@ -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);
|
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 */
|
/* Used externally as confirmation of correct OCL code */
|
||||||
bool scrypt_test(unsigned char *pdata, const unsigned char *ptarget, uint32_t nonce)
|
bool scrypt_test(unsigned char *pdata, const unsigned char *ptarget, uint32_t nonce)
|
||||||
{
|
{
|
||||||
|
8
scrypt.h
8
scrypt.h
@ -1,9 +1,13 @@
|
|||||||
#ifndef SCRYPT_H
|
#ifndef SCRYPT_H
|
||||||
#define SCRYPT_H
|
#define SCRYPT_H
|
||||||
|
|
||||||
|
#include "miner.h"
|
||||||
|
|
||||||
#ifdef USE_SCRYPT
|
#ifdef USE_SCRYPT
|
||||||
extern bool scrypt_test(unsigned char *pdata, const unsigned char *ptarget,
|
extern bool scrypt_test(unsigned char *pdata, const unsigned char *ptarget,
|
||||||
uint32_t nonce);
|
uint32_t nonce);
|
||||||
|
extern void scrypt_outputhash(struct work *work);
|
||||||
|
|
||||||
#else /* USE_SCRYPT */
|
#else /* USE_SCRYPT */
|
||||||
static inline bool scrypt_test(__maybe_unused unsigned char *pdata,
|
static inline bool scrypt_test(__maybe_unused unsigned char *pdata,
|
||||||
__maybe_unused const unsigned char *ptarget,
|
__maybe_unused const unsigned char *ptarget,
|
||||||
@ -11,6 +15,10 @@ static inline bool scrypt_test(__maybe_unused unsigned char *pdata,
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void scrypt_outputhash(struct work *work)
|
||||||
|
{
|
||||||
|
}
|
||||||
#endif /* USE_SCRYPT */
|
#endif /* USE_SCRYPT */
|
||||||
|
|
||||||
#endif /* SCRYPT_H */
|
#endif /* SCRYPT_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user