![]() |
Bitcoin ABC
0.26.3
P2P Digital Currency
|
#include <scriptpubkeyman.h>
Public Member Functions | |
DescriptorScriptPubKeyMan (WalletStorage &storage, WalletDescriptor &descriptor) | |
DescriptorScriptPubKeyMan (WalletStorage &storage, bool internal) | |
bool | GetNewDestination (const OutputType type, CTxDestination &dest, std::string &error) 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. More... | |
bool | Encrypt (const CKeyingMaterial &master_key, WalletBatch *batch) override |
bool | GetReservedDestination (const OutputType type, bool internal, CTxDestination &address, 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... | |
void | MarkUnusedAddresses (const CScript &script) override |
Mark unused addresses as being used. More... | |
bool | IsHDEnabled () const override |
bool | SetupDescriptorGeneration (const CExtKey &master_key, OutputType addr_type) |
Setup descriptors based on the given CExtkey. More... | |
bool | HavePrivateKeys () const override |
int64_t | GetOldestKeyPoolTime () const override |
size_t | KeypoolCountExternalKeys () 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 |
Returns true if the wallet can give out new addresses. More... | |
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, SigHashType sighash, std::map< int, std::string > &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, SigHashType sighash_type=SigHashType().withForkId(), bool sign=true, bool bip32derivs=false) const override |
Adds script and derivation path information to a PSBT, and optionally signs it. More... | |
uint256 | GetID () const override |
void | SetInternal (bool internal) 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< uint8_t > &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::vector< CScript > | GetScriptPubKeys () const |
![]() | |
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, 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 |
![]() | |
boost::signals2::signal< void(bool fHaveWatchOnly)> | NotifyWatchonlyChanged |
Watch-only address added. More... | |
boost::signals2::signal< void()> | NotifyCanGetAddressesChanged |
Keypool has new keys. More... | |
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< uint8_t > >> |
using | KeyMap = std::map< CKeyID, CKey > |
Private Member Functions | |
WalletDescriptor m_wallet_descriptor | GUARDED_BY (cs_desc_man) |
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_internal = false |
bool | m_decryption_thoroughly_checked = false |
keeps track of whether Unlock has run a thorough check before More... | |
Additional Inherited Members | |
![]() | |
WalletStorage & | m_storage |
Definition at line 650 of file scriptpubkeyman.h.
|
private |
Definition at line 658 of file scriptpubkeyman.h.
|
private |
Definition at line 660 of file scriptpubkeyman.h.
|
private |
Definition at line 657 of file scriptpubkeyman.h.
|
private |
Definition at line 655 of file scriptpubkeyman.h.
|
inline |
Definition at line 696 of file scriptpubkeyman.h.
|
inline |
Definition at line 699 of file scriptpubkeyman.h.
bool DescriptorScriptPubKeyMan::AddCryptedKey | ( | const CKeyID & | key_id, |
const CPubKey & | pubkey, | ||
const std::vector< uint8_t > & | crypted_key | ||
) |
Definition at line 2316 of file scriptpubkeyman.cpp.
|
private |
Definition at line 1932 of file scriptpubkeyman.cpp.
Definition at line 2310 of file scriptpubkeyman.cpp.
|
overridevirtual |
Returns true if the wallet can give out new addresses.
This means it has keys in the keypool or can generate new keys.
Reimplemented from ScriptPubKeyMan.
Definition at line 2031 of file scriptpubkeyman.cpp.
|
overridevirtual |
Whether this ScriptPubKeyMan can provide a SigningProvider (via GetSolvingProvider) that, combined with sigdata, can produce solving data.
Reimplemented from ScriptPubKeyMan.
Definition at line 2130 of file scriptpubkeyman.cpp.
bool DescriptorScriptPubKeyMan::CanUpdateToWalletDescriptor | ( | const WalletDescriptor & | descriptor, |
std::string & | error | ||
) |
Definition at line 2375 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 ScriptPubKeyMan.
Definition at line 1689 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 1726 of file scriptpubkeyman.cpp.
|
overridevirtual |
Adds script and derivation path information to a PSBT, and optionally signs it.
Reimplemented from ScriptPubKeyMan.
Definition at line 2174 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 2259 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 2061 of file scriptpubkeyman.cpp.
Definition at line 1773 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 2240 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 1624 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 2047 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 1749 of file scriptpubkeyman.cpp.
const std::vector< CScript > DescriptorScriptPubKeyMan::GetScriptPubKeys | ( | ) | const |
Definition at line 2350 of file scriptpubkeyman.cpp.
|
private |
|
private |
|
private |
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 2126 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 2066 of file scriptpubkeyman.cpp.
const WalletDescriptor DescriptorScriptPubKeyMan::GetWalletDescriptor | ( | ) | const |
Definition at line 2346 of file scriptpubkeyman.cpp.
|
private |
|
private |
|
private |
|
private |
|
private |
bool DescriptorScriptPubKeyMan::HasWalletDescriptor | ( | const WalletDescriptor & | desc | ) | const |
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 2042 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 2026 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 1681 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 2054 of file scriptpubkeyman.cpp.
|
overridevirtual |
Mark unused addresses as being used.
Reimplemented from ScriptPubKeyMan.
Definition at line 1905 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 1761 of file scriptpubkeyman.cpp.
void DescriptorScriptPubKeyMan::SetCache | ( | const DescriptorCache & | cache | ) |
Definition at line 2273 of file scriptpubkeyman.cpp.
|
overridevirtual |
Reimplemented from ScriptPubKeyMan.
Definition at line 2269 of file scriptpubkeyman.cpp.
bool DescriptorScriptPubKeyMan::SetupDescriptorGeneration | ( | const CExtKey & | master_key, |
OutputType | addr_type | ||
) |
Setup descriptors based on the given CExtkey.
Definition at line 1964 of file scriptpubkeyman.cpp.
|
overridevirtual |
Sign a message with the given script.
Reimplemented from ScriptPubKeyMan.
Definition at line 2153 of file scriptpubkeyman.cpp.
|
overridevirtual |
Creates new signatures and adds them to the transaction.
Returns whether all inputs were signed
Reimplemented from ScriptPubKeyMan.
Definition at line 2135 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 ScriptPubKeyMan.
Definition at line 1790 of file scriptpubkeyman.cpp.
void DescriptorScriptPubKeyMan::UpdateWalletDescriptor | ( | WalletDescriptor & | descriptor | ) |
void DescriptorScriptPubKeyMan::WriteDescriptor | ( | ) |
|
mutable |
Definition at line 702 of file scriptpubkeyman.h.
|
private |
keeps track of whether Unlock has run a thorough check before
Definition at line 672 of file scriptpubkeyman.h.
|
private |
Definition at line 666 of file scriptpubkeyman.h.
|
private |
Definition at line 664 of file scriptpubkeyman.h.