Bitcoin Core  27.99.0
P2P Digital Currency
Classes | Functions | Variables
blockchain.cpp File Reference
#include <rpc/blockchain.h>
#include <blockfilter.h>
#include <chain.h>
#include <chainparams.h>
#include <clientversion.h>
#include <coins.h>
#include <common/args.h>
#include <consensus/amount.h>
#include <consensus/params.h>
#include <consensus/validation.h>
#include <core_io.h>
#include <deploymentinfo.h>
#include <deploymentstatus.h>
#include <flatfile.h>
#include <hash.h>
#include <index/blockfilterindex.h>
#include <index/coinstatsindex.h>
#include <kernel/coinstats.h>
#include <logging/timer.h>
#include <net.h>
#include <net_processing.h>
#include <node/blockstorage.h>
#include <node/context.h>
#include <node/transaction.h>
#include <node/utxo_snapshot.h>
#include <primitives/transaction.h>
#include <rpc/server.h>
#include <rpc/server_util.h>
#include <rpc/util.h>
#include <script/descriptor.h>
#include <streams.h>
#include <sync.h>
#include <txdb.h>
#include <txmempool.h>
#include <undo.h>
#include <univalue.h>
#include <util/check.h>
#include <util/fs.h>
#include <util/strencodings.h>
#include <util/translation.h>
#include <validation.h>
#include <validationinterface.h>
#include <versionbits.h>
#include <warnings.h>
#include <stdint.h>
#include <condition_variable>
#include <memory>
#include <mutex>
Include dependency graph for blockchain.cpp:

Go to the source code of this file.

Classes

struct  CUpdatedBlock
 
struct  CompareBlocksByHeight
 Comparison function for sorting the getchaintips heads. More...
 
class  CoinsViewScanReserver
 
class  BlockFiltersScanReserver
 

Functions

static CUpdatedBlock latestblock GUARDED_BY (cs_blockchange)
 
double GetDifficulty (const CBlockIndex &blockindex)
 Get the difficulty of the net wrt to the given block index. More...
 
static int ComputeNextBlockAndDepth (const CBlockIndex &tip, const CBlockIndex &blockindex, const CBlockIndex *&next)
 
static const CBlockIndexParseHashOrHeight (const UniValue &param, ChainstateManager &chainman)
 
UniValue blockheaderToJSON (const CBlockIndex &tip, const CBlockIndex &blockindex)
 Block header to JSON. More...
 
UniValue blockToJSON (BlockManager &blockman, const CBlock &block, const CBlockIndex &tip, const CBlockIndex &blockindex, TxVerbosity verbosity)
 Block description to JSON. More...
 
static RPCHelpMan getblockcount ()
 
static RPCHelpMan getbestblockhash ()
 
void RPCNotifyBlockChange (const CBlockIndex *pindex)
 Callback for when block tip changed. More...
 
static RPCHelpMan waitfornewblock ()
 
static RPCHelpMan waitforblock ()
 
static RPCHelpMan waitforblockheight ()
 
static RPCHelpMan syncwithvalidationinterfacequeue ()
 
static RPCHelpMan getdifficulty ()
 
static RPCHelpMan getblockfrompeer ()
 
static RPCHelpMan getblockhash ()
 
static RPCHelpMan getblockheader ()
 
static CBlock GetBlockChecked (BlockManager &blockman, const CBlockIndex &blockindex)
 
static std::vector< uint8_t > GetRawBlockChecked (BlockManager &blockman, const CBlockIndex &blockindex)
 
static CBlockUndo GetUndoChecked (BlockManager &blockman, const CBlockIndex &blockindex)
 
static RPCHelpMan getblock ()
 
static RPCHelpMan pruneblockchain ()
 
CoinStatsHashType ParseHashType (const std::string &hash_type_input)
 
static std::optional< kernel::CCoinsStatsGetUTXOStats (CCoinsView *view, node::BlockManager &blockman, kernel::CoinStatsHashType hash_type, const std::function< void()> &interruption_point={}, const CBlockIndex *pindex=nullptr, bool index_requested=true)
 Calculate statistics about the unspent transaction output set. More...
 
static RPCHelpMan gettxoutsetinfo ()
 
static RPCHelpMan gettxout ()
 
static RPCHelpMan verifychain ()
 
static void SoftForkDescPushBack (const CBlockIndex *blockindex, UniValue &softforks, const ChainstateManager &chainman, Consensus::BuriedDeployment dep)
 
static void SoftForkDescPushBack (const CBlockIndex *blockindex, UniValue &softforks, const ChainstateManager &chainman, Consensus::DeploymentPos id)
 
RPCHelpMan getblockchaininfo ()
 
RPCHelpMan getdeploymentinfo ()
 
static RPCHelpMan getchaintips ()
 
static RPCHelpMan preciousblock ()
 
static RPCHelpMan invalidateblock ()
 
static RPCHelpMan reconsiderblock ()
 
static RPCHelpMan getchaintxstats ()
 
template<typename T >
static T CalculateTruncatedMedian (std::vector< T > &scores)
 
void CalculatePercentilesByWeight (CAmount result[NUM_GETBLOCKSTATS_PERCENTILES], std::vector< std::pair< CAmount, int64_t >> &scores, int64_t total_weight)
 Used by getblockstats to get feerates at different percentiles by weight
More...
 
template<typename T >
static bool SetHasKeys (const std::set< T > &set)
 
template<typename T , typename Tk , typename... Args>
static bool SetHasKeys (const std::set< T > &set, const Tk &key, const Args &... args)
 
static RPCHelpMan getblockstats ()
 
static RPCHelpMan scantxoutset ()
 
static bool CheckBlockFilterMatches (BlockManager &blockman, const CBlockIndex &blockindex, const GCSFilter::ElementSet &needles)
 
static RPCHelpMan scanblocks ()
 
static RPCHelpMan getblockfilter ()
 
static RPCHelpMan dumptxoutset ()
 Serialize the UTXO set to a file for loading elsewhere. More...
 
UniValue CreateUTXOSnapshot (NodeContext &node, Chainstate &chainstate, AutoFile &afile, const fs::path &path, const fs::path &temppath)
 Helper to create UTXO snapshots given a chainstate and a file handle. More...
 
static RPCHelpMan loadtxoutset ()
 
static RPCHelpMan getchainstates ()
 
void RegisterBlockchainRPCCommands (CRPCTable &t)
 

Variables

static GlobalMutex cs_blockchange
 
static std::condition_variable cond_blockchange
 
const RPCResult getblock_vin
 
static constexpr size_t PER_UTXO_OVERHEAD = sizeof(COutPoint) + sizeof(uint32_t) + sizeof(bool)
 
static std::atomic< int > g_scan_progress
 RAII object to prevent concurrency issue when scanning the txout set. More...
 
static std::atomic< bool > g_scan_in_progress
 
static std::atomic< bool > g_should_abort_scan
 
static const auto scan_action_arg_desc
 
static const auto scan_objects_arg_desc
 
static const auto scan_result_abort
 
static const auto scan_result_status_none
 
static const auto scan_result_status_some
 
static std::atomic< int > g_scanfilter_progress
 RAII object to prevent concurrency issue when scanning blockfilters. More...
 
static std::atomic< int > g_scanfilter_progress_height
 
static std::atomic< bool > g_scanfilter_in_progress
 
static std::atomic< bool > g_scanfilter_should_abort_scan
 
const std::vector< RPCResultRPCHelpForChainstate
 

Function Documentation

◆ blockheaderToJSON()

UniValue blockheaderToJSON ( const CBlockIndex tip,
const CBlockIndex blockindex 
)

Block header to JSON.

Definition at line 135 of file blockchain.cpp.

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

◆ blockToJSON()

UniValue blockToJSON ( BlockManager blockman,
const CBlock block,
const CBlockIndex tip,
const CBlockIndex blockindex,
TxVerbosity  verbosity 
)

Block description to JSON.

Definition at line 164 of file blockchain.cpp.

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

◆ CalculatePercentilesByWeight()

void CalculatePercentilesByWeight ( CAmount  result[NUM_GETBLOCKSTATS_PERCENTILES],
std::vector< std::pair< CAmount, int64_t >> &  scores,
int64_t  total_weight 
)

Used by getblockstats to get feerates at different percentiles by weight

Definition at line 1720 of file blockchain.cpp.

Here is the caller graph for this function:

◆ CalculateTruncatedMedian()

template<typename T >
static T CalculateTruncatedMedian ( std::vector< T > &  scores)
static

Definition at line 1705 of file blockchain.cpp.

Here is the caller graph for this function:

◆ CheckBlockFilterMatches()

static bool CheckBlockFilterMatches ( BlockManager blockman,
const CBlockIndex blockindex,
const GCSFilter::ElementSet needles 
)
static

Definition at line 2298 of file blockchain.cpp.

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

◆ ComputeNextBlockAndDepth()

static int ComputeNextBlockAndDepth ( const CBlockIndex tip,
const CBlockIndex blockindex,
const CBlockIndex *&  next 
)
static

Definition at line 97 of file blockchain.cpp.

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

◆ CreateUTXOSnapshot()

UniValue CreateUTXOSnapshot ( node::NodeContext node,
Chainstate chainstate,
AutoFile afile,
const fs::path path,
const fs::path tmppath 
)

Helper to create UTXO snapshots given a chainstate and a file handle.

Returns
a UniValue map containing metadata about the snapshot.

Definition at line 2651 of file blockchain.cpp.

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

◆ dumptxoutset()

static RPCHelpMan dumptxoutset ( )
static

Serialize the UTXO set to a file for loading elsewhere.

See also
SnapshotMetadata

Definition at line 2595 of file blockchain.cpp.

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

◆ getbestblockhash()

static RPCHelpMan getbestblockhash ( )
static

Definition at line 223 of file blockchain.cpp.

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

◆ getblock()

static RPCHelpMan getblock ( )
static

Definition at line 666 of file blockchain.cpp.

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

◆ getblockchaininfo()

RPCHelpMan getblockchaininfo ( )

Definition at line 1240 of file blockchain.cpp.

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

◆ GetBlockChecked()

static CBlock GetBlockChecked ( BlockManager blockman,
const CBlockIndex blockindex 
)
static

Definition at line 579 of file blockchain.cpp.

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

◆ getblockcount()

static RPCHelpMan getblockcount ( )
static

Definition at line 202 of file blockchain.cpp.

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

◆ getblockfilter()

static RPCHelpMan getblockfilter ( )
static

Definition at line 2511 of file blockchain.cpp.

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

◆ getblockfrompeer()

static RPCHelpMan getblockfrompeer ( )
static

Definition at line 426 of file blockchain.cpp.

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

◆ getblockhash()

static RPCHelpMan getblockhash ( )
static

Definition at line 480 of file blockchain.cpp.

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

◆ getblockheader()

static RPCHelpMan getblockheader ( )
static

Definition at line 509 of file blockchain.cpp.

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

◆ getblockstats()

static RPCHelpMan getblockstats ( )
static

Definition at line 1760 of file blockchain.cpp.

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

◆ getchainstates()

static RPCHelpMan getchainstates ( )
static

Definition at line 2815 of file blockchain.cpp.

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

◆ getchaintips()

static RPCHelpMan getchaintips ( )
static

Definition at line 1405 of file blockchain.cpp.

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

◆ getchaintxstats()

static RPCHelpMan getchaintxstats ( )
static

Definition at line 1624 of file blockchain.cpp.

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

◆ getdeploymentinfo()

RPCHelpMan getdeploymentinfo ( )

Definition at line 1347 of file blockchain.cpp.

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

◆ getdifficulty()

static RPCHelpMan getdifficulty ( )
static

Definition at line 406 of file blockchain.cpp.

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

◆ GetDifficulty()

double GetDifficulty ( const CBlockIndex blockindex)

Get the difficulty of the net wrt to the given block index.

Returns
A floating point number that is a multiple of the main net minimum difficulty (4295032833 hashes).

Definition at line 77 of file blockchain.cpp.

Here is the caller graph for this function:

◆ GetRawBlockChecked()

static std::vector<uint8_t> GetRawBlockChecked ( BlockManager blockman,
const CBlockIndex blockindex 
)
static

Definition at line 599 of file blockchain.cpp.

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

◆ gettxout()

static RPCHelpMan gettxout ( )
static

Definition at line 1041 of file blockchain.cpp.

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

◆ gettxoutsetinfo()

static RPCHelpMan gettxoutsetinfo ( )
static

Definition at line 886 of file blockchain.cpp.

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

◆ GetUndoChecked()

static CBlockUndo GetUndoChecked ( BlockManager blockman,
const CBlockIndex blockindex 
)
static

Definition at line 621 of file blockchain.cpp.

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

◆ GetUTXOStats()

static std::optional<kernel::CCoinsStats> GetUTXOStats ( CCoinsView view,
node::BlockManager blockman,
kernel::CoinStatsHashType  hash_type,
const std::function< void()> &  interruption_point = {},
const CBlockIndex pindex = nullptr,
bool  index_requested = true 
)
static

Calculate statistics about the unspent transaction output set.

Parameters
[in]index_requestedSignals if the coinstatsindex should be used (when available).

Definition at line 861 of file blockchain.cpp.

Here is the caller graph for this function:

◆ GUARDED_BY()

static CUpdatedBlock latestblock GUARDED_BY ( cs_blockchange  )
static

◆ invalidateblock()

static RPCHelpMan invalidateblock ( )
static

Definition at line 1543 of file blockchain.cpp.

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

◆ loadtxoutset()

static RPCHelpMan loadtxoutset ( )
static

Definition at line 2723 of file blockchain.cpp.

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

◆ ParseHashOrHeight()

static const CBlockIndex* ParseHashOrHeight ( const UniValue param,
ChainstateManager chainman 
)
static

Definition at line 107 of file blockchain.cpp.

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

◆ ParseHashType()

CoinStatsHashType ParseHashType ( const std::string &  hash_type_input)

Definition at line 843 of file blockchain.cpp.

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

◆ preciousblock()

static RPCHelpMan preciousblock ( )
static

Definition at line 1503 of file blockchain.cpp.

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

◆ pruneblockchain()

static RPCHelpMan pruneblockchain ( )
static

Definition at line 785 of file blockchain.cpp.

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

◆ reconsiderblock()

static RPCHelpMan reconsiderblock ( )
static

Definition at line 1584 of file blockchain.cpp.

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

◆ RegisterBlockchainRPCCommands()

void RegisterBlockchainRPCCommands ( CRPCTable t)

Definition at line 2874 of file blockchain.cpp.

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

◆ RPCNotifyBlockChange()

void RPCNotifyBlockChange ( const CBlockIndex pindex)

Callback for when block tip changed.

Definition at line 243 of file blockchain.cpp.

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

◆ scanblocks()

static RPCHelpMan scanblocks ( )
static

Definition at line 2323 of file blockchain.cpp.

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

◆ scantxoutset()

static RPCHelpMan scantxoutset ( )
static

Definition at line 2115 of file blockchain.cpp.

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

◆ SetHasKeys() [1/2]

template<typename T >
static bool SetHasKeys ( const std::set< T > &  set)
inlinestatic

Definition at line 1750 of file blockchain.cpp.

Here is the caller graph for this function:

◆ SetHasKeys() [2/2]

template<typename T , typename Tk , typename... Args>
static bool SetHasKeys ( const std::set< T > &  set,
const Tk &  key,
const Args &...  args 
)
inlinestatic

Definition at line 1752 of file blockchain.cpp.

Here is the call graph for this function:

◆ SoftForkDescPushBack() [1/2]

static void SoftForkDescPushBack ( const CBlockIndex blockindex,
UniValue softforks,
const ChainstateManager chainman,
Consensus::BuriedDeployment  dep 
)
static

Definition at line 1153 of file blockchain.cpp.

Here is the call graph for this function:

◆ SoftForkDescPushBack() [2/2]

static void SoftForkDescPushBack ( const CBlockIndex blockindex,
UniValue softforks,
const ChainstateManager chainman,
Consensus::DeploymentPos  id 
)
static

Definition at line 1168 of file blockchain.cpp.

Here is the call graph for this function:

◆ syncwithvalidationinterfacequeue()

static RPCHelpMan syncwithvalidationinterfacequeue ( )
static

Definition at line 387 of file blockchain.cpp.

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

◆ verifychain()

static RPCHelpMan verifychain ( )
static

Definition at line 1123 of file blockchain.cpp.

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

◆ waitforblock()

static RPCHelpMan waitforblock ( )
static

Definition at line 295 of file blockchain.cpp.

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

◆ waitforblockheight()

static RPCHelpMan waitforblockheight ( )
static

Definition at line 341 of file blockchain.cpp.

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

◆ waitfornewblock()

static RPCHelpMan waitfornewblock ( )
static

Definition at line 253 of file blockchain.cpp.

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

Variable Documentation

◆ cond_blockchange

std::condition_variable cond_blockchange
static

Definition at line 72 of file blockchain.cpp.

◆ cs_blockchange

GlobalMutex cs_blockchange
static

Definition at line 71 of file blockchain.cpp.

◆ g_scan_in_progress

std::atomic<bool> g_scan_in_progress
static

Definition at line 2054 of file blockchain.cpp.

◆ g_scan_progress

std::atomic<int> g_scan_progress
static

RAII object to prevent concurrency issue when scanning the txout set.

Definition at line 2053 of file blockchain.cpp.

◆ g_scanfilter_in_progress

std::atomic<bool> g_scanfilter_in_progress
static

Definition at line 2273 of file blockchain.cpp.

◆ g_scanfilter_progress

std::atomic<int> g_scanfilter_progress
static

RAII object to prevent concurrency issue when scanning blockfilters.

Definition at line 2271 of file blockchain.cpp.

◆ g_scanfilter_progress_height

std::atomic<int> g_scanfilter_progress_height
static

Definition at line 2272 of file blockchain.cpp.

◆ g_scanfilter_should_abort_scan

std::atomic<bool> g_scanfilter_should_abort_scan
static

Definition at line 2274 of file blockchain.cpp.

◆ g_should_abort_scan

std::atomic<bool> g_should_abort_scan
static

Definition at line 2055 of file blockchain.cpp.

◆ getblock_vin

const RPCResult getblock_vin
Initial value:
{
{
{
{RPCResult::Type::ELISION, "", "The same output as verbosity = 2"},
{RPCResult::Type::OBJ, "prevout", "(Only if undo information is available)",
{
{RPCResult::Type::BOOL, "generated", "Coinbase or not"},
{RPCResult::Type::NUM, "height", "The height of the prevout"},
{RPCResult::Type::STR_AMOUNT, "value", "The value in " + CURRENCY_UNIT},
{RPCResult::Type::OBJ, "scriptPubKey", "",
{
{RPCResult::Type::STR, "asm", "Disassembly of the public key script"},
{RPCResult::Type::STR, "desc", "Inferred descriptor for the output"},
{RPCResult::Type::STR_HEX, "hex", "The raw public key script bytes, hex-encoded"},
{RPCResult::Type::STR, "address", true, "The Bitcoin address (only if a well-defined address exists)"},
{RPCResult::Type::STR, "type", "The type (one of: " + GetAllOutputTypes() + ")"},
}},
}},
}},
}
}
const std::string CURRENCY_UNIT
Definition: feerate.h:17
std::string GetAllOutputTypes()
Gets all existing output types formatted for RPC help sections.
Definition: util.cpp:33
@ ELISION
Special type to denote elision (...)
@ STR_HEX
Special string with only hex chars.
@ STR_AMOUNT
Special string to represent a floating point amount.

Definition at line 642 of file blockchain.cpp.

◆ PER_UTXO_OVERHEAD

constexpr size_t PER_UTXO_OVERHEAD = sizeof(COutPoint) + sizeof(uint32_t) + sizeof(bool)
staticconstexpr

Definition at line 1758 of file blockchain.cpp.

◆ RPCHelpForChainstate

const std::vector<RPCResult> RPCHelpForChainstate
Initial value:
{
{RPCResult::Type::NUM, "blocks", "number of blocks in this chainstate"},
{RPCResult::Type::STR_HEX, "bestblockhash", "blockhash of the tip"},
{RPCResult::Type::NUM, "difficulty", "difficulty of the tip"},
{RPCResult::Type::NUM, "verificationprogress", "progress towards the network tip"},
{RPCResult::Type::STR_HEX, "snapshot_blockhash", true, "the base block of the snapshot this chainstate is based on, if any"},
{RPCResult::Type::NUM, "coins_db_cache_bytes", "size of the coinsdb cache"},
{RPCResult::Type::NUM, "coins_tip_cache_bytes", "size of the coinstip cache"},
{RPCResult::Type::BOOL, "validated", "whether the chainstate is fully validated. True if all blocks in the chainstate were validated, false if the chain is based on a snapshot and the snapshot has not yet been validated."},
}

Definition at line 2804 of file blockchain.cpp.

◆ scan_action_arg_desc

const auto scan_action_arg_desc
static
Initial value:
"action", RPCArg::Type::STR, RPCArg::Optional::NO, "The action to execute\n"
"\"start\" for starting a scan\n"
"\"abort\" for aborting the current scan (returns true when abort was successful)\n"
"\"status\" for progress report (in %) of the current scan"
}
Definition: util.h:166
@ NO
Required arg.

Definition at line 2081 of file blockchain.cpp.

◆ scan_objects_arg_desc

const auto scan_objects_arg_desc
static
Initial value:
"scanobjects", RPCArg::Type::ARR, RPCArg::Optional::OMITTED, "Array of scan objects. Required for \"start\" action\n"
"Every scan object is either a string descriptor or an object:",
{
{"descriptor", RPCArg::Type::STR, RPCArg::Optional::OMITTED, "An output descriptor"},
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "An object with output descriptor and metadata",
{
{"desc", RPCArg::Type::STR, RPCArg::Optional::NO, "An output descriptor"},
{"range", RPCArg::Type::RANGE, RPCArg::Default{1000}, "The range of HD chain indexes to explore (either end or [begin,end])"},
}},
},
RPCArgOptions{.oneline_description="[scanobjects,...]"},
}
@ RANGE
Special type that is a NUM or [NUM,NUM].
@ OMITTED
Optional argument for which the default value is omitted from help text for one of two reasons:
std::string oneline_description
Should be empty unless it is supposed to override the auto-generated summary line.
Definition: util.h:151

Definition at line 2088 of file blockchain.cpp.

◆ scan_result_abort

const auto scan_result_abort
static
Initial value:
"when action=='abort'", RPCResult::Type::BOOL, "success",
"True if scan will be aborted (not necessarily before this RPC returns), or false if there is no scan to abort"
}

Definition at line 2102 of file blockchain.cpp.

◆ scan_result_status_none

const auto scan_result_status_none
static
Initial value:
"when action=='status' and no scan is in progress - possibly already completed", RPCResult::Type::NONE, "", ""
}

Definition at line 2106 of file blockchain.cpp.

◆ scan_result_status_some

const auto scan_result_status_some
static
Initial value:
"when action=='status' and a scan is currently in progress", RPCResult::Type::OBJ, "", "",
{{RPCResult::Type::NUM, "progress", "Approximate percent complete"},}
}

Definition at line 2109 of file blockchain.cpp.