5 #ifndef BITCOIN_INTERFACES_CHAIN_H 6 #define BITCOIN_INTERFACES_CHAIN_H 97 virtual std::optional<int>
getHeight() = 0;
135 const FoundBlock& ancestor_out={}) = 0;
141 const FoundBlock& ancestor_out={},
142 const FoundBlock& block1_out={},
143 const FoundBlock& block2_out={}) = 0;
148 virtual void findCoins(std::map<COutPoint, Coin>& coins) = 0;
157 virtual bool hasBlocks(
const uint256& block_hash,
int min_height = 0, std::optional<int> max_height = {}) = 0;
174 std::string& err_string) = 0;
182 virtual void getPackageLimits(
unsigned int& limit_ancestor_count,
unsigned int& limit_descendant_count) = 0;
221 virtual void initMessage(
const std::string& message) = 0;
230 virtual void showProgress(
const std::string& title,
int progress,
bool resume_possible) = 0;
246 virtual std::unique_ptr<Handler>
handleNotifications(std::shared_ptr<Notifications> notifications) = 0;
260 virtual void rpcRunLater(
const std::string&
name, std::function<
void()> fn, int64_t seconds) = 0;
296 virtual bool verify() = 0;
299 virtual bool load() = 0;
305 virtual void flush() = 0;
308 virtual void stop() = 0;
319 #endif // BITCOIN_INTERFACES_CHAIN_H std::shared_ptr< const CTransaction > CTransactionRef
virtual bool haveBlockOnDisk(int height)=0
Check that the block is available on disk (i.e.
Helper for findBlock to selectively return pieces of block data.
virtual bool findCommonAncestor(const uint256 &block_hash1, const uint256 &block_hash2, const FoundBlock &ancestor_out={}, const FoundBlock &block1_out={}, const FoundBlock &block2_out={})=0
Find most recent common ancestor between two blocks and optionally return block information.
virtual void findCoins(std::map< COutPoint, Coin > &coins)=0
Look up unspent output information.
virtual void getPackageLimits(unsigned int &limit_ancestor_count, unsigned int &limit_descendant_count)=0
Get the node's package limits.
virtual int rpcSerializationFlags()=0
Current RPC serialization flags.
virtual bool updateRwSetting(const std::string &name, const util::SettingsValue &value)=0
Write a setting to <datadir>/settings.json.
virtual void transactionRemovedFromMempool(const CTransactionRef &tx, MemPoolRemovalReason reason, uint64_t mempool_sequence)
virtual std::optional< int > getHeight()=0
Get current chain height, not including genesis block (returns 0 if chain only contains genesis block...
virtual bool findFirstBlockWithTimeAndHeight(int64_t min_time, int min_height, const FoundBlock &block={})=0
Find first block in the chain with timestamp >= the given time and height >= than the given height...
Describes a place in the block chain to another node such that if the other node doesn't have the sam...
virtual std::unique_ptr< Handler > handleNotifications(std::shared_ptr< Notifications > notifications)=0
Register handler for notifications.
virtual void registerRpcs()=0
Register rpcs.
virtual uint256 getBlockHash(int height)=0
Get block hash. Height must be valid or this function will abort.
virtual CFeeRate mempoolMinFee()=0
Mempool minimum fee.
virtual void rpcRunLater(const std::string &name, std::function< void()> fn, int64_t seconds)=0
Run function after given number of seconds. Cancel any previous calls with same name.
virtual CFeeRate relayDustFee()=0
Relay dust fee setting (-dustrelayfee), reflecting lowest rate it's economical to spend...
virtual int64_t getAdjustedTime()=0
Get adjusted time.
virtual bool isInitialBlockDownload()=0
Check if in IBD.
virtual void transactionAddedToMempool(const CTransactionRef &tx, uint64_t mempool_sequence)
virtual void stop()=0
Shut down client.
virtual void updatedBlockTip()
MemPoolRemovalReason
Reason why a transaction was removed from the mempool, this is passed to the notification signal...
virtual double guessVerificationProgress(const uint256 &block_hash)=0
Estimate fraction of total transactions verified if blocks up to the specified block hash are verifie...
virtual bool load()=0
Load saved state.
virtual bool checkFinalTx(const CTransaction &tx)=0
Check if transaction will be final given chain height current time.
std::unique_ptr< Chain > MakeChain(NodeContext &node)
Return implementation of Chain interface.
RBFTransactionState
The rbf state of unconfirmed transactions.
int64_t CAmount
Amount in satoshis (Can be negative)
virtual std::optional< int > findLocatorFork(const CBlockLocator &locator)=0
Return height of the highest block on chain in common with the locator, which will either be the orig...
FoundBlock & data(CBlock &data)
Read block data from disk.
virtual bool hasDescendantsInMempool(const uint256 &txid)=0
Check if transaction has descendants in mempool.
virtual void blockDisconnected(const CBlock &block, int height)
virtual void blockConnected(const CBlock &block, int height)
virtual void setMockTime(int64_t time)=0
Set mock time.
virtual bool isInMempool(const uint256 &txid)=0
Check if transaction is in mempool.
NodeContext struct containing references to chain state and connection state.
virtual bool findAncestorByHeight(const uint256 &block_hash, int ancestor_height, const FoundBlock &ancestor_out={})=0
Find ancestor of block at specified height and optionally return ancestor information.
virtual CFeeRate estimateSmartFee(int num_blocks, bool conservative, FeeCalculation *calc=nullptr)=0
Estimate smart fee.
const FoundBlock * m_next_block
FoundBlock & maxTime(int64_t &max_time)
virtual std::unique_ptr< Handler > handleRpc(const CRPCCommand &command)=0
Register handler for RPC.
virtual void start(CScheduler &scheduler)=0
Start client execution and provide a scheduler.
virtual bool findBlock(const uint256 &hash, const FoundBlock &block={})=0
Return whether node has the block and optionally return block metadata or contents.
virtual void waitForNotificationsIfTipChanged(const uint256 &old_tip)=0
Wait for pending notifications to be processed unless block hash points to the current chain tip...
virtual void requestMempoolTransactions(Notifications ¬ifications)=0
Synchronously send transactionAddedToMempool notifications about all current mempool transactions to ...
virtual void flush()=0
Save state to disk.
virtual void getTransactionAncestry(const uint256 &txid, size_t &ancestors, size_t &descendants)=0
Calculate mempool ancestor and descendant counts for the given transaction.
virtual bool verify()=0
Check for errors before loading.
virtual void initWarning(const bilingual_str &message)=0
Send init warning.
virtual bool isReadyToBroadcast()=0
Check if the node is ready to broadcast transactions.
virtual bool checkChainLimits(const CTransactionRef &tx)=0
Check if transaction will pass the mempool's chain limits.
virtual util::SettingsValue getRwSetting(const std::string &name)=0
Return <datadir>/settings.json setting value.
virtual bool findAncestorByHash(const uint256 &block_hash, const uint256 &ancestor_hash, const FoundBlock &ancestor_out={})=0
Return whether block descends from a specified ancestor, and optionally return ancestor information...
Interface to let node manage chain clients (wallets, or maybe tools for monitoring and analysis in th...
Interface giving clients (wallet processes, maybe other analysis tools in the future) ability to acce...
virtual void chainStateFlushed(const CBlockLocator &locator)
virtual void initMessage(const std::string &message)=0
Send init message.
Fee rate in satoshis per kilobyte: CAmount / kB.
FoundBlock & hash(uint256 &hash)
virtual RBFTransactionState isRBFOptIn(const CTransaction &tx)=0
Check if transaction is RBF opt in.
virtual bool isTaprootActive() const =0
Check if Taproot has activated.
virtual bool hasBlocks(const uint256 &block_hash, int min_height=0, std::optional< int > max_height={})=0
Return true if data is available for all blocks in the specified range of blocks. ...
virtual void showProgress(const std::string &title, int progress, bool resume_possible)=0
Send progress indicator.
virtual unsigned int estimateMaxBlocks()=0
Fee estimator max target.
virtual bool shutdownRequested()=0
Check if shutdown requested.
FoundBlock & inActiveChain(bool &in_active_chain)
Return whether block is in the active (most-work) chain.
FoundBlock & height(int &height)
virtual bool broadcastTransaction(const CTransactionRef &tx, const CAmount &max_tx_fee, bool relay, std::string &err_string)=0
Transaction is added to memory pool, if the transaction fee is below the amount specified by max_tx_f...
The basic transaction that is broadcasted on the network and contained in blocks. ...
FoundBlock & mtpTime(int64_t &mtp_time)
Simple class for background tasks that should be run periodically or once "after a while"...
virtual CBlockLocator getTipLocator()=0
Get locator for the current chain tip.
virtual bool rpcEnableDeprecated(const std::string &method)=0
Check if deprecated RPC is enabled.
virtual void initError(const bilingual_str &message)=0
Send init error.
virtual CFeeRate relayIncrementalFee()=0
Relay incremental fee setting (-incrementalrelayfee), reflecting cost of relay.
virtual CFeeRate relayMinFee()=0
Relay current minimum fee (from -minrelaytxfee and -incrementalrelayfee settings).
FoundBlock & nextBlock(const FoundBlock &next_block)
Return next block in the active chain if current block is in the active chain.
FoundBlock & time(int64_t &time)
virtual bool havePruned()=0
Check if any block has been pruned.