5 #ifndef BITCOIN_INTERFACES_NODE_H 6 #define BITCOIN_INTERFACES_NODE_H 65 virtual std::string
getName() = 0;
72 virtual ~Node() =
default;
123 virtual void mapPort(
bool use_upnp,
bool use_natpmp) = 0;
132 using NodesStats = std::vector<std::tuple<CNodeStats, bool, CNodeStateStats>>;
139 virtual bool ban(
const CNetAddr& net_addr, int64_t ban_time_offset) = 0;
169 virtual bool getHeaderTip(
int& height, int64_t& block_time) = 0;
228 std::function<bool(const bilingual_str& message, const std::string& caption, unsigned int style)>;
233 const std::string& non_interactive_message,
234 const std::string& caption,
235 unsigned int style)>;
239 using ShowProgressFn = std::function<void(const std::string& title, int progress, bool resume_possible)>;
264 std::function<void(SynchronizationState, interfaces::BlockTip tip, double verification_progress)>;
269 std::function<void(SynchronizationState, interfaces::BlockTip tip, bool presync)>;
290 #endif // BITCOIN_INTERFACES_NODE_H std::shared_ptr< const CTransaction > CTransactionRef
virtual common::SettingsValue getPersistentSetting(const std::string &name)=0
Return setting value from <datadir>/settings.json or bitcoin.conf.
virtual std::unique_ptr< Handler > handleNotifyHeaderTip(NotifyHeaderTipFn fn)=0
virtual size_t getMempoolMaxUsage()=0
Get mempool maximum memory usage.
std::vector< std::tuple< CNodeStats, bool, CNodeStateStats > > NodesStats
Get stats for connected nodes.
virtual std::optional< Coin > getUnspentOutput(const COutPoint &output)=0
Get unspent output associated with a transaction.
virtual void resetSettings()=0
Clear all settings in <datadir>/settings.json and store a backup of previous settings in <datadir>/se...
Block tip (could be a header or not, depends on the subscribed signal).
virtual bool isInitialBlockDownload()=0
Is initial block download.
SynchronizationState
Current sync state passed to tip changed callbacks.
virtual bool getNetworkActive()=0
Get network active.
virtual void initLogging()=0
Init logging.
virtual node::TransactionError broadcastTransaction(CTransactionRef tx, CAmount max_tx_fee, std::string &err_string)=0
Broadcast transaction.
virtual double getVerificationProgress()=0
Get verification progress.
virtual size_t getMempoolDynamicUsage()=0
Get mempool dynamic usage.
virtual bool baseInitialize()=0
Initialize app dependencies.
virtual bool unban(const CSubNet &ip)=0
Unban node.
virtual void startShutdown()=0
Start shutdown.
virtual UniValue executeRpc(const std::string &command, const UniValue ¶ms, const std::string &uri)=0
Execute rpc command.
virtual void rpcUnsetTimerInterface(RPCTimerInterface *iface)=0
Unset RPC timer interface.
virtual int64_t getTotalBytesRecv()=0
Get total bytes recv.
std::function< void(bool network_active)> NotifyNetworkActiveChangedFn
Register handler for network active messages.
virtual size_t getMempoolSize()=0
Get mempool size.
virtual uint32_t getLogCategories()=0
std::function< void(SynchronizationState, interfaces::BlockTip tip, double verification_progress)> NotifyBlockTipFn
Register handler for block tip messages.
std::unique_ptr< Node > MakeNode(node::NodeContext &context)
Return implementation of Node interface.
virtual std::unique_ptr< Handler > handleNotifyBlockTip(NotifyBlockTipFn fn)=0
virtual CFeeRate getDustRelayFee()=0
Get dust relay fee.
virtual bool ban(const CNetAddr &net_addr, int64_t ban_time_offset)=0
Ban node.
virtual std::string getName()=0
Get signer display name.
virtual size_t getNodeCount(ConnectionDirection flags)=0
Get number of connections.
virtual void rpcSetTimerInterfaceIfUnset(RPCTimerInterface *iface)=0
Set RPC timer interface if unset.
virtual std::unique_ptr< Handler > handleMessageBox(MessageBoxFn fn)=0
int64_t CAmount
Amount in satoshis (Can be negative)
virtual std::unique_ptr< Handler > handleNotifyNumConnectionsChanged(NotifyNumConnectionsChangedFn fn)=0
NodeContext struct containing references to chain state and connection state.
std::function< void(SynchronizationState, interfaces::BlockTip tip, bool presync)> NotifyHeaderTipFn
Register handler for header tip messages.
virtual ~ExternalSigner()=default
std::function< void()> NotifyAlertChangedFn
Register handler for notify alert messages.
virtual int getExitStatus()=0
Get exit status.
virtual bool isLoadingBlocks()=0
Is loading blocks.
virtual bilingual_str getWarnings()=0
Get warnings.
virtual void updateRwSetting(const std::string &name, const common::SettingsValue &value)=0
Update a setting in <datadir>/settings.json.
virtual std::unique_ptr< Handler > handleShowProgress(ShowProgressFn fn)=0
virtual bool getProxy(Network net, Proxy &proxy_info)=0
Get proxy.
virtual bool disconnectByAddress(const CNetAddr &net_addr)=0
Disconnect node by address.
static CService ip(uint32_t i)
Block and header tip information.
virtual std::unique_ptr< Handler > handleBannedListChanged(BannedListChangedFn fn)=0
An outpoint - a combination of a transaction hash and an index n into its vout.
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 a...
virtual std::map< CNetAddr, LocalServiceInfo > getNetLocalAddresses()=0
Get network local addresses.
Wallet chain client that in addition to having chain client methods for starting up, shutting down, and registering RPCs, also has additional methods (called by the GUI) to load and create wallets.
External signer interface used by the GUI.
virtual bool shutdownRequested()=0
Return whether shutdown was requested.
std::function< void(const std::string &message)> InitMessageFn
Register handler for init messages.
std::function< void()> BannedListChangedFn
Register handler for ban list messages.
virtual void initParameterInteraction()=0
Init parameter interaction.
std::function< void(int new_num_connections)> NotifyNumConnectionsChangedFn
Register handler for number of connections changed messages.
double verification_progress
virtual int64_t getLastBlockTime()=0
Get last block time.
virtual void appShutdown()=0
Stop node.
virtual std::unique_ptr< Handler > handleQuestion(QuestionFn fn)=0
std::function< bool(const bilingual_str &message, const std::string &non_interactive_message, const std::string &caption, unsigned int style)> QuestionFn
Register handler for question messages.
virtual uint256 getBestBlockHash()=0
Get best block hash.
virtual std::vector< std::unique_ptr< ExternalSigner > > listExternalSigners()=0
Return list of external signers (attached devices which can sign transactions).
virtual WalletLoader & walletLoader()=0
Get wallet loader.
virtual std::vector< std::string > listRpcCommands()=0
List rpc commands.
virtual bool getHeaderTip(int &height, int64_t &block_time)=0
Get header tip height and time.
std::function< void()> InitWalletFn
Register handler for wallet loader constructed messages.
virtual bool getNodesStats(NodesStats &stats)=0
Fee rate in satoshis per kilovirtualbyte: CAmount / kvB.
virtual bool getBanned(banmap_t &banmap)=0
Get ban map entries.
std::function< void(const std::string &title, int progress, bool resume_possible)> ShowProgressFn
Register handler for progress messages.
virtual std::unique_ptr< Handler > handleInitWallet(InitWalletFn fn)=0
std::map< CSubNet, CBanEntry > banmap_t
virtual int getNumBlocks()=0
Get num blocks.
virtual std::unique_ptr< Handler > handleNotifyAlertChanged(NotifyAlertChangedFn fn)=0
virtual void setContext(node::NodeContext *context)
std::function< bool(const bilingual_str &message, const std::string &caption, unsigned int style)> MessageBoxFn
Register handler for message box messages.
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 persist...
virtual bool disconnectById(NodeId id)=0
Disconnect node by id.
virtual std::unique_ptr< Handler > handleNotifyNetworkActiveChanged(NotifyNetworkActiveChangedFn fn)=0
virtual int64_t getTotalBytesSent()=0
Get total bytes sent.
virtual void setNetworkActive(bool active)=0
Set network active.
virtual void mapPort(bool use_upnp, bool use_natpmp)=0
Map port.
Top-level interface for a bitcoin node (bitcoind process).
virtual bool appInitMain(interfaces::BlockAndHeaderTipInfo *tip_info=nullptr)=0
Start node.
virtual node::NodeContext * context()
Get and set internal node context.
virtual std::unique_ptr< Handler > handleInitMessage(InitMessageFn fn)=0