Bitcoin Core  27.99.0
P2P Digital Currency
Public Types | Public Member Functions | List of all members
interfaces::Node Class Referenceabstract

Top-level interface for a bitcoin node (bitcoind process). More...

#include <node.h>

Public Types

using NodesStats = std::vector< std::tuple< CNodeStats, bool, CNodeStateStats > >
 Get stats for connected nodes. More...
 
using InitMessageFn = std::function< void(const std::string &message)>
 Register handler for init messages. More...
 
using MessageBoxFn = std::function< bool(const bilingual_str &message, const std::string &caption, unsigned int style)>
 Register handler for message box messages. More...
 
using QuestionFn = std::function< bool(const bilingual_str &message, const std::string &non_interactive_message, const std::string &caption, unsigned int style)>
 Register handler for question messages. More...
 
using ShowProgressFn = std::function< void(const std::string &title, int progress, bool resume_possible)>
 Register handler for progress messages. More...
 
using InitWalletFn = std::function< void()>
 Register handler for wallet loader constructed messages. More...
 
using NotifyNumConnectionsChangedFn = std::function< void(int new_num_connections)>
 Register handler for number of connections changed messages. More...
 
using NotifyNetworkActiveChangedFn = std::function< void(bool network_active)>
 Register handler for network active messages. More...
 
using NotifyAlertChangedFn = std::function< void()>
 Register handler for notify alert messages. More...
 
using BannedListChangedFn = std::function< void()>
 Register handler for ban list messages. More...
 
using NotifyBlockTipFn = std::function< void(SynchronizationState, interfaces::BlockTip tip, double verification_progress)>
 Register handler for block tip messages. More...
 
using NotifyHeaderTipFn = std::function< void(SynchronizationState, interfaces::BlockTip tip, bool presync)>
 Register handler for header tip messages. More...
 

Public Member Functions

virtual ~Node ()
 
virtual void initLogging ()=0
 Init logging. More...
 
virtual void initParameterInteraction ()=0
 Init parameter interaction. More...
 
virtual bilingual_str getWarnings ()=0
 Get warnings. More...
 
virtual int getExitStatus ()=0
 Get exit status. More...
 
virtual uint32_t getLogCategories ()=0
 
virtual bool baseInitialize ()=0
 Initialize app dependencies. More...
 
virtual bool appInitMain (interfaces::BlockAndHeaderTipInfo *tip_info=nullptr)=0
 Start node. More...
 
virtual void appShutdown ()=0
 Stop node. More...
 
virtual void startShutdown ()=0
 Start shutdown. More...
 
virtual bool shutdownRequested ()=0
 Return whether shutdown was requested. More...
 
virtual bool isSettingIgnored (const std::string &name)=0
 Return whether a particular setting in <datadir>/settings.json is or would be ignored because it is also specified in the command line. More...
 
virtual common::SettingsValue getPersistentSetting (const std::string &name)=0
 Return setting value from <datadir>/settings.json or bitcoin.conf. More...
 
virtual void updateRwSetting (const std::string &name, const common::SettingsValue &value)=0
 Update a setting in <datadir>/settings.json. More...
 
virtual void forceSetting (const std::string &name, const common::SettingsValue &value)=0
 Force a setting value to be applied, overriding any other configuration source, but not being persisted. More...
 
virtual void resetSettings ()=0
 Clear all settings in <datadir>/settings.json and store a backup of previous settings in <datadir>/settings.json.bak. More...
 
virtual void mapPort (bool use_upnp, bool use_natpmp)=0
 Map port. More...
 
virtual bool getProxy (Network net, Proxy &proxy_info)=0
 Get proxy. More...
 
virtual size_t getNodeCount (ConnectionDirection flags)=0
 Get number of connections. More...
 
virtual bool getNodesStats (NodesStats &stats)=0
 
virtual bool getBanned (banmap_t &banmap)=0
 Get ban map entries. More...
 
virtual bool ban (const CNetAddr &net_addr, int64_t ban_time_offset)=0
 Ban node. More...
 
virtual bool unban (const CSubNet &ip)=0
 Unban node. More...
 
virtual bool disconnectByAddress (const CNetAddr &net_addr)=0
 Disconnect node by address. More...
 
virtual bool disconnectById (NodeId id)=0
 Disconnect node by id. More...
 
virtual std::vector< std::unique_ptr< ExternalSigner > > listExternalSigners ()=0
 Return list of external signers (attached devices which can sign transactions). More...
 
virtual int64_t getTotalBytesRecv ()=0
 Get total bytes recv. More...
 
virtual int64_t getTotalBytesSent ()=0
 Get total bytes sent. More...
 
virtual size_t getMempoolSize ()=0
 Get mempool size. More...
 
virtual size_t getMempoolDynamicUsage ()=0
 Get mempool dynamic usage. More...
 
virtual bool getHeaderTip (int &height, int64_t &block_time)=0
 Get header tip height and time. More...
 
virtual int getNumBlocks ()=0
 Get num blocks. More...
 
virtual uint256 getBestBlockHash ()=0
 Get best block hash. More...
 
virtual int64_t getLastBlockTime ()=0
 Get last block time. More...
 
virtual double getVerificationProgress ()=0
 Get verification progress. More...
 
virtual bool isInitialBlockDownload ()=0
 Is initial block download. More...
 
virtual bool isLoadingBlocks ()=0
 Is loading blocks. More...
 
virtual void setNetworkActive (bool active)=0
 Set network active. More...
 
virtual bool getNetworkActive ()=0
 Get network active. More...
 
virtual CFeeRate getDustRelayFee ()=0
 Get dust relay fee. More...
 
virtual UniValue executeRpc (const std::string &command, const UniValue &params, const std::string &uri)=0
 Execute rpc command. More...
 
virtual std::vector< std::string > listRpcCommands ()=0
 List rpc commands. More...
 
virtual void rpcSetTimerInterfaceIfUnset (RPCTimerInterface *iface)=0
 Set RPC timer interface if unset. More...
 
virtual void rpcUnsetTimerInterface (RPCTimerInterface *iface)=0
 Unset RPC timer interface. More...
 
virtual std::optional< CoingetUnspentOutput (const COutPoint &output)=0
 Get unspent output associated with a transaction. More...
 
virtual TransactionError broadcastTransaction (CTransactionRef tx, CAmount max_tx_fee, std::string &err_string)=0
 Broadcast transaction. More...
 
virtual WalletLoaderwalletLoader ()=0
 Get wallet loader. More...
 
virtual std::unique_ptr< HandlerhandleInitMessage (InitMessageFn fn)=0
 
virtual std::unique_ptr< HandlerhandleMessageBox (MessageBoxFn fn)=0
 
virtual std::unique_ptr< HandlerhandleQuestion (QuestionFn fn)=0
 
virtual std::unique_ptr< HandlerhandleShowProgress (ShowProgressFn fn)=0
 
virtual std::unique_ptr< HandlerhandleInitWallet (InitWalletFn fn)=0
 
virtual std::unique_ptr< HandlerhandleNotifyNumConnectionsChanged (NotifyNumConnectionsChangedFn fn)=0
 
virtual std::unique_ptr< HandlerhandleNotifyNetworkActiveChanged (NotifyNetworkActiveChangedFn fn)=0
 
virtual std::unique_ptr< HandlerhandleNotifyAlertChanged (NotifyAlertChangedFn fn)=0
 
virtual std::unique_ptr< HandlerhandleBannedListChanged (BannedListChangedFn fn)=0
 
virtual std::unique_ptr< HandlerhandleNotifyBlockTip (NotifyBlockTipFn fn)=0
 
virtual std::unique_ptr< HandlerhandleNotifyHeaderTip (NotifyHeaderTipFn fn)=0
 
virtual node::NodeContextcontext ()
 Get and set internal node context. More...
 
virtual void setContext (node::NodeContext *context)
 

Detailed Description

Top-level interface for a bitcoin node (bitcoind process).

Definition at line 69 of file node.h.

Member Typedef Documentation

◆ BannedListChangedFn

using interfaces::Node::BannedListChangedFn = std::function<void()>

Register handler for ban list messages.

Definition at line 253 of file node.h.

◆ InitMessageFn

using interfaces::Node::InitMessageFn = std::function<void(const std::string& message)>

Register handler for init messages.

Definition at line 217 of file node.h.

◆ InitWalletFn

using interfaces::Node::InitWalletFn = std::function<void()>

Register handler for wallet loader constructed messages.

Definition at line 237 of file node.h.

◆ MessageBoxFn

using interfaces::Node::MessageBoxFn = std::function<bool(const bilingual_str& message, const std::string& caption, unsigned int style)>

Register handler for message box messages.

Definition at line 221 of file node.h.

◆ NodesStats

using interfaces::Node::NodesStats = std::vector<std::tuple<CNodeStats, bool, CNodeStateStats> >

Get stats for connected nodes.

Definition at line 132 of file node.h.

◆ NotifyAlertChangedFn

using interfaces::Node::NotifyAlertChangedFn = std::function<void()>

Register handler for notify alert messages.

Definition at line 249 of file node.h.

◆ NotifyBlockTipFn

using interfaces::Node::NotifyBlockTipFn = std::function<void(SynchronizationState, interfaces::BlockTip tip, double verification_progress)>

Register handler for block tip messages.

Definition at line 257 of file node.h.

◆ NotifyHeaderTipFn

using interfaces::Node::NotifyHeaderTipFn = std::function<void(SynchronizationState, interfaces::BlockTip tip, bool presync)>

Register handler for header tip messages.

Definition at line 262 of file node.h.

◆ NotifyNetworkActiveChangedFn

using interfaces::Node::NotifyNetworkActiveChangedFn = std::function<void(bool network_active)>

Register handler for network active messages.

Definition at line 245 of file node.h.

◆ NotifyNumConnectionsChangedFn

using interfaces::Node::NotifyNumConnectionsChangedFn = std::function<void(int new_num_connections)>

Register handler for number of connections changed messages.

Definition at line 241 of file node.h.

◆ QuestionFn

using interfaces::Node::QuestionFn = std::function<bool(const bilingual_str& message, const std::string& non_interactive_message, const std::string& caption, unsigned int style)>

Register handler for question messages.

Definition at line 226 of file node.h.

◆ ShowProgressFn

using interfaces::Node::ShowProgressFn = std::function<void(const std::string& title, int progress, bool resume_possible)>

Register handler for progress messages.

Definition at line 233 of file node.h.

Constructor & Destructor Documentation

◆ ~Node()

virtual interfaces::Node::~Node ( )
inlinevirtual

Definition at line 72 of file node.h.

Member Function Documentation

◆ appInitMain()

virtual bool interfaces::Node::appInitMain ( interfaces::BlockAndHeaderTipInfo tip_info = nullptr)
pure virtual

Start node.

Here is the caller graph for this function:

◆ appShutdown()

virtual void interfaces::Node::appShutdown ( )
pure virtual

Stop node.

Here is the caller graph for this function:

◆ ban()

virtual bool interfaces::Node::ban ( const CNetAddr net_addr,
int64_t  ban_time_offset 
)
pure virtual

Ban node.

Here is the caller graph for this function:

◆ baseInitialize()

virtual bool interfaces::Node::baseInitialize ( )
pure virtual

Initialize app dependencies.

Here is the caller graph for this function:

◆ broadcastTransaction()

virtual TransactionError interfaces::Node::broadcastTransaction ( CTransactionRef  tx,
CAmount  max_tx_fee,
std::string &  err_string 
)
pure virtual

Broadcast transaction.

Here is the caller graph for this function:

◆ context()

virtual node::NodeContext* interfaces::Node::context ( )
inlinevirtual

Get and set internal node context.

Useful for testing, but not accessible across processes.

Definition at line 268 of file node.h.

◆ disconnectByAddress()

virtual bool interfaces::Node::disconnectByAddress ( const CNetAddr net_addr)
pure virtual

Disconnect node by address.

Here is the caller graph for this function:

◆ disconnectById()

virtual bool interfaces::Node::disconnectById ( NodeId  id)
pure virtual

Disconnect node by id.

Here is the caller graph for this function:

◆ executeRpc()

virtual UniValue interfaces::Node::executeRpc ( const std::string &  command,
const UniValue params,
const std::string &  uri 
)
pure virtual

Execute rpc command.

◆ forceSetting()

virtual void interfaces::Node::forceSetting ( const std::string &  name,
const common::SettingsValue value 
)
pure virtual

Force a setting value to be applied, overriding any other configuration source, but not being persisted.

Here is the caller graph for this function:

◆ getBanned()

virtual bool interfaces::Node::getBanned ( banmap_t banmap)
pure virtual

Get ban map entries.

◆ getBestBlockHash()

virtual uint256 interfaces::Node::getBestBlockHash ( )
pure virtual

Get best block hash.

Here is the caller graph for this function:

◆ getDustRelayFee()

virtual CFeeRate interfaces::Node::getDustRelayFee ( )
pure virtual

Get dust relay fee.

Here is the caller graph for this function:

◆ getExitStatus()

virtual int interfaces::Node::getExitStatus ( )
pure virtual

Get exit status.

Here is the caller graph for this function:

◆ getHeaderTip()

virtual bool interfaces::Node::getHeaderTip ( int &  height,
int64_t &  block_time 
)
pure virtual

Get header tip height and time.

Here is the caller graph for this function:

◆ getLastBlockTime()

virtual int64_t interfaces::Node::getLastBlockTime ( )
pure virtual

Get last block time.

◆ getLogCategories()

virtual uint32_t interfaces::Node::getLogCategories ( )
pure virtual

◆ getMempoolDynamicUsage()

virtual size_t interfaces::Node::getMempoolDynamicUsage ( )
pure virtual

Get mempool dynamic usage.

Here is the caller graph for this function:

◆ getMempoolSize()

virtual size_t interfaces::Node::getMempoolSize ( )
pure virtual

Get mempool size.

Here is the caller graph for this function:

◆ getNetworkActive()

virtual bool interfaces::Node::getNetworkActive ( )
pure virtual

Get network active.

Here is the caller graph for this function:

◆ getNodeCount()

virtual size_t interfaces::Node::getNodeCount ( ConnectionDirection  flags)
pure virtual

Get number of connections.

Here is the caller graph for this function:

◆ getNodesStats()

virtual bool interfaces::Node::getNodesStats ( NodesStats stats)
pure virtual
Here is the caller graph for this function:

◆ getNumBlocks()

virtual int interfaces::Node::getNumBlocks ( )
pure virtual

Get num blocks.

Here is the caller graph for this function:

◆ getPersistentSetting()

virtual common::SettingsValue interfaces::Node::getPersistentSetting ( const std::string &  name)
pure virtual

Return setting value from <datadir>/settings.json or bitcoin.conf.

Here is the caller graph for this function:

◆ getProxy()

virtual bool interfaces::Node::getProxy ( Network  net,
Proxy proxy_info 
)
pure virtual

Get proxy.

Here is the caller graph for this function:

◆ getTotalBytesRecv()

virtual int64_t interfaces::Node::getTotalBytesRecv ( )
pure virtual

Get total bytes recv.

Here is the caller graph for this function:

◆ getTotalBytesSent()

virtual int64_t interfaces::Node::getTotalBytesSent ( )
pure virtual

Get total bytes sent.

Here is the caller graph for this function:

◆ getUnspentOutput()

virtual std::optional<Coin> interfaces::Node::getUnspentOutput ( const COutPoint output)
pure virtual

Get unspent output associated with a transaction.

◆ getVerificationProgress()

virtual double interfaces::Node::getVerificationProgress ( )
pure virtual

Get verification progress.

◆ getWarnings()

virtual bilingual_str interfaces::Node::getWarnings ( )
pure virtual

Get warnings.

Here is the caller graph for this function:

◆ handleBannedListChanged()

virtual std::unique_ptr<Handler> interfaces::Node::handleBannedListChanged ( BannedListChangedFn  fn)
pure virtual
Here is the caller graph for this function:

◆ handleInitMessage()

virtual std::unique_ptr<Handler> interfaces::Node::handleInitMessage ( InitMessageFn  fn)
pure virtual
Here is the caller graph for this function:

◆ handleInitWallet()

virtual std::unique_ptr<Handler> interfaces::Node::handleInitWallet ( InitWalletFn  fn)
pure virtual
Here is the caller graph for this function:

◆ handleMessageBox()

virtual std::unique_ptr<Handler> interfaces::Node::handleMessageBox ( MessageBoxFn  fn)
pure virtual
Here is the caller graph for this function:

◆ handleNotifyAlertChanged()

virtual std::unique_ptr<Handler> interfaces::Node::handleNotifyAlertChanged ( NotifyAlertChangedFn  fn)
pure virtual
Here is the caller graph for this function:

◆ handleNotifyBlockTip()

virtual std::unique_ptr<Handler> interfaces::Node::handleNotifyBlockTip ( NotifyBlockTipFn  fn)
pure virtual

◆ handleNotifyHeaderTip()

virtual std::unique_ptr<Handler> interfaces::Node::handleNotifyHeaderTip ( NotifyHeaderTipFn  fn)
pure virtual

◆ handleNotifyNetworkActiveChanged()

virtual std::unique_ptr<Handler> interfaces::Node::handleNotifyNetworkActiveChanged ( NotifyNetworkActiveChangedFn  fn)
pure virtual
Here is the caller graph for this function:

◆ handleNotifyNumConnectionsChanged()

virtual std::unique_ptr<Handler> interfaces::Node::handleNotifyNumConnectionsChanged ( NotifyNumConnectionsChangedFn  fn)
pure virtual
Here is the caller graph for this function:

◆ handleQuestion()

virtual std::unique_ptr<Handler> interfaces::Node::handleQuestion ( QuestionFn  fn)
pure virtual
Here is the caller graph for this function:

◆ handleShowProgress()

virtual std::unique_ptr<Handler> interfaces::Node::handleShowProgress ( ShowProgressFn  fn)
pure virtual
Here is the caller graph for this function:

◆ initLogging()

virtual void interfaces::Node::initLogging ( )
pure virtual

Init logging.

◆ initParameterInteraction()

virtual void interfaces::Node::initParameterInteraction ( )
pure virtual

Init parameter interaction.

Here is the caller graph for this function:

◆ isInitialBlockDownload()

virtual bool interfaces::Node::isInitialBlockDownload ( )
pure virtual

Is initial block download.

Here is the caller graph for this function:

◆ isLoadingBlocks()

virtual bool interfaces::Node::isLoadingBlocks ( )
pure virtual

Is loading blocks.

Here is the caller graph for this function:

◆ isSettingIgnored()

virtual bool interfaces::Node::isSettingIgnored ( const std::string &  name)
pure virtual

Return whether a particular setting in <datadir>/settings.json is or would be ignored because it is also specified in the command line.

◆ listExternalSigners()

virtual std::vector<std::unique_ptr<ExternalSigner> > interfaces::Node::listExternalSigners ( )
pure virtual

Return list of external signers (attached devices which can sign transactions).

Here is the caller graph for this function:

◆ listRpcCommands()

virtual std::vector<std::string> interfaces::Node::listRpcCommands ( )
pure virtual

List rpc commands.

Here is the caller graph for this function:

◆ mapPort()

virtual void interfaces::Node::mapPort ( bool  use_upnp,
bool  use_natpmp 
)
pure virtual

Map port.

Here is the caller graph for this function:

◆ resetSettings()

virtual void interfaces::Node::resetSettings ( )
pure virtual

Clear all settings in <datadir>/settings.json and store a backup of previous settings in <datadir>/settings.json.bak.

Here is the caller graph for this function:

◆ rpcSetTimerInterfaceIfUnset()

virtual void interfaces::Node::rpcSetTimerInterfaceIfUnset ( RPCTimerInterface iface)
pure virtual

Set RPC timer interface if unset.

Here is the caller graph for this function:

◆ rpcUnsetTimerInterface()

virtual void interfaces::Node::rpcUnsetTimerInterface ( RPCTimerInterface iface)
pure virtual

Unset RPC timer interface.

Here is the caller graph for this function:

◆ setContext()

virtual void interfaces::Node::setContext ( node::NodeContext context)
inlinevirtual

Definition at line 269 of file node.h.

Here is the caller graph for this function:

◆ setNetworkActive()

virtual void interfaces::Node::setNetworkActive ( bool  active)
pure virtual

Set network active.

Here is the caller graph for this function:

◆ shutdownRequested()

virtual bool interfaces::Node::shutdownRequested ( )
pure virtual

Return whether shutdown was requested.

Here is the caller graph for this function:

◆ startShutdown()

virtual void interfaces::Node::startShutdown ( )
pure virtual

Start shutdown.

Here is the caller graph for this function:

◆ unban()

virtual bool interfaces::Node::unban ( const CSubNet ip)
pure virtual

Unban node.

Here is the caller graph for this function:

◆ updateRwSetting()

virtual void interfaces::Node::updateRwSetting ( const std::string &  name,
const common::SettingsValue value 
)
pure virtual

Update a setting in <datadir>/settings.json.

◆ walletLoader()

virtual WalletLoader& interfaces::Node::walletLoader ( )
pure virtual

Get wallet loader.

Here is the caller graph for this function:

The documentation for this class was generated from the following file: