|
|
@ -546,6 +546,9 @@ UniValue getblocktemplate(const UniValue& params, bool fHelp) |
|
|
|
UpdateTime(pblock, consensusParams, pindexPrev); |
|
|
|
UpdateTime(pblock, consensusParams, pindexPrev); |
|
|
|
pblock->nNonce = 0; |
|
|
|
pblock->nNonce = 0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// NOTE: If at some point we support pre-segwit miners post-segwit-activation, this needs to take segwit support into consideration
|
|
|
|
|
|
|
|
const bool fPreSegWit = (THRESHOLD_ACTIVE != VersionBitsState(pindexPrev, consensusParams, Consensus::DEPLOYMENT_SEGWIT, versionbitscache)); |
|
|
|
|
|
|
|
|
|
|
|
UniValue aCaps(UniValue::VARR); aCaps.push_back("proposal"); |
|
|
|
UniValue aCaps(UniValue::VARR); aCaps.push_back("proposal"); |
|
|
|
|
|
|
|
|
|
|
|
UniValue transactions(UniValue::VARR); |
|
|
|
UniValue transactions(UniValue::VARR); |
|
|
@ -574,7 +577,12 @@ UniValue getblocktemplate(const UniValue& params, bool fHelp) |
|
|
|
|
|
|
|
|
|
|
|
int index_in_template = i - 1; |
|
|
|
int index_in_template = i - 1; |
|
|
|
entry.push_back(Pair("fee", pblocktemplate->vTxFees[index_in_template])); |
|
|
|
entry.push_back(Pair("fee", pblocktemplate->vTxFees[index_in_template])); |
|
|
|
entry.push_back(Pair("sigops", pblocktemplate->vTxSigOpsCost[index_in_template])); |
|
|
|
int64_t nTxSigOps = pblocktemplate->vTxSigOpsCost[index_in_template]; |
|
|
|
|
|
|
|
if (fPreSegWit) { |
|
|
|
|
|
|
|
assert(nTxSigOps % WITNESS_SCALE_FACTOR == 0); |
|
|
|
|
|
|
|
nTxSigOps /= WITNESS_SCALE_FACTOR; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
entry.push_back(Pair("sigops", nTxSigOps)); |
|
|
|
entry.push_back(Pair("weight", GetTransactionWeight(tx))); |
|
|
|
entry.push_back(Pair("weight", GetTransactionWeight(tx))); |
|
|
|
|
|
|
|
|
|
|
|
transactions.push_back(entry); |
|
|
|
transactions.push_back(entry); |
|
|
@ -657,7 +665,12 @@ UniValue getblocktemplate(const UniValue& params, bool fHelp) |
|
|
|
result.push_back(Pair("mintime", (int64_t)pindexPrev->GetMedianTimePast()+1)); |
|
|
|
result.push_back(Pair("mintime", (int64_t)pindexPrev->GetMedianTimePast()+1)); |
|
|
|
result.push_back(Pair("mutable", aMutable)); |
|
|
|
result.push_back(Pair("mutable", aMutable)); |
|
|
|
result.push_back(Pair("noncerange", "00000000ffffffff")); |
|
|
|
result.push_back(Pair("noncerange", "00000000ffffffff")); |
|
|
|
result.push_back(Pair("sigoplimit", (int64_t)MAX_BLOCK_SIGOPS_COST)); |
|
|
|
int64_t nSigOpLimit = MAX_BLOCK_SIGOPS_COST; |
|
|
|
|
|
|
|
if (fPreSegWit) { |
|
|
|
|
|
|
|
assert(nSigOpLimit % WITNESS_SCALE_FACTOR == 0); |
|
|
|
|
|
|
|
nSigOpLimit /= WITNESS_SCALE_FACTOR; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
result.push_back(Pair("sigoplimit", nSigOpLimit)); |
|
|
|
result.push_back(Pair("sizelimit", (int64_t)MAX_BLOCK_SERIALIZED_SIZE)); |
|
|
|
result.push_back(Pair("sizelimit", (int64_t)MAX_BLOCK_SERIALIZED_SIZE)); |
|
|
|
result.push_back(Pair("weightlimit", (int64_t)MAX_BLOCK_WEIGHT)); |
|
|
|
result.push_back(Pair("weightlimit", (int64_t)MAX_BLOCK_WEIGHT)); |
|
|
|
result.push_back(Pair("curtime", pblock->GetBlockTime())); |
|
|
|
result.push_back(Pair("curtime", pblock->GetBlockTime())); |
|
|
|