Bitcoin Core 31.0.0
P2P Digital Currency
Loading...
Searching...
No Matches
wallet::ScriptPubKeyMan Class Reference

#include <scriptpubkeyman.h>

Inheritance diagram for wallet::ScriptPubKeyMan:
[legend]
Collaboration diagram for wallet::ScriptPubKeyMan:
[legend]

Public Member Functions

 ScriptPubKeyMan (WalletStorage &storage)
virtual ~ScriptPubKeyMan ()=default
virtual util::Result< CTxDestinationGetNewDestination (const OutputType type)
virtual bool IsMine (const CScript &script) const
virtual bool CheckDecryptionKey (const CKeyingMaterial &master_key)
 Check that the given decryption key is valid for this ScriptPubKeyMan, i.e. it decrypts all of the keys handled by it.
virtual bool Encrypt (const CKeyingMaterial &master_key, WalletBatch *batch)
virtual util::Result< CTxDestinationGetReservedDestination (const OutputType type, bool internal, int64_t &index)
virtual void KeepDestination (int64_t index, const OutputType &type)
virtual void ReturnDestination (int64_t index, bool internal, const CTxDestination &addr)
virtual bool TopUp (unsigned int size=0)
 Fills internal address pool.
virtual std::vector< WalletDestinationMarkUnusedAddresses (const CScript &script)
 Mark unused addresses as being used Affects all keys up to and including the one determined by provided script.
virtual bool IsHDEnabled () const
virtual bool CanGetAddresses (bool internal=false) const
virtual bool HavePrivateKeys () const
virtual bool HaveCryptedKeys () const
virtual void RewriteDB ()
 The action to do when the DB needs rewrite.
virtual unsigned int GetKeyPoolSize () const
virtual int64_t GetTimeFirstKey () const
virtual std::unique_ptr< CKeyMetadataGetMetadata (const CTxDestination &dest) const
virtual std::unique_ptr< SigningProviderGetSolvingProvider (const CScript &script) const
virtual bool CanProvide (const CScript &script, SignatureData &sigdata)
 Whether this ScriptPubKeyMan can provide a SigningProvider (via GetSolvingProvider) that, combined with sigdata, can produce solving data.
virtual bool SignTransaction (CMutableTransaction &tx, const std::map< COutPoint, Coin > &coins, int sighash, std::map< int, bilingual_str > &input_errors) const
 Creates new signatures and adds them to the transaction.
virtual SigningResult SignMessage (const std::string &message, const PKHash &pkhash, std::string &str_sig) const
 Sign a message with the given script.
virtual std::optional< common::PSBTErrorFillPSBT (PartiallySignedTransaction &psbt, const PrecomputedTransactionData &txdata, std::optional< int > sighash_type=std::nullopt, bool sign=true, bool bip32derivs=false, int *n_signed=nullptr, bool finalize=true) const
 Adds script and derivation path information to a PSBT, and optionally signs it.
virtual uint256 GetID () const
virtual std::unordered_set< CScript, SaltedSipHasherGetScriptPubKeys () const
 Returns a set of all the scriptPubKeys that this ScriptPubKeyMan watches.
template<typename... Params>
void WalletLogPrintf (util::ConstevalFormatString< sizeof...(Params)> wallet_fmt, const Params &... params) const
 Prepends the wallet name in logging output to ease debugging in multi-wallet use cases.

Public Attributes

boost::signals2::signal< void()> NotifyCanGetAddressesChanged
 Keypool has new keys.
boost::signals2::signal< void(const ScriptPubKeyMan *spkm, int64_t new_birth_time)> NotifyFirstKeyTimeChanged
 Birth time changed.

Protected Attributes

WalletStoragem_storage

Detailed Description

Definition at line 80 of file scriptpubkeyman.h.

Constructor & Destructor Documentation

◆ ScriptPubKeyMan()

wallet::ScriptPubKeyMan::ScriptPubKeyMan ( WalletStorage & storage)
inlineexplicit

Definition at line 86 of file scriptpubkeyman.h.

Here is the caller graph for this function:

◆ ~ScriptPubKeyMan()

virtual wallet::ScriptPubKeyMan::~ScriptPubKeyMan ( )
virtualdefault

Member Function Documentation

◆ CanGetAddresses()

virtual bool wallet::ScriptPubKeyMan::CanGetAddresses ( bool internal = false) const
inlinevirtual

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 118 of file scriptpubkeyman.h.

◆ CanProvide()

virtual bool wallet::ScriptPubKeyMan::CanProvide ( const CScript & script,
SignatureData & sigdata )
inlinevirtual

Whether this ScriptPubKeyMan can provide a SigningProvider (via GetSolvingProvider) that, combined with sigdata, can produce solving data.

Reimplemented in wallet::DescriptorScriptPubKeyMan, and wallet::LegacyDataSPKM.

Definition at line 137 of file scriptpubkeyman.h.

◆ CheckDecryptionKey()

virtual bool wallet::ScriptPubKeyMan::CheckDecryptionKey ( const CKeyingMaterial & master_key)
inlinevirtual

Check that the given decryption key is valid for this ScriptPubKeyMan, i.e. it decrypts all of the keys handled by it.

Reimplemented in wallet::DescriptorScriptPubKeyMan, and wallet::LegacyDataSPKM.

Definition at line 92 of file scriptpubkeyman.h.

◆ Encrypt()

virtual bool wallet::ScriptPubKeyMan::Encrypt ( const CKeyingMaterial & master_key,
WalletBatch * batch )
inlinevirtual

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 93 of file scriptpubkeyman.h.

◆ FillPSBT()

virtual std::optional< common::PSBTError > wallet::ScriptPubKeyMan::FillPSBT ( PartiallySignedTransaction & psbt,
const PrecomputedTransactionData & txdata,
std::optional< int > sighash_type = std::nullopt,
bool sign = true,
bool bip32derivs = false,
int * n_signed = nullptr,
bool finalize = true ) const
inlinevirtual

Adds script and derivation path information to a PSBT, and optionally signs it.

Reimplemented in wallet::DescriptorScriptPubKeyMan, and wallet::ExternalSignerScriptPubKeyMan.

Definition at line 144 of file scriptpubkeyman.h.

Here is the call graph for this function:

◆ GetID()

virtual uint256 wallet::ScriptPubKeyMan::GetID ( ) const
inlinevirtual

Reimplemented in wallet::DescriptorScriptPubKeyMan, and wallet::LegacyDataSPKM.

Definition at line 146 of file scriptpubkeyman.h.

◆ GetKeyPoolSize()

virtual unsigned int wallet::ScriptPubKeyMan::GetKeyPoolSize ( ) const
inlinevirtual

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 126 of file scriptpubkeyman.h.

◆ GetMetadata()

virtual std::unique_ptr< CKeyMetadata > wallet::ScriptPubKeyMan::GetMetadata ( const CTxDestination & dest) const
inlinevirtual

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 130 of file scriptpubkeyman.h.

Here is the caller graph for this function:

◆ GetNewDestination()

virtual util::Result< CTxDestination > wallet::ScriptPubKeyMan::GetNewDestination ( const OutputType type)
inlinevirtual

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 88 of file scriptpubkeyman.h.

Here is the call graph for this function:

◆ GetReservedDestination()

virtual util::Result< CTxDestination > wallet::ScriptPubKeyMan::GetReservedDestination ( const OutputType type,
bool internal,
int64_t & index )
inlinevirtual

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 95 of file scriptpubkeyman.h.

Here is the call graph for this function:

◆ GetScriptPubKeys()

virtual std::unordered_set< CScript, SaltedSipHasher > wallet::ScriptPubKeyMan::GetScriptPubKeys ( ) const
inlinevirtual

Returns a set of all the scriptPubKeys that this ScriptPubKeyMan watches.

Reimplemented in wallet::DescriptorScriptPubKeyMan, and wallet::LegacyDataSPKM.

Definition at line 149 of file scriptpubkeyman.h.

◆ GetSolvingProvider()

virtual std::unique_ptr< SigningProvider > wallet::ScriptPubKeyMan::GetSolvingProvider ( const CScript & script) const
inlinevirtual

Reimplemented in wallet::DescriptorScriptPubKeyMan, and wallet::LegacyDataSPKM.

Definition at line 132 of file scriptpubkeyman.h.

◆ GetTimeFirstKey()

virtual int64_t wallet::ScriptPubKeyMan::GetTimeFirstKey ( ) const
inlinevirtual

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 128 of file scriptpubkeyman.h.

◆ HaveCryptedKeys()

virtual bool wallet::ScriptPubKeyMan::HaveCryptedKeys ( ) const
inlinevirtual

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 121 of file scriptpubkeyman.h.

◆ HavePrivateKeys()

virtual bool wallet::ScriptPubKeyMan::HavePrivateKeys ( ) const
inlinevirtual

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 120 of file scriptpubkeyman.h.

◆ IsHDEnabled()

virtual bool wallet::ScriptPubKeyMan::IsHDEnabled ( ) const
inlinevirtual

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 115 of file scriptpubkeyman.h.

◆ IsMine()

virtual bool wallet::ScriptPubKeyMan::IsMine ( const CScript & script) const
inlinevirtual

Reimplemented in wallet::DescriptorScriptPubKeyMan, and wallet::LegacyDataSPKM.

Definition at line 89 of file scriptpubkeyman.h.

◆ KeepDestination()

virtual void wallet::ScriptPubKeyMan::KeepDestination ( int64_t index,
const OutputType & type )
inlinevirtual

Definition at line 96 of file scriptpubkeyman.h.

◆ MarkUnusedAddresses()

virtual std::vector< WalletDestination > wallet::ScriptPubKeyMan::MarkUnusedAddresses ( const CScript & script)
inlinevirtual

Mark unused addresses as being used Affects all keys up to and including the one determined by provided script.

Parameters
scriptdetermines the last key to mark as used
Returns
All of the addresses affected

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 112 of file scriptpubkeyman.h.

◆ ReturnDestination()

virtual void wallet::ScriptPubKeyMan::ReturnDestination ( int64_t index,
bool internal,
const CTxDestination & addr )
inlinevirtual

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 97 of file scriptpubkeyman.h.

◆ RewriteDB()

virtual void wallet::ScriptPubKeyMan::RewriteDB ( )
inlinevirtual

The action to do when the DB needs rewrite.

Definition at line 124 of file scriptpubkeyman.h.

◆ SignMessage()

virtual SigningResult wallet::ScriptPubKeyMan::SignMessage ( const std::string & message,
const PKHash & pkhash,
std::string & str_sig ) const
inlinevirtual

Sign a message with the given script.

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 142 of file scriptpubkeyman.h.

◆ SignTransaction()

virtual bool wallet::ScriptPubKeyMan::SignTransaction ( CMutableTransaction & tx,
const std::map< COutPoint, Coin > & coins,
int sighash,
std::map< int, bilingual_str > & input_errors ) const
inlinevirtual

Creates new signatures and adds them to the transaction.

Returns whether all inputs were signed

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 140 of file scriptpubkeyman.h.

◆ TopUp()

virtual bool wallet::ScriptPubKeyMan::TopUp ( unsigned int size = 0)
inlinevirtual

Fills internal address pool.

Use within ScriptPubKeyMan implementations should be used sparingly and only when something from the address pool is removed, excluding GetNewDestination and GetReservedDestination. External wallet code is primarily responsible for topping up prior to fetching new addresses

Reimplemented in wallet::DescriptorScriptPubKeyMan.

Definition at line 103 of file scriptpubkeyman.h.

◆ WalletLogPrintf()

template<typename... Params>
void wallet::ScriptPubKeyMan::WalletLogPrintf ( util::ConstevalFormatString< sizeof...(Params)> wallet_fmt,
const Params &... params ) const
inline

Prepends the wallet name in logging output to ease debugging in multi-wallet use cases.

Definition at line 153 of file scriptpubkeyman.h.

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

Member Data Documentation

◆ m_storage

WalletStorage& wallet::ScriptPubKeyMan::m_storage
protected

Definition at line 83 of file scriptpubkeyman.h.

◆ NotifyCanGetAddressesChanged

boost::signals2::signal<void ()> wallet::ScriptPubKeyMan::NotifyCanGetAddressesChanged

Keypool has new keys.

Definition at line 159 of file scriptpubkeyman.h.

◆ NotifyFirstKeyTimeChanged

boost::signals2::signal<void (const ScriptPubKeyMan* spkm, int64_t new_birth_time)> wallet::ScriptPubKeyMan::NotifyFirstKeyTimeChanged

Birth time changed.

Definition at line 162 of file scriptpubkeyman.h.


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