Bitcoin Core 28.99.0
P2P Digital Currency
|
#include <rpc/blockchain.h>
#include <blockfilter.h>
#include <chain.h>
#include <chainparams.h>
#include <chainparamsbase.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 <interfaces/mining.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 <node/warnings.h>
#include <primitives/transaction.h>
#include <rpc/server.h>
#include <rpc/server_util.h>
#include <rpc/util.h>
#include <script/descriptor.h>
#include <serialize.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 <stdint.h>
#include <condition_variable>
#include <iterator>
#include <memory>
#include <mutex>
#include <optional>
#include <vector>
Go to the source code of this file.
Classes | |
struct | CompareBlocksByHeight |
Comparison function for sorting the getchaintips heads. More... | |
class | CoinsViewScanReserver |
class | BlockFiltersScanReserver |
class | NetworkDisable |
RAII class that disables the network in its constructor and enables it in its destructor. More... | |
class | TemporaryRollback |
RAII class that temporarily rolls back the local chain in it's constructor and rolls it forward again in it's destructor. More... | |
Functions | |
std::tuple< std::unique_ptr< CCoinsViewCursor >, CCoinsStats, const CBlockIndex * > PrepareUTXOSnapshot(Chainstate &chainstate, const std::function< void()> &interruption_point={}) EXCLUSIVE_LOCKS_REQUIRED(UniValue | WriteUTXOSnapshot (Chainstate &chainstate, CCoinsViewCursor *pcursor, CCoinsStats *maybe_stats, const CBlockIndex *tip, AutoFile &afile, const fs::path &path, const fs::path &temppath, const std::function< void()> &interruption_point={}) |
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 CBlockIndex * | ParseHashOrHeight (const UniValue ¶m, 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 () |
static RPCHelpMan | waitfornewblock () |
static RPCHelpMan | waitforblock () |
static RPCHelpMan | waitforblockheight () |
static RPCHelpMan | syncwithvalidationinterfacequeue () |
static RPCHelpMan | getdifficulty () |
static RPCHelpMan | getblockfrompeer () |
static RPCHelpMan | getblockhash () |
static RPCHelpMan | getblockheader () |
void | CheckBlockDataAvailability (BlockManager &blockman, const CBlockIndex &blockindex, bool check_for_undo) |
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 () |
std::optional< int > | GetPruneHeight (const BlockManager &blockman, const CChain &chain) |
Return height of highest block that has been pruned, or std::nullopt if no blocks have been pruned. More... | |
static RPCHelpMan | pruneblockchain () |
CoinStatsHashType | ParseHashType (const std::string &hash_type_input) |
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) |
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 () |
void | InvalidateBlock (ChainstateManager &chainman, const uint256 block_hash) |
static RPCHelpMan | invalidateblock () |
void | ReconsiderBlock (ChainstateManager &chainman, uint256 block_hash) |
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 | getdescriptoractivity () |
static RPCHelpMan | getblockfilter () |
static RPCHelpMan | dumptxoutset () |
Serialize the UTXO set to a file for loading elsewhere. More... | |
std::tuple< std::unique_ptr< CCoinsViewCursor >, CCoinsStats, const CBlockIndex * > | PrepareUTXOSnapshot (Chainstate &chainstate, const std::function< void()> &interruption_point) |
UniValue | CreateUTXOSnapshot (node::NodeContext &node, Chainstate &chainstate, AutoFile &afile, const fs::path &path, const fs::path &tmppath) |
Test-only helper to create UTXO snapshots given a chainstate and a file handle. More... | |
static RPCHelpMan | loadtxoutset () |
static RPCHelpMan | getchainstates () |
void | RegisterBlockchainRPCCommands (CRPCTable &t) |
Variables | |
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< RPCResult > | RPCHelpForChainstate |
UniValue blockheaderToJSON | ( | const CBlockIndex & | tip, |
const CBlockIndex & | blockindex | ||
) |
Block header to JSON.
Definition at line 149 of file blockchain.cpp.
UniValue blockToJSON | ( | BlockManager & | blockman, |
const CBlock & | block, | ||
const CBlockIndex & | tip, | ||
const CBlockIndex & | blockindex, | ||
TxVerbosity | verbosity | ||
) |
Block description to JSON.
Definition at line 178 of file blockchain.cpp.
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 1794 of file blockchain.cpp.
|
static |
void CheckBlockDataAvailability | ( | BlockManager & | blockman, |
const CBlockIndex & | blockindex, | ||
bool | check_for_undo | ||
) |
Definition at line 604 of file blockchain.cpp.
|
static |
Definition at line 2378 of file blockchain.cpp.
|
static |
Definition at line 111 of file blockchain.cpp.
UniValue CreateUTXOSnapshot | ( | node::NodeContext & | node, |
Chainstate & | chainstate, | ||
AutoFile & | afile, | ||
const fs::path & | path, | ||
const fs::path & | tmppath | ||
) |
Test-only helper to create UTXO snapshots given a chainstate and a file handle.
Definition at line 3203 of file blockchain.cpp.
|
static |
Serialize the UTXO set to a file for loading elsewhere.
Definition at line 2940 of file blockchain.cpp.
|
static |
Definition at line 239 of file blockchain.cpp.
|
static |
Definition at line 698 of file blockchain.cpp.
RPCHelpMan getblockchaininfo | ( | ) |
Definition at line 1287 of file blockchain.cpp.
|
static |
Definition at line 619 of file blockchain.cpp.
|
static |
Definition at line 218 of file blockchain.cpp.
|
static |
Definition at line 2820 of file blockchain.cpp.
|
static |
Definition at line 450 of file blockchain.cpp.
|
static |
Definition at line 505 of file blockchain.cpp.
|
static |
Definition at line 534 of file blockchain.cpp.
|
static |
Definition at line 1834 of file blockchain.cpp.
|
static |
Definition at line 3306 of file blockchain.cpp.
|
static |
Definition at line 1460 of file blockchain.cpp.
|
static |
Definition at line 1688 of file blockchain.cpp.
RPCHelpMan getdeploymentinfo | ( | ) |
Definition at line 1402 of file blockchain.cpp.
|
static |
Definition at line 2591 of file blockchain.cpp.
|
static |
Definition at line 430 of file blockchain.cpp.
double GetDifficulty | ( | const CBlockIndex & | blockindex | ) |
Get the difficulty of the net wrt to the given block index.
Definition at line 91 of file blockchain.cpp.
std::optional< int > GetPruneHeight | ( | const BlockManager & | blockman, |
const CChain & | chain | ||
) |
Return height of highest block that has been pruned, or std::nullopt if no blocks have been pruned.
Definition at line 811 of file blockchain.cpp.
|
static |
Definition at line 636 of file blockchain.cpp.
|
static |
Definition at line 1091 of file blockchain.cpp.
|
static |
Definition at line 936 of file blockchain.cpp.
|
static |
Definition at line 655 of file blockchain.cpp.
|
static |
Calculate statistics about the unspent transaction output set.
[in] | index_requested | Signals if the coinstatsindex should be used (when available). |
Definition at line 911 of file blockchain.cpp.
|
static |
Definition at line 1619 of file blockchain.cpp.
void InvalidateBlock | ( | ChainstateManager & | chainman, |
const uint256 | block_hash | ||
) |
Definition at line 1598 of file blockchain.cpp.
|
static |
Definition at line 3214 of file blockchain.cpp.
|
static |
Definition at line 121 of file blockchain.cpp.
CoinStatsHashType ParseHashType | ( | const std::string & | hash_type_input | ) |
Definition at line 893 of file blockchain.cpp.
|
static |
Definition at line 1558 of file blockchain.cpp.
std::tuple< std::unique_ptr< CCoinsViewCursor >, CCoinsStats, const CBlockIndex * > PrepareUTXOSnapshot | ( | Chainstate & | chainstate, |
const std::function< void()> & | interruption_point | ||
) |
Definition at line 3090 of file blockchain.cpp.
|
static |
Definition at line 836 of file blockchain.cpp.
|
static |
Definition at line 1663 of file blockchain.cpp.
void ReconsiderBlock | ( | ChainstateManager & | chainman, |
uint256 | block_hash | ||
) |
Definition at line 1643 of file blockchain.cpp.
void RegisterBlockchainRPCCommands | ( | CRPCTable & | t | ) |
Definition at line 3365 of file blockchain.cpp.
|
static |
Definition at line 2403 of file blockchain.cpp.
|
static |
Definition at line 2189 of file blockchain.cpp.
|
inlinestatic |
|
inlinestatic |
|
static |
|
static |
|
static |
Definition at line 411 of file blockchain.cpp.
|
static |
Definition at line 1170 of file blockchain.cpp.
|
static |
Definition at line 301 of file blockchain.cpp.
|
static |
Definition at line 355 of file blockchain.cpp.
|
static |
Definition at line 259 of file blockchain.cpp.
UniValue WriteUTXOSnapshot | ( | Chainstate & | chainstate, |
CCoinsViewCursor * | pcursor, | ||
CCoinsStats * | maybe_stats, | ||
const CBlockIndex * | tip, | ||
AutoFile & | afile, | ||
const fs::path & | path, | ||
const fs::path & | temppath, | ||
const std::function< void()> & | interruption_point = {} |
||
) |
Definition at line 3127 of file blockchain.cpp.
|
static |
Definition at line 2128 of file blockchain.cpp.
|
static |
RAII object to prevent concurrency issue when scanning the txout set.
Definition at line 2127 of file blockchain.cpp.
|
static |
Definition at line 2353 of file blockchain.cpp.
|
static |
RAII object to prevent concurrency issue when scanning blockfilters.
Definition at line 2351 of file blockchain.cpp.
|
static |
Definition at line 2352 of file blockchain.cpp.
|
static |
Definition at line 2354 of file blockchain.cpp.
|
static |
Definition at line 2129 of file blockchain.cpp.
const RPCResult getblock_vin |
Definition at line 674 of file blockchain.cpp.
|
staticconstexpr |
Definition at line 1832 of file blockchain.cpp.
const std::vector<RPCResult> RPCHelpForChainstate |
Definition at line 3295 of file blockchain.cpp.
|
static |
Definition at line 2155 of file blockchain.cpp.
|
static |
Definition at line 2162 of file blockchain.cpp.
|
static |
Definition at line 2176 of file blockchain.cpp.
|
static |
Definition at line 2180 of file blockchain.cpp.
|
static |
Definition at line 2183 of file blockchain.cpp.