Bitcoin Core 32.1.0
P2P Digital Currency
Loading...
Searching...
No Matches
mining.cpp File Reference
#include <bitcoin-build-config.h>
#include <interfaces/mining.h>
#include <rpc/register.h>
#include <addresstype.h>
#include <arith_uint256.h>
#include <chain.h>
#include <chainparams.h>
#include <chainparamsbase.h>
#include <consensus/amount.h>
#include <consensus/consensus.h>
#include <consensus/merkle.h>
#include <consensus/params.h>
#include <consensus/validation.h>
#include <core_io.h>
#include <crypto/hex_base.h>
#include <interfaces/types.h>
#include <key_io.h>
#include <net.h>
#include <netbase.h>
#include <node/blockstorage.h>
#include <node/context.h>
#include <node/miner.h>
#include <node/mining_args.h>
#include <node/mining_types.h>
#include <node/warnings.h>
#include <policy/feerate.h>
#include <policy/policy.h>
#include <pow.h>
#include <primitives/block.h>
#include <primitives/transaction.h>
#include <rpc/blockchain.h>
#include <rpc/mining.h>
#include <rpc/protocol.h>
#include <rpc/request.h>
#include <rpc/server.h>
#include <rpc/server_util.h>
#include <rpc/util.h>
#include <script/descriptor.h>
#include <script/script.h>
#include <script/signingprovider.h>
#include <serialize.h>
#include <streams.h>
#include <sync.h>
#include <tinyformat.h>
#include <txmempool.h>
#include <uint256.h>
#include <univalue.h>
#include <util/chaintype.h>
#include <util/check.h>
#include <util/signalinterrupt.h>
#include <util/strencodings.h>
#include <util/string.h>
#include <util/time.h>
#include <validation.h>
#include <validationinterface.h>
#include <versionbits.h>
#include <algorithm>
#include <cstddef>
#include <cstdint>
#include <functional>
#include <limits>
#include <map>
#include <memory>
#include <optional>
#include <set>
#include <span>
#include <string>
#include <string_view>
#include <utility>
#include <vector>

Go to the source code of this file.

Classes

class  submitblock_StateCatcher

Functions

static UniValue GetNetworkHashPS (int lookup, int height, const CChain &active_chain)
 Return average network hashes per second based on the last 'lookup' blocks, or from the last difficulty change if 'lookup' is -1.
static RPCMethod getnetworkhashps ()
static bool GenerateBlock (ChainstateManager &chainman, CBlock &&block, uint64_t &max_tries, std::shared_ptr< const CBlock > &block_out, bool process_new_block)
static UniValue generateBlocks (ChainstateManager &chainman, Mining &miner, const CScript &coinbase_output_script, int nGenerate, uint64_t nMaxTries)
static bool getScriptFromDescriptor (std::string_view descriptor, CScript &script, std::string &error)
static RPCMethod generatetodescriptor ()
static RPCMethod generate ()
static RPCMethod generatetoaddress ()
static RPCMethod generateblock ()
static RPCMethod getmininginfo ()
static RPCMethod prioritisetransaction ()
static RPCMethod getprioritisedtransactions ()
static UniValue BIP22ValidationResult (const BlockValidationState &state)
static std::string gbt_rule_value (const std::string &name, bool gbt_optional_rule)
static RPCMethod getblocktemplate ()
static RPCMethod submitblock ()
static RPCMethod submitheader ()
void RegisterMiningRPCCommands (CRPCTable &t)
int64_t GetMinimumTime (const CBlockIndex *pindexPrev, int64_t difficulty_adjustment_interval)
 Get the minimum time a miner should use in the next block.
void RegenerateCommitments (CBlock &block, ChainstateManager &chainman)
 Update an old GenerateCoinbaseCommitment from CreateNewBlock after the block txs have changed.
int64_t UpdateTime (CBlockHeader *pblock, const Consensus::Params &consensusParams, const CBlockIndex *pindexPrev)
template<typename T>
std::string ToString (const T &t)
 Locale-independent version of std::to_string.

Function Documentation

◆ BIP22ValidationResult()

UniValue BIP22ValidationResult ( const BlockValidationState & state)
static

Definition at line 618 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gbt_rule_value()

std::string gbt_rule_value ( const std::string & name,
bool gbt_optional_rule )
static

Definition at line 637 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ generate()

RPCMethod generate ( )
static

Definition at line 288 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GenerateBlock()

bool GenerateBlock ( ChainstateManager & chainman,
CBlock && block,
uint64_t & max_tries,
std::shared_ptr< const CBlock > & block_out,
bool process_new_block )
static

Definition at line 168 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ generateblock()

RPCMethod generateblock ( )
static

Definition at line 336 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ generateBlocks()

UniValue generateBlocks ( ChainstateManager & chainman,
Mining & miner,
const CScript & coinbase_output_script,
int nGenerate,
uint64_t nMaxTries )
static

Definition at line 195 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ generatetoaddress()

RPCMethod generatetoaddress ( )
static

Definition at line 295 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ generatetodescriptor()

RPCMethod generatetodescriptor ( )
static

Definition at line 250 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getblocktemplate()

RPCMethod getblocktemplate ( )
static

Wait to respond until either the best block changes, OR there are more transactions.

The check for new transactions first happens after 1 minute and subsequently every 10 seconds. BIP22 does not require this particular interval. On mainnet the mempool changes frequently enough that in practice this RPC returns after 60 seconds, or sooner if the best block changes.

getblocktemplate is unlikely to be called by bitcoin-cli, so -rpcclienttimeout is not a concern. BIP22 recommends a long request timeout.

The longpollid is assumed to be a tip hash if it has the right format.

Definition at line 646 of file mining.cpp.

Here is the caller graph for this function:

◆ GetMinimumTime()

int64_t node::GetMinimumTime ( const CBlockIndex * pindexPrev,
const int64_t difficulty_adjustment_interval )

Get the minimum time a miner should use in the next block.

This always accounts for the BIP94 timewarp rule, so does not necessarily reflect the consensus limit.

Definition at line 57 of file miner.cpp.

Here is the caller graph for this function:

◆ getmininginfo()

RPCMethod getmininginfo ( )
static

Definition at line 447 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetNetworkHashPS()

UniValue GetNetworkHashPS ( int lookup,
int height,
const CChain & active_chain )
static

Return average network hashes per second based on the last 'lookup' blocks, or from the last difficulty change if 'lookup' is -1.

If 'height' is -1, compute the estimate from current chain tip. If 'height' is a valid block height, compute the estimate at the time when a given block was found.

Definition at line 96 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getnetworkhashps()

RPCMethod getnetworkhashps ( )
static

Definition at line 142 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getprioritisedtransactions()

RPCMethod getprioritisedtransactions ( )
static

Definition at line 578 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getScriptFromDescriptor()

bool getScriptFromDescriptor ( std::string_view descriptor,
CScript & script,
std::string & error )
static

Definition at line 215 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ prioritisetransaction()

RPCMethod prioritisetransaction ( )
static

Definition at line 532 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RegenerateCommitments()

void node::RegenerateCommitments ( CBlock & block,
ChainstateManager & chainman )

Update an old GenerateCoinbaseCommitment from CreateNewBlock after the block txs have changed.

Definition at line 95 of file miner.cpp.

Here is the caller graph for this function:

◆ RegisterMiningRPCCommands()

void RegisterMiningRPCCommands ( CRPCTable & t)

Definition at line 1180 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ submitblock()

RPCMethod submitblock ( )
static

Definition at line 1087 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ submitheader()

RPCMethod submitheader ( )
static

Definition at line 1140 of file mining.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ToString()

template<typename T>
std::string util::ToString ( const T & t)

Locale-independent version of std::to_string.

Definition at line 250 of file string.h.

◆ UpdateTime()

int64_t node::UpdateTime ( CBlockHeader * pblock,
const Consensus::Params & consensusParams,
const CBlockIndex * pindexPrev )

Definition at line 77 of file miner.cpp.

Here is the caller graph for this function: