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

#include <scriptpubkeyman.h>

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

Public Member Functions

 DescriptorScriptPubKeyMan (WalletStorage &storage, WalletDescriptor &descriptor, int64_t keypool_size)
 DescriptorScriptPubKeyMan (WalletStorage &storage, int64_t keypool_size)
util::Result< CTxDestinationGetNewDestination (OutputType type) override
bool IsMine (const CScript &script) const override
bool CheckDecryptionKey (const CKeyingMaterial &master_key) override
 Check that the given decryption key is valid for this ScriptPubKeyMan, i.e. it decrypts all of the keys handled by it.
bool Encrypt (const CKeyingMaterial &master_key, WalletBatch *batch) override
util::Result< CTxDestinationGetReservedDestination (OutputType type, bool internal, int64_t &index) override
void ReturnDestination (int64_t index, bool internal, const CTxDestination &addr) override
bool TopUp (unsigned int size=0) override
 Fills internal address pool.
std::vector< WalletDestinationMarkUnusedAddresses (const CScript &script) override
 Mark unused addresses as being used Affects all keys up to and including the one determined by provided script.
bool IsHDEnabled () const override
bool SetupDescriptorGeneration (WalletBatch &batch, const CExtKey &master_key, OutputType addr_type, bool internal)
 Setup descriptors based on the given CExtkey.
bool HavePrivateKeys () const override
bool HasPrivKey (const CKeyID &keyid) const EXCLUSIVE_LOCKS_REQUIRED(cs_desc_man)
std::optional< CKeyGetKey (const CKeyID &keyid) const EXCLUSIVE_LOCKS_REQUIRED(cs_desc_man)
 Retrieve the particular key if it is available. Returns nullopt if the key is not in the wallet, or if the wallet is locked.
bool HaveCryptedKeys () const override
unsigned int GetKeyPoolSize () const override
int64_t GetTimeFirstKey () const override
std::unique_ptr< CKeyMetadataGetMetadata (const CTxDestination &dest) const override
bool CanGetAddresses (bool internal=false) const override
std::unique_ptr< SigningProviderGetSolvingProvider (const CScript &script) const override
bool CanProvide (const CScript &script, SignatureData &sigdata) override
 Whether this ScriptPubKeyMan can provide a SigningProvider (via GetSolvingProvider) that, combined with sigdata, can produce solving data.
std::unique_ptr< FlatSigningProviderGetSigningProvider (const CPubKey &pubkey) const
bool SignTransaction (CMutableTransaction &tx, const std::map< COutPoint, Coin > &coins, int sighash, std::map< int, bilingual_str > &input_errors) const override
 Creates new signatures and adds them to the transaction.
SigningResult SignMessage (const std::string &message, const PKHash &pkhash, std::string &str_sig) const override
 Sign a message with the given script.
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 override
 Adds script and derivation path information to a PSBT, and optionally signs it.
uint256 GetID () const override
void SetCache (const DescriptorCache &cache)
bool AddKey (const CKeyID &key_id, const CKey &key)
bool AddCryptedKey (const CKeyID &key_id, const CPubKey &pubkey, const std::vector< unsigned char > &crypted_key)
bool HasWalletDescriptor (const WalletDescriptor &desc) const
util::Result< void > UpdateWalletDescriptor (WalletDescriptor &descriptor)
bool CanUpdateToWalletDescriptor (const WalletDescriptor &descriptor, std::string &error)
void AddDescriptorKey (const CKey &key, const CPubKey &pubkey)
void WriteDescriptor ()
WalletDescriptor GetWalletDescriptor () const EXCLUSIVE_LOCKS_REQUIRED(cs_desc_man)
std::unordered_set< CScript, SaltedSipHasherGetScriptPubKeys () const override
 Returns a set of all the scriptPubKeys that this ScriptPubKeyMan watches.
std::unordered_set< CScript, SaltedSipHasherGetScriptPubKeys (int32_t minimum_index) const
int32_t GetEndRange () const
bool GetDescriptorString (std::string &out, bool priv) const
void UpgradeDescriptorCache ()
Public Member Functions inherited from wallet::ScriptPubKeyMan
 ScriptPubKeyMan (WalletStorage &storage)
virtual ~ScriptPubKeyMan ()=default
virtual void KeepDestination (int64_t index, const OutputType &type)
virtual void RewriteDB ()
 The action to do when the DB needs rewrite.
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

RecursiveMutex cs_desc_man
Public Attributes inherited from wallet::ScriptPubKeyMan
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 Member Functions

WalletDescriptor m_wallet_descriptor GUARDED_BY (cs_desc_man)
bool TopUpWithDB (WalletBatch &batch, unsigned int size=0)
 Same as 'TopUp' but designed for use within a batch transaction context.

Private Types

using ScriptPubKeyMap = std::map<CScript, int32_t>
using PubKeyMap = std::map<CPubKey, int32_t>
using CryptedKeyMap = std::map<CKeyID, std::pair<CPubKey, std::vector<unsigned char>>>
using KeyMap = std::map<CKeyID, CKey>

Private Member Functions

ScriptPubKeyMap m_map_script_pub_keys GUARDED_BY (cs_desc_man)
PubKeyMap m_map_pubkeys GUARDED_BY (cs_desc_man)
KeyMap m_map_keys GUARDED_BY (cs_desc_man)
CryptedKeyMap m_map_crypted_keys GUARDED_BY (cs_desc_man)
int64_t m_keypool_size GUARDED_BY (cs_desc_man)
 Number of pre-generated keys/scripts (part of the look-ahead process, used to detect payments).
bool AddDescriptorKeyWithDB (WalletBatch &batch, const CKey &key, const CPubKey &pubkey) EXCLUSIVE_LOCKS_REQUIRED(cs_desc_man)
KeyMap GetKeys () const EXCLUSIVE_LOCKS_REQUIRED(cs_desc_man)
std::unique_ptr< FlatSigningProviderGetSigningProvider (const CScript &script, bool include_private=false) const
std::unique_ptr< FlatSigningProviderGetSigningProvider (int32_t index, bool include_private=false) const EXCLUSIVE_LOCKS_REQUIRED(cs_desc_man)

Private Attributes

int32_t m_max_cached_index = -1
bool m_decryption_thoroughly_checked = false
 keeps track of whether Unlock has run a thorough check before
std::map< uint256, MuSig2SecNoncem_musig2_secnonces
 Map of a session id to MuSig2 secnonce.
std::map< int32_t, FlatSigningProviderm_map_signing_providers

Friends

class LegacyDataSPKM

Additional Inherited Members

Protected Attributes inherited from wallet::ScriptPubKeyMan
WalletStoragem_storage

Detailed Description

Definition at line 275 of file scriptpubkeyman.h.

Member Typedef Documentation

◆ CryptedKeyMap

using wallet::DescriptorScriptPubKeyMan::CryptedKeyMap = std::map<CKeyID, std::pair<CPubKey, std::vector<unsigned char>>>
private

Definition at line 281 of file scriptpubkeyman.h.

◆ KeyMap

Definition at line 282 of file scriptpubkeyman.h.

◆ PubKeyMap

using wallet::DescriptorScriptPubKeyMan::PubKeyMap = std::map<CPubKey, int32_t>
private

Definition at line 280 of file scriptpubkeyman.h.

◆ ScriptPubKeyMap

using wallet::DescriptorScriptPubKeyMan::ScriptPubKeyMap = std::map<CScript, int32_t>
private

Definition at line 279 of file scriptpubkeyman.h.

Constructor & Destructor Documentation

◆ DescriptorScriptPubKeyMan() [1/2]

wallet::DescriptorScriptPubKeyMan::DescriptorScriptPubKeyMan ( WalletStorage & storage,
WalletDescriptor & descriptor,
int64_t keypool_size )
inline

Definition at line 328 of file scriptpubkeyman.h.

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

◆ DescriptorScriptPubKeyMan() [2/2]

wallet::DescriptorScriptPubKeyMan::DescriptorScriptPubKeyMan ( WalletStorage & storage,
int64_t keypool_size )
inline

Definition at line 333 of file scriptpubkeyman.h.

Here is the call graph for this function:

Member Function Documentation

◆ AddCryptedKey()

bool wallet::DescriptorScriptPubKeyMan::AddCryptedKey ( const CKeyID & key_id,
const CPubKey & pubkey,
const std::vector< unsigned char > & crypted_key )

Definition at line 1470 of file scriptpubkeyman.cpp.

◆ AddDescriptorKey()

void wallet::DescriptorScriptPubKeyMan::AddDescriptorKey ( const CKey & key,
const CPubKey & pubkey )

Definition at line 1094 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ AddDescriptorKeyWithDB()

bool wallet::DescriptorScriptPubKeyMan::AddDescriptorKeyWithDB ( WalletBatch & batch,
const CKey & key,
const CPubKey & pubkey )
private

Definition at line 1103 of file scriptpubkeyman.cpp.

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

◆ AddKey()

bool wallet::DescriptorScriptPubKeyMan::AddKey ( const CKeyID & key_id,
const CKey & key )

Definition at line 1463 of file scriptpubkeyman.cpp.

◆ CanGetAddresses()

bool wallet::DescriptorScriptPubKeyMan::CanGetAddresses ( bool internal = false) const
overridevirtual

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 1168 of file scriptpubkeyman.cpp.

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

◆ CanProvide()

bool wallet::DescriptorScriptPubKeyMan::CanProvide ( const CScript & script,
SignatureData & sigdata )
overridevirtual

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

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 1272 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ CanUpdateToWalletDescriptor()

bool wallet::DescriptorScriptPubKeyMan::CanUpdateToWalletDescriptor ( const WalletDescriptor & descriptor,
std::string & error )

Definition at line 1586 of file scriptpubkeyman.cpp.

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

◆ CheckDecryptionKey()

bool wallet::DescriptorScriptPubKeyMan::CheckDecryptionKey ( const CKeyingMaterial & master_key)
overridevirtual

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

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 869 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ Encrypt()

bool wallet::DescriptorScriptPubKeyMan::Encrypt ( const CKeyingMaterial & master_key,
WalletBatch * batch )
overridevirtual

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 901 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ FillPSBT()

std::optional< PSBTError > wallet::DescriptorScriptPubKeyMan::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
overridevirtual

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

Reimplemented from wallet::ScriptPubKeyMan.

Reimplemented in wallet::ExternalSignerScriptPubKeyMan.

Definition at line 1309 of file scriptpubkeyman.cpp.

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

◆ GetDescriptorString()

bool wallet::DescriptorScriptPubKeyMan::GetDescriptorString ( std::string & out,
bool priv ) const
nodiscard

Definition at line 1523 of file scriptpubkeyman.cpp.

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

◆ GetEndRange()

int32_t wallet::DescriptorScriptPubKeyMan::GetEndRange ( ) const

Definition at line 1518 of file scriptpubkeyman.cpp.

◆ GetID()

uint256 wallet::DescriptorScriptPubKeyMan::GetID ( ) const
overridevirtual

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 1423 of file scriptpubkeyman.cpp.

Here is the caller graph for this function:

◆ GetKey()

std::optional< CKey > wallet::DescriptorScriptPubKeyMan::GetKey ( const CKeyID & keyid) const

Retrieve the particular key if it is available. Returns nullopt if the key is not in the wallet, or if the wallet is locked.

Definition at line 968 of file scriptpubkeyman.cpp.

Here is the caller graph for this function:

◆ GetKeyPoolSize()

unsigned int wallet::DescriptorScriptPubKeyMan::GetKeyPoolSize ( ) const
overridevirtual

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 1190 of file scriptpubkeyman.cpp.

◆ GetKeys()

std::map< CKeyID, CKey > wallet::DescriptorScriptPubKeyMan::GetKeys ( ) const
private

Definition at line 943 of file scriptpubkeyman.cpp.

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

◆ GetMetadata()

std::unique_ptr< CKeyMetadata > wallet::DescriptorScriptPubKeyMan::GetMetadata ( const CTxDestination & dest) const
overridevirtual

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 1405 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ GetNewDestination()

util::Result< CTxDestination > wallet::DescriptorScriptPubKeyMan::GetNewDestination ( OutputType type)
overridevirtual

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 824 of file scriptpubkeyman.cpp.

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

◆ GetReservedDestination()

util::Result< CTxDestination > wallet::DescriptorScriptPubKeyMan::GetReservedDestination ( OutputType type,
bool internal,
int64_t & index )
overridevirtual

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 924 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ GetScriptPubKeys() [1/2]

std::unordered_set< CScript, SaltedSipHasher > wallet::DescriptorScriptPubKeyMan::GetScriptPubKeys ( ) const
overridevirtual

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

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 1501 of file scriptpubkeyman.cpp.

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

◆ GetScriptPubKeys() [2/2]

std::unordered_set< CScript, SaltedSipHasher > wallet::DescriptorScriptPubKeyMan::GetScriptPubKeys ( int32_t minimum_index) const

Definition at line 1506 of file scriptpubkeyman.cpp.

◆ GetSigningProvider() [1/3]

std::unique_ptr< FlatSigningProvider > wallet::DescriptorScriptPubKeyMan::GetSigningProvider ( const CPubKey & pubkey) const

Definition at line 1216 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ GetSigningProvider() [2/3]

std::unique_ptr< FlatSigningProvider > wallet::DescriptorScriptPubKeyMan::GetSigningProvider ( const CScript & script,
bool include_private = false ) const
private

Definition at line 1202 of file scriptpubkeyman.cpp.

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

◆ GetSigningProvider() [3/3]

std::unique_ptr< FlatSigningProvider > wallet::DescriptorScriptPubKeyMan::GetSigningProvider ( int32_t index,
bool include_private = false ) const
private

Definition at line 1235 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ GetSolvingProvider()

std::unique_ptr< SigningProvider > wallet::DescriptorScriptPubKeyMan::GetSolvingProvider ( const CScript & script) const
overridevirtual

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 1267 of file scriptpubkeyman.cpp.

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

◆ GetTimeFirstKey()

int64_t wallet::DescriptorScriptPubKeyMan::GetTimeFirstKey ( ) const
overridevirtual

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 1196 of file scriptpubkeyman.cpp.

◆ GetWalletDescriptor()

WalletDescriptor wallet::DescriptorScriptPubKeyMan::GetWalletDescriptor ( ) const

Definition at line 1496 of file scriptpubkeyman.cpp.

Here is the caller graph for this function:

◆ GUARDED_BY() [1/6]

WalletDescriptor m_wallet_descriptor wallet::DescriptorScriptPubKeyMan::GUARDED_BY ( cs_desc_man )
protected
Here is the call graph for this function:

◆ GUARDED_BY() [2/6]

int64_t m_keypool_size wallet::DescriptorScriptPubKeyMan::GUARDED_BY ( cs_desc_man )
inlineprivate

Number of pre-generated keys/scripts (part of the look-ahead process, used to detect payments).

Definition at line 295 of file scriptpubkeyman.h.

◆ GUARDED_BY() [3/6]

CryptedKeyMap m_map_crypted_keys wallet::DescriptorScriptPubKeyMan::GUARDED_BY ( cs_desc_man )
private

◆ GUARDED_BY() [4/6]

KeyMap m_map_keys wallet::DescriptorScriptPubKeyMan::GUARDED_BY ( cs_desc_man )
private

◆ GUARDED_BY() [5/6]

PubKeyMap m_map_pubkeys wallet::DescriptorScriptPubKeyMan::GUARDED_BY ( cs_desc_man )
private

◆ GUARDED_BY() [6/6]

ScriptPubKeyMap m_map_script_pub_keys wallet::DescriptorScriptPubKeyMan::GUARDED_BY ( cs_desc_man )
private
Here is the caller graph for this function:

◆ HasPrivKey()

bool wallet::DescriptorScriptPubKeyMan::HasPrivKey ( const CKeyID & keyid) const

Definition at line 962 of file scriptpubkeyman.cpp.

◆ HasWalletDescriptor()

bool wallet::DescriptorScriptPubKeyMan::HasWalletDescriptor ( const WalletDescriptor & desc) const

Definition at line 1481 of file scriptpubkeyman.cpp.

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

◆ HaveCryptedKeys()

bool wallet::DescriptorScriptPubKeyMan::HaveCryptedKeys ( ) const
overridevirtual

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 1184 of file scriptpubkeyman.cpp.

◆ HavePrivateKeys()

bool wallet::DescriptorScriptPubKeyMan::HavePrivateKeys ( ) const
overridevirtual

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 1178 of file scriptpubkeyman.cpp.

Here is the caller graph for this function:

◆ IsHDEnabled()

bool wallet::DescriptorScriptPubKeyMan::IsHDEnabled ( ) const
overridevirtual

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 1162 of file scriptpubkeyman.cpp.

◆ IsMine()

bool wallet::DescriptorScriptPubKeyMan::IsMine ( const CScript & script) const
overridevirtual

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 863 of file scriptpubkeyman.cpp.

Here is the caller graph for this function:

◆ MarkUnusedAddresses()

std::vector< WalletDestination > wallet::DescriptorScriptPubKeyMan::MarkUnusedAddresses ( const CScript & script)
overridevirtual

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 from wallet::ScriptPubKeyMan.

Definition at line 1066 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ ReturnDestination()

void wallet::DescriptorScriptPubKeyMan::ReturnDestination ( int64_t index,
bool internal,
const CTxDestination & addr )
overridevirtual

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 932 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ SetCache()

void wallet::DescriptorScriptPubKeyMan::SetCache ( const DescriptorCache & cache)

Definition at line 1429 of file scriptpubkeyman.cpp.

◆ SetupDescriptorGeneration()

bool wallet::DescriptorScriptPubKeyMan::SetupDescriptorGeneration ( WalletBatch & batch,
const CExtKey & master_key,
OutputType addr_type,
bool internal )

Setup descriptors based on the given CExtkey.

Definition at line 1135 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ SignMessage()

SigningResult wallet::DescriptorScriptPubKeyMan::SignMessage ( const std::string & message,
const PKHash & pkhash,
std::string & str_sig ) const
overridevirtual

Sign a message with the given script.

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 1291 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ SignTransaction()

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

Creates new signatures and adds them to the transaction.

Returns whether all inputs were signed

Reimplemented from wallet::ScriptPubKeyMan.

Definition at line 1277 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ TopUp()

bool wallet::DescriptorScriptPubKeyMan::TopUp ( unsigned int size = 0)
overridevirtual

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 from wallet::ScriptPubKeyMan.

Definition at line 992 of file scriptpubkeyman.cpp.

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

◆ TopUpWithDB()

bool wallet::DescriptorScriptPubKeyMan::TopUpWithDB ( WalletBatch & batch,
unsigned int size = 0 )
protected

Same as 'TopUp' but designed for use within a batch transaction context.

Definition at line 1001 of file scriptpubkeyman.cpp.

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

◆ UpdateWalletDescriptor()

util::Result< void > wallet::DescriptorScriptPubKeyMan::UpdateWalletDescriptor ( WalletDescriptor & descriptor)

Definition at line 1569 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ UpgradeDescriptorCache()

void wallet::DescriptorScriptPubKeyMan::UpgradeDescriptorCache ( )

Definition at line 1540 of file scriptpubkeyman.cpp.

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

◆ WriteDescriptor()

void wallet::DescriptorScriptPubKeyMan::WriteDescriptor ( )

Definition at line 1487 of file scriptpubkeyman.cpp.

Here is the call graph for this function:

◆ LegacyDataSPKM

friend class LegacyDataSPKM
friend

Definition at line 277 of file scriptpubkeyman.h.

Member Data Documentation

◆ cs_desc_man

RecursiveMutex wallet::DescriptorScriptPubKeyMan::cs_desc_man
mutable

Definition at line 338 of file scriptpubkeyman.h.

◆ m_decryption_thoroughly_checked

bool wallet::DescriptorScriptPubKeyMan::m_decryption_thoroughly_checked = false
private

keeps track of whether Unlock has run a thorough check before

Definition at line 292 of file scriptpubkeyman.h.

◆ m_map_signing_providers

std::map<int32_t, FlatSigningProvider> wallet::DescriptorScriptPubKeyMan::m_map_signing_providers
mutableprivate

Definition at line 315 of file scriptpubkeyman.h.

◆ m_max_cached_index

int32_t wallet::DescriptorScriptPubKeyMan::m_max_cached_index = -1
private

Definition at line 286 of file scriptpubkeyman.h.

◆ m_musig2_secnonces

std::map<uint256, MuSig2SecNonce> wallet::DescriptorScriptPubKeyMan::m_musig2_secnonces
mutableprivate

Map of a session id to MuSig2 secnonce.

Stores MuSig2 secnonces while the MuSig2 signing session is still ongoing. Note that these secnonces must not be reused. In order to avoid being tricked into reusing a nonce, this map is held only in memory and must not be written to disk. The side effect is that signing sessions cannot persist across restarts, but this must be done in order to prevent nonce reuse.

The session id is an arbitrary value set by the signer in order for the signing logic to find ongoing signing sessions. It is the SHA256 of aggregate xonly key, + participant pubkey + sighash.

Definition at line 308 of file scriptpubkeyman.h.


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