mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-09 19:37:27 -03:00
rpc: update getblocktemplate with signet rule, include signet_challenge
This commit is contained in:
parent
25bc840e03
commit
81c54dec20
1 changed files with 17 additions and 1 deletions
|
@ -714,6 +714,13 @@ static RPCHelpMan getblocktemplate()
|
||||||
// TODO: Maybe recheck connections/IBD and (if something wrong) send an expires-immediately template to stop miners?
|
// TODO: Maybe recheck connections/IBD and (if something wrong) send an expires-immediately template to stop miners?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Consensus::Params& consensusParams = Params().GetConsensus();
|
||||||
|
|
||||||
|
// GBT must be called with 'signet' set in the rules for signet chains
|
||||||
|
if (consensusParams.signet_blocks && setClientRules.count("signet") != 1) {
|
||||||
|
throw JSONRPCError(RPC_INVALID_PARAMETER, "getblocktemplate must be called with the signet rule set (call with {\"rules\": [\"segwit\", \"signet\"]})");
|
||||||
|
}
|
||||||
|
|
||||||
// GBT must be called with 'segwit' set in the rules
|
// GBT must be called with 'segwit' set in the rules
|
||||||
if (setClientRules.count("segwit") != 1) {
|
if (setClientRules.count("segwit") != 1) {
|
||||||
throw JSONRPCError(RPC_INVALID_PARAMETER, "getblocktemplate must be called with the segwit rule set (call with {\"rules\": [\"segwit\"]})");
|
throw JSONRPCError(RPC_INVALID_PARAMETER, "getblocktemplate must be called with the segwit rule set (call with {\"rules\": [\"segwit\"]})");
|
||||||
|
@ -745,7 +752,6 @@ static RPCHelpMan getblocktemplate()
|
||||||
}
|
}
|
||||||
CHECK_NONFATAL(pindexPrev);
|
CHECK_NONFATAL(pindexPrev);
|
||||||
CBlock* pblock = &pblocktemplate->block; // pointer for convenience
|
CBlock* pblock = &pblocktemplate->block; // pointer for convenience
|
||||||
const Consensus::Params& consensusParams = Params().GetConsensus();
|
|
||||||
|
|
||||||
// Update nTime
|
// Update nTime
|
||||||
UpdateTime(pblock, consensusParams, pindexPrev);
|
UpdateTime(pblock, consensusParams, pindexPrev);
|
||||||
|
@ -809,6 +815,12 @@ static RPCHelpMan getblocktemplate()
|
||||||
UniValue aRules(UniValue::VARR);
|
UniValue aRules(UniValue::VARR);
|
||||||
aRules.push_back("csv");
|
aRules.push_back("csv");
|
||||||
if (!fPreSegWit) aRules.push_back("!segwit");
|
if (!fPreSegWit) aRules.push_back("!segwit");
|
||||||
|
if (consensusParams.signet_blocks) {
|
||||||
|
// indicate to miner that they must understand signet rules
|
||||||
|
// when attempting to mine with this template
|
||||||
|
aRules.push_back("!signet");
|
||||||
|
}
|
||||||
|
|
||||||
UniValue vbavailable(UniValue::VOBJ);
|
UniValue vbavailable(UniValue::VOBJ);
|
||||||
for (int j = 0; j < (int)Consensus::MAX_VERSION_BITS_DEPLOYMENTS; ++j) {
|
for (int j = 0; j < (int)Consensus::MAX_VERSION_BITS_DEPLOYMENTS; ++j) {
|
||||||
Consensus::DeploymentPos pos = Consensus::DeploymentPos(j);
|
Consensus::DeploymentPos pos = Consensus::DeploymentPos(j);
|
||||||
|
@ -889,6 +901,10 @@ static RPCHelpMan getblocktemplate()
|
||||||
result.pushKV("bits", strprintf("%08x", pblock->nBits));
|
result.pushKV("bits", strprintf("%08x", pblock->nBits));
|
||||||
result.pushKV("height", (int64_t)(pindexPrev->nHeight+1));
|
result.pushKV("height", (int64_t)(pindexPrev->nHeight+1));
|
||||||
|
|
||||||
|
if (consensusParams.signet_blocks) {
|
||||||
|
result.pushKV("signet_challenge", HexStr(consensusParams.signet_challenge));
|
||||||
|
}
|
||||||
|
|
||||||
if (!pblocktemplate->vchCoinbaseCommitment.empty()) {
|
if (!pblocktemplate->vchCoinbaseCommitment.empty()) {
|
||||||
result.pushKV("default_witness_commitment", HexStr(pblocktemplate->vchCoinbaseCommitment));
|
result.pushKV("default_witness_commitment", HexStr(pblocktemplate->vchCoinbaseCommitment));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue