mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-22 20:44:19 +00:00
Set a true 256bit binary target based on any diff value in set_target()
This commit is contained in:
parent
61297399de
commit
8d61ee2455
49
cgminer.c
49
cgminer.c
@ -5912,23 +5912,52 @@ static void gen_hash(unsigned char *data, unsigned char *hash, int len)
|
|||||||
sha256(hash1, 32, hash);
|
sha256(hash1, 32, hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* truediffone == 0x00000000FFFF0000000000000000000000000000000000000000000000000000
|
||||||
|
* Generate a 256 bit binary LE target by cutting up diff into 64 bit sized
|
||||||
|
* portions. */
|
||||||
|
static double truediffone = 26959535291011309493156476344723991336010898738574164086137773096960.0;
|
||||||
|
static double bits192 = 6277101735386680763835789423207666416102355444464034512896.0;
|
||||||
|
static double bits128 = 340282366920938463463374607431768211456.0;
|
||||||
|
static double bits64 = 18446744073709551616.0;
|
||||||
|
|
||||||
void set_target(unsigned char *dest_target, double diff)
|
void set_target(unsigned char *dest_target, double diff)
|
||||||
{
|
{
|
||||||
unsigned char target[32], rtarget[32];
|
unsigned char target[32];
|
||||||
uint64_t *data64, h64;
|
uint64_t *data64, h64;
|
||||||
double d64;
|
double d64, dcut64;
|
||||||
|
|
||||||
|
d64 = truediffone;
|
||||||
if (opt_scrypt)
|
if (opt_scrypt)
|
||||||
d64 = 0xFFFF00000000ull;
|
d64 *= (double)65536;
|
||||||
else
|
|
||||||
d64 = 0xFFFF0000ull;
|
|
||||||
d64 /= diff;
|
d64 /= diff;
|
||||||
h64 = d64;
|
|
||||||
|
|
||||||
memset(rtarget, 0xFF, 32);
|
dcut64 = d64 / bits192;
|
||||||
data64 = (uint64_t *)rtarget;
|
h64 = dcut64;
|
||||||
*data64 = htobe64(h64);
|
data64 = (uint64_t *)(target + 24);
|
||||||
swab256(target, rtarget);
|
*data64 = htole64(h64);
|
||||||
|
dcut64 = h64;
|
||||||
|
dcut64 *= bits192;
|
||||||
|
d64 -= dcut64;
|
||||||
|
|
||||||
|
dcut64 = d64 / bits128;
|
||||||
|
h64 = dcut64;
|
||||||
|
data64 = (uint64_t *)(target + 16);
|
||||||
|
*data64 = htole64(h64);
|
||||||
|
dcut64 = h64;
|
||||||
|
dcut64 *= bits128;
|
||||||
|
d64 -= dcut64;
|
||||||
|
|
||||||
|
dcut64 = d64 / bits64;
|
||||||
|
h64 = dcut64;
|
||||||
|
data64 = (uint64_t *)(target + 8);
|
||||||
|
*data64 = htole64(h64);
|
||||||
|
dcut64 = h64;
|
||||||
|
dcut64 *= bits64;
|
||||||
|
d64 -= dcut64;
|
||||||
|
|
||||||
|
h64 = d64;
|
||||||
|
data64 = (uint64_t *)(target);
|
||||||
|
*data64 = htole64(h64);
|
||||||
|
|
||||||
if (opt_debug) {
|
if (opt_debug) {
|
||||||
char *htarget = bin2hex(target, 32);
|
char *htarget = bin2hex(target, 32);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user