diff --git a/stratum/coinbase.cpp b/stratum/coinbase.cpp index 15db7a2..2d20a87 100644 --- a/stratum/coinbase.cpp +++ b/stratum/coinbase.cpp @@ -320,9 +320,10 @@ void coinbase_create(YAAMP_COIND *coind, YAAMP_JOB_TEMPLATE *templ, json_value * } } if (masternode_enabled && masternode) { + bool started = json_get_bool(json_result, "masternode_payments_started"); const char *payee = json_get_string(masternode, "payee"); json_int_t amount = json_get_int(masternode, "amount"); - if (payee && amount) { + if (payee && amount && started) { npayees++; available -= amount; base58_decode(payee, script_payee); @@ -338,7 +339,11 @@ void coinbase_create(YAAMP_COIND *coind, YAAMP_JOB_TEMPLATE *templ, json_value * strcat(templ->coinb2, payees); if (templ->has_segwit_txs) strcat(templ->coinb2, commitment); strcat(templ->coinb2, script_dests); - job_pack_tx(coind, templ->coinb2, available, NULL); + if (coind->p2sh_address) { // "MAC 0.16" + p2sh_pack_tx(coind, templ->coinb2, available, coind->script_pubkey); + } else { + job_pack_tx(coind, templ->coinb2, available, NULL); + } strcat(templ->coinb2, "00000000"); // locktime coind->reward = (double)available/100000000*coind->reward_mul; //debuglog("%s %d dests %s\n", coind->symbol, npayees, script_dests); diff --git a/stratum/coind.cpp b/stratum/coind.cpp index 4ba9ab8..1544803 100644 --- a/stratum/coind.cpp +++ b/stratum/coind.cpp @@ -139,6 +139,8 @@ bool coind_validate_address(YAAMP_COIND *coind) if (!base58_decode(coind->wallet, coind->script_pubkey)) stratumlog("Warning: unable to decode %s %s script pubkey\n", coind->symbol, coind->wallet); + coind->p2sh_address = json_get_bool(json_result, "isscript"); + // if base58 decode fails if (!strlen(coind->script_pubkey)) { const char *pk = json_get_string(json_result, "scriptPubKey"); diff --git a/stratum/coind.h b/stratum/coind.h index d008a24..f58f091 100644 --- a/stratum/coind.h +++ b/stratum/coind.h @@ -35,6 +35,7 @@ public: char pubkey[1024]; char script_pubkey[1024]; + bool p2sh_address; bool pos; bool hassubmitblock; diff --git a/web/yaamp/core/backend/coins.php b/web/yaamp/core/backend/coins.php index 34a1c32..1112671 100644 --- a/web/yaamp/core/backend/coins.php +++ b/web/yaamp/core/backend/coins.php @@ -145,7 +145,8 @@ function BackendCoinsUpdate() } else if(isset($template['masternode']) && arraySafeVal($template,'masternode_payments_enforced')) { - $coin->reward -= arraySafeVal($template['masternode'],'amount',0)/100000000; + if (arraySafeVal($template,'masternode_payments_started')) + $coin->reward -= arraySafeVal($template['masternode'],'amount',0)/100000000; $coin->hasmasternodes = true; }