![]() |
Bitcoin Core
24.1.0
P2P Digital Currency
|
#include <scriptpubkeyman.h>
Public Member Functions | |
| DescriptorScriptPubKeyMan (WalletStorage &storage, WalletDescriptor &descriptor) | |
| DescriptorScriptPubKeyMan (WalletStorage &storage) | |
| util::Result< CTxDestination > | GetNewDestination (const OutputType type) override |
| isminetype | IsMine (const CScript &script) const override |
| bool | CheckDecryptionKey (const CKeyingMaterial &master_key, bool accept_no_keys=false) override |
| Check that the given decryption key is valid for this ScriptPubKeyMan, i.e. it decrypts all of the keys handled by it. More... | |
| bool | Encrypt (const CKeyingMaterial &master_key, WalletBatch *batch) override |
| util::Result< CTxDestination > | GetReservedDestination (const OutputType type, bool internal, int64_t &index, CKeyPool &keypool) override |
| void | ReturnDestination (int64_t index, bool internal, const CTxDestination &addr) override |
| bool | TopUp (unsigned int size=0) override |
| Fills internal address pool. More... | |
| std::vector< WalletDestination > | MarkUnusedAddresses (const CScript &script) override |
| Mark unused addresses as being used Affects all keys up to and including the one determined by provided script. More... | |
| bool | IsHDEnabled () const override |
| bool | SetupDescriptorGeneration (const CExtKey &master_key, OutputType addr_type, bool internal) |
| Setup descriptors based on the given CExtkey. More... | |
| bool | SetupDescriptor (std::unique_ptr< Descriptor >desc) |
| Provide a descriptor at setup time Returns false if already setup or setup fails, true if setup is successful. More... | |
| bool | HavePrivateKeys () const override |
| std::optional< int64_t > | GetOldestKeyPoolTime () const override |
| unsigned int | GetKeyPoolSize () const override |
| int64_t | GetTimeFirstKey () const override |
| std::unique_ptr< CKeyMetadata > | GetMetadata (const CTxDestination &dest) const override |
| bool | CanGetAddresses (bool internal=false) const override |
| std::unique_ptr< SigningProvider > | GetSolvingProvider (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. More... | |
| 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. More... | |
| SigningResult | SignMessage (const std::string &message, const PKHash &pkhash, std::string &str_sig) const override |
| Sign a message with the given script. More... | |
| TransactionError | FillPSBT (PartiallySignedTransaction &psbt, const PrecomputedTransactionData &txdata, int sighash_type=SIGHASH_DEFAULT, 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. More... | |
| 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 |
| void | UpdateWalletDescriptor (WalletDescriptor &descriptor) |
| bool | CanUpdateToWalletDescriptor (const WalletDescriptor &descriptor, std::string &error) |
| void | AddDescriptorKey (const CKey &key, const CPubKey &pubkey) |
| void | WriteDescriptor () |
| const WalletDescriptor | GetWalletDescriptor () const EXCLUSIVE_LOCKS_REQUIRED(cs_desc_man) |
| const std::unordered_set< CScript, SaltedSipHasher > | GetScriptPubKeys () const override |
| Returns a set of all the scriptPubKeys that this ScriptPubKeyMan watches. More... | |
| bool | GetDescriptorString (std::string &out, const bool priv) const |
| void | UpgradeDescriptorCache () |
Public Member Functions inherited from wallet::ScriptPubKeyMan | |
| ScriptPubKeyMan (WalletStorage &storage) | |
| virtual | ~ScriptPubKeyMan () |
| virtual void | KeepDestination (int64_t index, const OutputType &type) |
| virtual bool | SetupGeneration (bool force=false) |
| Sets up the key generation stuff, i.e. More... | |
| virtual bool | Upgrade (int prev_version, int new_version, bilingual_str &error) |
| Upgrades the wallet to the specified version. More... | |
| virtual void | RewriteDB () |
| The action to do when the DB needs rewrite. More... | |
| template<typename... Params> | |
| void | WalletLogPrintf (std::string fmt, Params... parameters) const |
| Prepends the wallet name in logging output to ease debugging in multi-wallet use cases. More... | |
Public Attributes | |
| RecursiveMutex | cs_desc_man |
Public Attributes inherited from wallet::ScriptPubKeyMan | |
| boost::signals2::signal< void(bool fHaveWatchOnly)> | NotifyWatchonlyChanged |
| Watch-only address added. More... | |
| boost::signals2::signal< void()> | NotifyCanGetAddressesChanged |
| Keypool has new keys. More... | |
Protected Member Functions | |
| WalletDescriptor m_wallet_descriptor | GUARDED_BY (cs_desc_man) |
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) |
| 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< FlatSigningProvider > | GetSigningProvider (const CScript &script, bool include_private=false) const |
| std::unique_ptr< FlatSigningProvider > | GetSigningProvider (const CPubKey &pubkey) const |
| std::unique_ptr< FlatSigningProvider > | GetSigningProvider (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 More... | |
| std::map< int32_t, FlatSigningProvider > | m_map_signing_providers |
Additional Inherited Members | |
Protected Attributes inherited from wallet::ScriptPubKeyMan | |
| WalletStorage & | m_storage |
Definition at line 540 of file scriptpubkeyman.h.
|
private |
Definition at line 545 of file scriptpubkeyman.h.
|
private |
Definition at line 546 of file scriptpubkeyman.h.
|
private |
Definition at line 544 of file scriptpubkeyman.h.
|
private |
Definition at line 543 of file scriptpubkeyman.h.
|
inline |
Definition at line 575 of file scriptpubkeyman.h.
|
inline |
Definition at line 579 of file scriptpubkeyman.h.
| bool wallet::DescriptorScriptPubKeyMan::AddCryptedKey | ( | const CKeyID & | key_id, |
| const CPubKey & | pubkey, | ||
| const std::vector< unsigned char > & | crypted_key | ||
| ) |
Definition at line 2625 of file scriptpubkeyman.cpp.
|
private |
Definition at line 2216 of file scriptpubkeyman.cpp.
Definition at line 2618 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2328 of file scriptpubkeyman.cpp.
|
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 2425 of file scriptpubkeyman.cpp.
| bool wallet::DescriptorScriptPubKeyMan::CanUpdateToWalletDescriptor | ( | const WalletDescriptor & | descriptor, |
| std::string & | error | ||
| ) |
Definition at line 2728 of file scriptpubkeyman.cpp.
|
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 2025 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2057 of file scriptpubkeyman.cpp.
|
overridevirtual |
Adds script and derivation path information to a PSBT, and optionally signs it.
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2462 of file scriptpubkeyman.cpp.
| bool wallet::DescriptorScriptPubKeyMan::GetDescriptorString | ( | std::string & | out, |
| const bool | priv | ||
| ) | const |
Definition at line 2668 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2579 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2351 of file scriptpubkeyman.cpp.
Definition at line 2099 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2561 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 1974 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2344 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2080 of file scriptpubkeyman.cpp.
|
overridevirtual |
Returns a set of all the scriptPubKeys that this ScriptPubKeyMan watches.
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2656 of file scriptpubkeyman.cpp.
|
private |
|
private |
|
private |
|
overridevirtual |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2420 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2357 of file scriptpubkeyman.cpp.
| const WalletDescriptor wallet::DescriptorScriptPubKeyMan::GetWalletDescriptor | ( | ) | const |
Definition at line 2651 of file scriptpubkeyman.cpp.
|
private |
|
private |
|
private |
|
private |
|
protected |
| bool wallet::DescriptorScriptPubKeyMan::HasWalletDescriptor | ( | const WalletDescriptor & | desc | ) | const |
|
overridevirtual |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2338 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2322 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2016 of file scriptpubkeyman.cpp.
|
overridevirtual |
Mark unused addresses as being used Affects all keys up to and including the one determined by provided script.
| script | determines the last key to mark as used |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2179 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2088 of file scriptpubkeyman.cpp.
| void wallet::DescriptorScriptPubKeyMan::SetCache | ( | const DescriptorCache & | cache | ) |
Definition at line 2588 of file scriptpubkeyman.cpp.
| bool wallet::DescriptorScriptPubKeyMan::SetupDescriptor | ( | std::unique_ptr< Descriptor > | desc | ) |
Provide a descriptor at setup time Returns false if already setup or setup fails, true if setup is successful.
| bool wallet::DescriptorScriptPubKeyMan::SetupDescriptorGeneration | ( | const CExtKey & | master_key, |
| OutputType | addr_type, | ||
| bool | internal | ||
| ) |
Setup descriptors based on the given CExtkey.
Definition at line 2246 of file scriptpubkeyman.cpp.
|
overridevirtual |
Sign a message with the given script.
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2444 of file scriptpubkeyman.cpp.
|
overridevirtual |
Creates new signatures and adds them to the transaction.
Returns whether all inputs were signed
Reimplemented from wallet::ScriptPubKeyMan.
Definition at line 2430 of file scriptpubkeyman.cpp.
|
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 2116 of file scriptpubkeyman.cpp.
| void wallet::DescriptorScriptPubKeyMan::UpdateWalletDescriptor | ( | WalletDescriptor & | descriptor | ) |
| void wallet::DescriptorScriptPubKeyMan::UpgradeDescriptorCache | ( | ) |
Definition at line 2685 of file scriptpubkeyman.cpp.
| void wallet::DescriptorScriptPubKeyMan::WriteDescriptor | ( | ) |
Definition at line 2642 of file scriptpubkeyman.cpp.
|
mutable |
Definition at line 583 of file scriptpubkeyman.h.
|
private |
keeps track of whether Unlock has run a thorough check before
Definition at line 556 of file scriptpubkeyman.h.
|
mutableprivate |
Definition at line 563 of file scriptpubkeyman.h.
|
private |
Definition at line 550 of file scriptpubkeyman.h.
1.8.14