Bitcoin ABC 0.26.3
P2P Digital Currency
Loading...
Searching...
No Matches
Macros | Functions | Variables
init.cpp File Reference
#include <init.h>
#include <kernel/mempool_persist.h>
#include <kernel/validation_cache_sizes.h>
#include <addrman.h>
#include <avalanche/avalanche.h>
#include <avalanche/processor.h>
#include <avalanche/proof.h>
#include <avalanche/validation.h>
#include <avalanche/voterecord.h>
#include <banman.h>
#include <blockfilter.h>
#include <chain.h>
#include <chainparams.h>
#include <common/args.h>
#include <compat/sanity.h>
#include <config.h>
#include <consensus/amount.h>
#include <currencyunit.h>
#include <flatfile.h>
#include <hash.h>
#include <httprpc.h>
#include <httpserver.h>
#include <index/blockfilterindex.h>
#include <index/coinstatsindex.h>
#include <index/txindex.h>
#include <init/common.h>
#include <interfaces/chain.h>
#include <interfaces/node.h>
#include <mapport.h>
#include <mempool_args.h>
#include <net.h>
#include <net_permissions.h>
#include <net_processing.h>
#include <netbase.h>
#include <node/blockmanager_args.h>
#include <node/blockstorage.h>
#include <node/caches.h>
#include <node/chainstate.h>
#include <node/chainstatemanager_args.h>
#include <node/context.h>
#include <node/kernel_notifications.h>
#include <node/mempool_persist_args.h>
#include <node/miner.h>
#include <node/peerman_args.h>
#include <node/ui_interface.h>
#include <node/validation_cache_args.h>
#include <policy/block/rtt.h>
#include <policy/policy.h>
#include <policy/settings.h>
#include <rpc/blockchain.h>
#include <rpc/register.h>
#include <rpc/server.h>
#include <rpc/util.h>
#include <scheduler.h>
#include <script/scriptcache.h>
#include <script/sigcache.h>
#include <script/standard.h>
#include <shutdown.h>
#include <sync.h>
#include <timedata.h>
#include <torcontrol.h>
#include <txdb.h>
#include <txmempool.h>
#include <util/asmap.h>
#include <util/check.h>
#include <util/fs.h>
#include <util/fs_helpers.h>
#include <util/moneystr.h>
#include <util/string.h>
#include <util/syserror.h>
#include <util/thread.h>
#include <util/threadnames.h>
#include <util/translation.h>
#include <validation.h>
#include <validationinterface.h>
#include <walletinitinterface.h>
#include <boost/signals2/signal.hpp>
#include <cerrno>
#include <csignal>
#include <sys/stat.h>
#include <algorithm>
#include <condition_variable>
#include <cstdint>
#include <cstdio>
#include <fstream>
#include <functional>
#include <set>
#include <string>
#include <thread>
#include <vector>

Go to the source code of this file.

Macros

#define MIN_CORE_FILEDESCRIPTORS   150
 

Functions

static fs::path GetPidFile (const ArgsManager &args)
 
static bool CreatePidFile (const ArgsManager &args)
 
void Interrupt (NodeContext &node)
 Interrupt threads.
 
void Shutdown (NodeContext &node)
 
static void HandleSIGTERM (int)
 Signal handlers are very limited in what they are allowed to do.
 
static void HandleSIGHUP (int)
 
static void registerSignalHandler (int signal, void(*handler)(int))
 
static void OnRPCStarted ()
 
static void OnRPCStopped ()
 
void SetupServerArgs (NodeContext &node)
 Register all arguments with the ArgsManager.
 
static void BlockNotifyGenesisWait (const CBlockIndex *pBlockIndex)
 
static bool AppInitServers (Config &config, HTTPRPCRequestProcessor &httpRPCRequestProcessor, NodeContext &node)
 
void InitParameterInteraction (ArgsManager &args)
 Parameter interaction: change current parameters depending on various rules.
 
void InitLogging (const ArgsManager &args)
 Initialize global loggers.
 
static void new_handler_terminate ()
 
bool AppInitBasicSetup (const ArgsManager &args)
 Initialize bitcoin: Basic context setup.
 
bool AppInitParameterInteraction (Config &config, const ArgsManager &args)
 Initialization: parameter interaction.
 
static bool LockDataDirectory (bool probeOnly)
 
bool AppInitSanityChecks ()
 Initialization sanity checks: ecc init, sanity checks, dir lock.
 
bool AppInitLockDataDirectory ()
 Lock bitcoin data directory.
 
bool AppInitInterfaces (NodeContext &node)
 Initialize node and wallet interface pointers.
 
bool AppInitMain (Config &config, RPCServer &rpcServer, HTTPRPCRequestProcessor &httpRPCRequestProcessor, NodeContext &node, interfaces::BlockAndHeaderTipInfo *tip_info)
 Bitcoin main initialization.
 

Variables

static const bool DEFAULT_PROXYRANDOMIZE = true
 
static const bool DEFAULT_REST_ENABLE = false
 
static constexpr bool DEFAULT_CHRONIK = false
 
static const charDEFAULT_ASMAP_FILENAME = "ip_asn.map"
 
static const std::string HEADERS_TIME_FILE_NAME {"headerstime.dat"}
 
static const charBITCOIN_PID_FILENAME = "bitcoind.pid"
 The PID file facilities.
 
static boost::signals2::connection rpc_notify_block_change_connection
 
static bool fHaveGenesis = false
 
static GlobalMutex g_genesis_wait_mutex
 
static std::condition_variable g_genesis_wait_cv
 

Macro Definition Documentation

◆ MIN_CORE_FILEDESCRIPTORS

#define MIN_CORE_FILEDESCRIPTORS   150

Definition at line 144 of file init.cpp.

Function Documentation

◆ AppInitBasicSetup()

bool AppInitBasicSetup ( const ArgsManager args)

Initialize bitcoin: Basic context setup.

Note
This can be done before daemonization. Do not call Shutdown() if this function fails.
Precondition
Parameters should be parsed and config file should be read.

Definition at line 1713 of file init.cpp.

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

◆ AppInitInterfaces()

bool AppInitInterfaces ( node::NodeContext node)

Initialize node and wallet interface pointers.

Has no prerequisites or side effects besides allocating memory.

Definition at line 2099 of file init.cpp.

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

◆ AppInitLockDataDirectory()

bool AppInitLockDataDirectory ( )

Lock bitcoin data directory.

Note
This should only be done after daemonization. Do not call Shutdown() if this function fails.
Precondition
Parameters should be parsed and config file should be read, AppInitSanityChecks should have been called.

Definition at line 2087 of file init.cpp.

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

◆ AppInitMain()

bool AppInitMain ( Config config,
RPCServer rpcServer,
HTTPRPCRequestProcessor httpRPCRequestProcessor,
node::NodeContext node,
interfaces::BlockAndHeaderTipInfo tip_info = nullptr 
)

Bitcoin main initialization.

Note
This should only be done after daemonization.
Precondition
Parameters should be parsed and config file should be read, AppInitLockDataDirectory should have been called.

Register RPC commands regardless of -server setting so they will be available in the GUI RPC console even if external calls are disabled.

Start the RPC server. It will be started in "warmup" mode and not process calls yet (but it will verify that the server is there and will be ready later). Warmup mode will be completed when initialisation is finished.

Definition at line 2109 of file init.cpp.

Here is the caller graph for this function:

◆ AppInitParameterInteraction()

bool AppInitParameterInteraction ( Config config,
const ArgsManager args 
)

Initialization: parameter interaction.

Note
This can be done before daemonization. Do not call Shutdown() if this function fails.
Precondition
Parameters should be parsed and config file should be read, AppInitBasicSetup should have been called.

Definition at line 1760 of file init.cpp.

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

◆ AppInitSanityChecks()

bool AppInitSanityChecks ( )

Initialization sanity checks: ecc init, sanity checks, dir lock.

Note
This can be done before daemonization. Do not call Shutdown() if this function fails.
Precondition
Parameters should be parsed and config file should be read, AppInitParameterInteraction should have been called.

Definition at line 2069 of file init.cpp.

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

◆ AppInitServers()

static bool AppInitServers ( Config config,
HTTPRPCRequestProcessor httpRPCRequestProcessor,
NodeContext node 
)
static

Definition at line 1527 of file init.cpp.

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

◆ BlockNotifyGenesisWait()

static void BlockNotifyGenesisWait ( const CBlockIndex pBlockIndex)
static

Definition at line 1506 of file init.cpp.

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

◆ CreatePidFile()

static bool CreatePidFile ( const ArgsManager args)
static

Definition at line 161 of file init.cpp.

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

◆ GetPidFile()

static fs::path GetPidFile ( const ArgsManager args)
static

Definition at line 156 of file init.cpp.

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

◆ HandleSIGHUP()

static void HandleSIGHUP ( int  )
static

Definition at line 391 of file init.cpp.

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

◆ HandleSIGTERM()

static void HandleSIGTERM ( int  )
static

Signal handlers are very limited in what they are allowed to do.

The execution context the handler is invoked in is not guaranteed, so we restrict handler operations to just touching variables:

Definition at line 387 of file init.cpp.

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

◆ InitLogging()

void InitLogging ( const ArgsManager args)

Initialize global loggers.

Initialize the logging infrastructure.

Note that this is called very early in the process lifetime, so you should be careful about what global state you rely on here.

Definition at line 1686 of file init.cpp.

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

◆ InitParameterInteraction()

void InitParameterInteraction ( ArgsManager args)

Parameter interaction: change current parameters depending on various rules.

Definition at line 1552 of file init.cpp.

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

◆ Interrupt()

void Interrupt ( NodeContext node)

Interrupt threads.

Definition at line 201 of file init.cpp.

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

◆ LockDataDirectory()

static bool LockDataDirectory ( bool  probeOnly)
static

Definition at line 2053 of file init.cpp.

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

◆ new_handler_terminate()

static void new_handler_terminate ( )
static

Definition at line 1702 of file init.cpp.

Here is the caller graph for this function:

◆ OnRPCStarted()

static void OnRPCStarted ( )
static

Definition at line 413 of file init.cpp.

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

◆ OnRPCStopped()

static void OnRPCStopped ( )
static

Definition at line 418 of file init.cpp.

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

◆ registerSignalHandler()

static void registerSignalHandler ( int  signal,
void(*)(int handler 
)
static

Definition at line 403 of file init.cpp.

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

◆ SetupServerArgs()

void SetupServerArgs ( NodeContext node)

Register all arguments with the ArgsManager.

Definition at line 425 of file init.cpp.

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

◆ Shutdown()

void Shutdown ( NodeContext node)

Note: Shutdown() must be able to handle cases in which initialization failed part of the way, for example if the data directory was found to be locked. Be sure that anything that writes files or flushes caches only does this if the respective module was initialized.

Definition at line 225 of file init.cpp.

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

Variable Documentation

◆ BITCOIN_PID_FILENAME

const char* BITCOIN_PID_FILENAME = "bitcoind.pid"
static

The PID file facilities.

Definition at line 154 of file init.cpp.

◆ DEFAULT_ASMAP_FILENAME

const char* DEFAULT_ASMAP_FILENAME = "ip_asn.map"
static

Definition at line 147 of file init.cpp.

◆ DEFAULT_CHRONIK

constexpr bool DEFAULT_CHRONIK = false
staticconstexpr

Definition at line 137 of file init.cpp.

◆ DEFAULT_PROXYRANDOMIZE

const bool DEFAULT_PROXYRANDOMIZE = true
static

Definition at line 135 of file init.cpp.

◆ DEFAULT_REST_ENABLE

const bool DEFAULT_REST_ENABLE = false
static

Definition at line 136 of file init.cpp.

◆ fHaveGenesis

bool fHaveGenesis = false
static

Definition at line 1502 of file init.cpp.

◆ g_genesis_wait_cv

std::condition_variable g_genesis_wait_cv
static

Definition at line 1504 of file init.cpp.

◆ g_genesis_wait_mutex

GlobalMutex g_genesis_wait_mutex
static

Definition at line 1503 of file init.cpp.

◆ HEADERS_TIME_FILE_NAME

const std::string HEADERS_TIME_FILE_NAME {"headerstime.dat"}
static

Definition at line 149 of file init.cpp.

◆ rpc_notify_block_change_connection

boost::signals2::connection rpc_notify_block_change_connection
static

Definition at line 412 of file init.cpp.