mirror of
https://github.com/LBRYFoundation/pool.git
synced 2025-08-23 17:37:25 +00:00
stratum: handle block confirmations on multialgos coins
+ var typo fix
This commit is contained in:
parent
54de738048
commit
f61d53bc67
4 changed files with 48 additions and 5 deletions
|
@ -258,7 +258,7 @@ static void client_do_submit(YAAMP_CLIENT *client, YAAMP_JOB *job, YAAMP_JOB_VAL
|
||||||
target_to_diff(coin_target), target_to_diff(hash_int),
|
target_to_diff(coin_target), target_to_diff(hash_int),
|
||||||
hash1, submitvalues->hash_be);
|
hash1, submitvalues->hash_be);
|
||||||
|
|
||||||
if(coind->noblocknotifiy) {
|
if(coind->noblocknotify) {
|
||||||
// DCR go wallet doesnt handle blocknotify= config (yet)
|
// DCR go wallet doesnt handle blocknotify= config (yet)
|
||||||
// required to store the user id and the user diff
|
// required to store the user id and the user diff
|
||||||
sleep(1);
|
sleep(1);
|
||||||
|
|
|
@ -156,6 +156,14 @@ void coind_init(YAAMP_COIND *coind)
|
||||||
//sprintf(account, "default");
|
//sprintf(account, "default");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// todo: db field
|
||||||
|
if(!strcmp(coind->symbol, "XVG") || !strcmp(coind->symbol2, "XVG")) {
|
||||||
|
coind->multialgos = true;
|
||||||
|
}
|
||||||
|
if(!strcmp(coind->symbol, "DGB") || !strcmp(coind->symbol2, "DGB")) {
|
||||||
|
coind->multialgos = true;
|
||||||
|
}
|
||||||
|
|
||||||
bool valid = coind_validate_address(coind);
|
bool valid = coind_validate_address(coind);
|
||||||
if(valid) return;
|
if(valid) return;
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,8 @@ public:
|
||||||
bool usegetwork;
|
bool usegetwork;
|
||||||
bool usememorypool;
|
bool usememorypool;
|
||||||
bool hasmasternodes;
|
bool hasmasternodes;
|
||||||
bool noblocknotifiy;
|
bool noblocknotify;
|
||||||
|
bool multialgos; // pow_hash field (or mined_hash)
|
||||||
|
|
||||||
YAAMP_JOB *job;
|
YAAMP_JOB *job;
|
||||||
// YAAMP_JOB_TEMPLATE *templ;
|
// YAAMP_JOB_TEMPLATE *templ;
|
||||||
|
|
|
@ -225,9 +225,43 @@ void block_add(int userid, int workerid, int coinid, int height, double difficul
|
||||||
}
|
}
|
||||||
|
|
||||||
// called from blocknotify tool
|
// called from blocknotify tool
|
||||||
void block_confirm(int coinid, const char *hash)
|
void block_confirm(int coinid, const char *blockhash)
|
||||||
{
|
{
|
||||||
if(strlen(hash) > 65) return;
|
char hash[192];
|
||||||
|
if(strlen(blockhash) < 64) return;
|
||||||
|
|
||||||
|
snprintf(hash, 161, "%s", blockhash);
|
||||||
|
|
||||||
|
// required for multi algos wallets where pow hash is not the blockhash
|
||||||
|
g_list_coind.Enter();
|
||||||
|
for(CLI li = g_list_coind.first; li ; li = li->next)
|
||||||
|
{
|
||||||
|
YAAMP_COIND *coind = (YAAMP_COIND *)li->data;
|
||||||
|
if(coind->id != coinid || coind->deleted) continue;
|
||||||
|
|
||||||
|
if(coind->multialgos) {
|
||||||
|
char params[192];
|
||||||
|
sprintf(params, "[\"%s\"]", blockhash);
|
||||||
|
json_value *json = rpc_call(&coind->rpc, "getblock", params);
|
||||||
|
if(!json) {
|
||||||
|
debuglog("%s: error getblock, no answer\n", __func__);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
json_value *json_res = json_get_object(json, "result");
|
||||||
|
if(!json_res) {
|
||||||
|
debuglog("%s: error getblock, no result\n", __func__);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
const char *h1 = json_get_string(json_res, "pow_hash"); // DGB, MYR, J
|
||||||
|
const char *h2 = json_get_string(json_res, "mined_hash"); // XVG
|
||||||
|
if (h1) snprintf(hash, 161, "%s", h1);
|
||||||
|
else if (h2) snprintf(hash, 161, "%s", h2);
|
||||||
|
//debuglog("%s: getblock %s -> pow %s\n", __func__, blockhash, hash);
|
||||||
|
json_value_free(json_res);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g_list_coind.Leave();
|
||||||
|
|
||||||
for(CLI li = g_list_block.first; li; li = li->next)
|
for(CLI li = g_list_block.first; li; li = li->next)
|
||||||
{
|
{
|
||||||
|
@ -237,7 +271,7 @@ void block_confirm(int coinid, const char *hash)
|
||||||
if(strcmp(block->hash1, hash) && strcmp(block->hash2, hash)) continue;
|
if(strcmp(block->hash1, hash) && strcmp(block->hash2, hash)) continue;
|
||||||
debuglog("*** CONFIRMED %d : %s\n", block->height, block->hash2);
|
debuglog("*** CONFIRMED %d : %s\n", block->height, block->hash2);
|
||||||
|
|
||||||
strncpy(block->hash, hash, 65);
|
strncpy(block->hash, blockhash, 65);
|
||||||
block->confirmed = true;
|
block->confirmed = true;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Reference in a new issue