mirror of
https://github.com/GOSTSec/ccminer
synced 2025-02-06 11:54:22 +00:00
Release 1.4.7
Note: Heavy and Mjollnir are broken on linux (only)... To check in the next version... 4 hours i try to fix that without success. djm34 variant seems ok but also make a lot of rejects.
This commit is contained in:
parent
0317706464
commit
3550d6a889
29
cpu-miner.c
29
cpu-miner.c
@ -142,7 +142,7 @@ typedef enum {
|
|||||||
ALGO_KECCAK,
|
ALGO_KECCAK,
|
||||||
ALGO_JACKPOT,
|
ALGO_JACKPOT,
|
||||||
ALGO_LUFFA_DOOM,
|
ALGO_LUFFA_DOOM,
|
||||||
ALGO_MJOLLNIR, /* Mjollnir hash */
|
ALGO_MJOLLNIR, /* Hefty hash */
|
||||||
ALGO_MYR_GR,
|
ALGO_MYR_GR,
|
||||||
ALGO_NIST5,
|
ALGO_NIST5,
|
||||||
ALGO_PENTABLAKE,
|
ALGO_PENTABLAKE,
|
||||||
@ -445,7 +445,7 @@ static bool work_decode(const json_t *val, struct work *work)
|
|||||||
}
|
}
|
||||||
if (opt_algo == ALGO_HEAVY) {
|
if (opt_algo == ALGO_HEAVY) {
|
||||||
if (unlikely(!jobj_binary(val, "maxvote", &work->maxvote, sizeof(work->maxvote)))) {
|
if (unlikely(!jobj_binary(val, "maxvote", &work->maxvote, sizeof(work->maxvote)))) {
|
||||||
work->maxvote = 1024;
|
work->maxvote = 2048;
|
||||||
}
|
}
|
||||||
} else work->maxvote = 0;
|
} else work->maxvote = 0;
|
||||||
|
|
||||||
@ -485,6 +485,11 @@ static void calc_diff(struct work *work, int known)
|
|||||||
|
|
||||||
swab256(rtarget, work->target);
|
swab256(rtarget, work->target);
|
||||||
data64 = (uint64_t *)(rtarget + 3); /* todo: index (3) can be tuned here */
|
data64 = (uint64_t *)(rtarget + 3); /* todo: index (3) can be tuned here */
|
||||||
|
|
||||||
|
if (opt_algo == ALGO_HEAVY) {
|
||||||
|
data64 = (uint64_t *)(rtarget + 2);
|
||||||
|
}
|
||||||
|
|
||||||
d64 = swab64(*data64);
|
d64 = swab64(*data64);
|
||||||
if (unlikely(!d64))
|
if (unlikely(!d64))
|
||||||
d64 = 1;
|
d64 = 1;
|
||||||
@ -866,7 +871,7 @@ static void stratum_gen_work(struct stratum_ctx *sctx, struct work *work)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!sctx->job.job_id) {
|
if (!sctx->job.job_id) {
|
||||||
/* job not yet retrieved */
|
// applog(LOG_WARNING, "stratum_gen_work: job not yet retrieved");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -915,7 +920,7 @@ static void stratum_gen_work(struct stratum_ctx *sctx, struct work *work)
|
|||||||
work->data[9 + i] = be32dec((uint32_t *)merkle_root + i);
|
work->data[9 + i] = be32dec((uint32_t *)merkle_root + i);
|
||||||
work->data[17] = le32dec(sctx->job.ntime);
|
work->data[17] = le32dec(sctx->job.ntime);
|
||||||
work->data[18] = le32dec(sctx->job.nbits);
|
work->data[18] = le32dec(sctx->job.nbits);
|
||||||
if (opt_algo == ALGO_MJOLLNIR)
|
if (opt_algo == ALGO_MJOLLNIR || opt_algo == ALGO_HEAVY)
|
||||||
{
|
{
|
||||||
for (i = 0; i < 20; i++)
|
for (i = 0; i < 20; i++)
|
||||||
work->data[i] = be32dec((uint32_t *)&work->data[i]);
|
work->data[i] = be32dec((uint32_t *)&work->data[i]);
|
||||||
@ -924,18 +929,14 @@ static void stratum_gen_work(struct stratum_ctx *sctx, struct work *work)
|
|||||||
work->data[20] = 0x80000000;
|
work->data[20] = 0x80000000;
|
||||||
work->data[31] = (opt_algo == ALGO_MJOLLNIR) ? 0x000002A0 : 0x00000280;
|
work->data[31] = (opt_algo == ALGO_MJOLLNIR) ? 0x000002A0 : 0x00000280;
|
||||||
|
|
||||||
// HeavyCoin
|
// HeavyCoin (vote / reward)
|
||||||
if (opt_algo == ALGO_HEAVY) {
|
if (opt_algo == ALGO_HEAVY) {
|
||||||
uint16_t *ext;
|
work->maxvote = 2048;
|
||||||
work->maxvote = 1024;
|
uint16_t *ext = (uint16_t*)(&work->data[20]);
|
||||||
ext = (uint16_t*)(&work->data[20]);
|
|
||||||
ext[0] = opt_vote;
|
ext[0] = opt_vote;
|
||||||
ext[1] = be16dec(sctx->job.nreward);
|
ext[1] = be16dec(sctx->job.nreward);
|
||||||
|
// applog(LOG_DEBUG, "DEBUG: vote=%hx reward=%hx", ext[0], ext[1]);
|
||||||
for (i = 0; i < 20; i++)
|
|
||||||
work->data[i] = be32dec((uint32_t *)&work->data[i]);
|
|
||||||
}
|
}
|
||||||
//
|
|
||||||
|
|
||||||
pthread_mutex_unlock(&sctx->work_lock);
|
pthread_mutex_unlock(&sctx->work_lock);
|
||||||
|
|
||||||
@ -1678,7 +1679,7 @@ static void parse_arg(int key, char *arg)
|
|||||||
break;
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
v = atoi(arg);
|
v = atoi(arg);
|
||||||
if (v < 0 || v > 1024) /* sanity check */
|
if (v < 0 || v > 8192) /* sanity check */
|
||||||
show_usage_and_exit(1);
|
show_usage_and_exit(1);
|
||||||
opt_vote = (uint16_t)v;
|
opt_vote = (uint16_t)v;
|
||||||
break;
|
break;
|
||||||
@ -1858,7 +1859,7 @@ static void parse_config(void)
|
|||||||
}
|
}
|
||||||
else if (options[i].has_arg && json_is_integer(val)) {
|
else if (options[i].has_arg && json_is_integer(val)) {
|
||||||
char buf[16];
|
char buf[16];
|
||||||
sprintf(buf, "%d", json_integer_value(val));
|
sprintf(buf, "%d", (int) json_integer_value(val));
|
||||||
parse_arg(options[i].val, buf);
|
parse_arg(options[i].val, buf);
|
||||||
}
|
}
|
||||||
else if (options[i].has_arg && json_is_real(val)) {
|
else if (options[i].has_arg && json_is_real(val)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user