mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-18 13:17:55 +02:00
Merge cd3d9fa5ea into merged_master (Bitcoin PR bitcoin/bitcoin#31318)
This commit is contained in:
commit
33f3d54f21
22 changed files with 144 additions and 91 deletions
|
|
@ -180,11 +180,11 @@ static bool GenerateBlock(ChainstateManager& chainman, Mining& miner, CBlock&& b
|
|||
return true;
|
||||
}
|
||||
|
||||
static UniValue generateBlocks(ChainstateManager& chainman, Mining& miner, const CScript& coinbase_script, int nGenerate, uint64_t nMaxTries)
|
||||
static UniValue generateBlocks(ChainstateManager& chainman, Mining& miner, const CScript& coinbase_output_script, int nGenerate, uint64_t nMaxTries)
|
||||
{
|
||||
UniValue blockHashes(UniValue::VARR);
|
||||
while (nGenerate > 0 && !chainman.m_interrupt) {
|
||||
std::unique_ptr<BlockTemplate> block_template(miner.createNewBlock(coinbase_script));
|
||||
std::unique_ptr<BlockTemplate> block_template(miner.createNewBlock({ .coinbase_output_script = coinbase_output_script }));
|
||||
CHECK_NONFATAL(block_template);
|
||||
|
||||
std::shared_ptr<const CBlock> block_out;
|
||||
|
|
@ -258,9 +258,9 @@ static RPCHelpMan generatetodescriptor()
|
|||
const auto num_blocks{self.Arg<int>("num_blocks")};
|
||||
const auto max_tries{self.Arg<uint64_t>("maxtries")};
|
||||
|
||||
CScript coinbase_script;
|
||||
CScript coinbase_output_script;
|
||||
std::string error;
|
||||
if (!getScriptFromDescriptor(self.Arg<std::string>("descriptor"), coinbase_script, error)) {
|
||||
if (!getScriptFromDescriptor(self.Arg<std::string>("descriptor"), coinbase_output_script, error)) {
|
||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, error);
|
||||
}
|
||||
|
||||
|
|
@ -268,7 +268,7 @@ static RPCHelpMan generatetodescriptor()
|
|||
Mining& miner = EnsureMining(node);
|
||||
ChainstateManager& chainman = EnsureChainman(node);
|
||||
|
||||
return generateBlocks(chainman, miner, coinbase_script, num_blocks, max_tries);
|
||||
return generateBlocks(chainman, miner, coinbase_output_script, num_blocks, max_tries);
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
@ -314,9 +314,9 @@ static RPCHelpMan generatetoaddress()
|
|||
Mining& miner = EnsureMining(node);
|
||||
ChainstateManager& chainman = EnsureChainman(node);
|
||||
|
||||
CScript coinbase_script = GetScriptForDestination(destination);
|
||||
CScript coinbase_output_script = GetScriptForDestination(destination);
|
||||
|
||||
return generateBlocks(chainman, miner, coinbase_script, num_blocks, max_tries);
|
||||
return generateBlocks(chainman, miner, coinbase_output_script, num_blocks, max_tries);
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
@ -350,16 +350,16 @@ static RPCHelpMan generateblock()
|
|||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
const auto address_or_descriptor = request.params[0].get_str();
|
||||
CScript coinbase_script;
|
||||
CScript coinbase_output_script;
|
||||
std::string error;
|
||||
|
||||
if (!getScriptFromDescriptor(address_or_descriptor, coinbase_script, error)) {
|
||||
if (!getScriptFromDescriptor(address_or_descriptor, coinbase_output_script, error)) {
|
||||
const auto destination = DecodeDestination(address_or_descriptor);
|
||||
if (!IsValidDestination(destination)) {
|
||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Error: Invalid address or descriptor");
|
||||
}
|
||||
|
||||
coinbase_script = GetScriptForDestination(destination);
|
||||
coinbase_output_script = GetScriptForDestination(destination);
|
||||
}
|
||||
|
||||
NodeContext& node = EnsureAnyNodeContext(request.context);
|
||||
|
|
@ -393,7 +393,7 @@ static RPCHelpMan generateblock()
|
|||
|
||||
ChainstateManager& chainman = EnsureChainman(node);
|
||||
{
|
||||
std::unique_ptr<BlockTemplate> block_template{miner.createNewBlock(coinbase_script, {.use_mempool = false})};
|
||||
std::unique_ptr<BlockTemplate> block_template{miner.createNewBlock({.use_mempool = false, .coinbase_output_script = coinbase_output_script})};
|
||||
CHECK_NONFATAL(block_template);
|
||||
|
||||
block = block_template->getBlock();
|
||||
|
|
@ -838,8 +838,7 @@ static RPCHelpMan getblocktemplate()
|
|||
time_start = GetTime();
|
||||
|
||||
// Create new block
|
||||
CScript scriptDummy = CScript() << OP_TRUE;
|
||||
block_template = miner.createNewBlock(scriptDummy);
|
||||
block_template = miner.createNewBlock();
|
||||
CHECK_NONFATAL(block_template);
|
||||
|
||||
|
||||
|
|
@ -1225,8 +1224,12 @@ static RPCHelpMan getnewblockhex()
|
|||
|
||||
BlockAssembler::Options options;
|
||||
ApplyArgsManOptions(gArgs, options);
|
||||
options.coinbase_output_script = feeDestinationScript;
|
||||
options.min_tx_age = std::chrono::seconds(required_wait);
|
||||
options.proposed_entry = proposed;
|
||||
options.commit_scripts = data_commitments;
|
||||
|
||||
std::unique_ptr<CBlockTemplate> pblocktemplate(BlockAssembler(chainman.ActiveChainstate(), node.mempool.get(), options).CreateNewBlock(feeDestinationScript, std::chrono::seconds(required_wait), &proposed, data_commitments.empty() ? nullptr : &data_commitments));
|
||||
std::unique_ptr<CBlockTemplate> pblocktemplate(BlockAssembler(chainman.ActiveChainstate(), node.mempool.get(), options).CreateNewBlock());
|
||||
if (!pblocktemplate.get()) {
|
||||
throw JSONRPCError(RPC_INTERNAL_ERROR, "Wallet keypool empty");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue