29 wallet->SetWalletFlag(WALLET_FLAG_DESCRIPTORS);
30 wallet->SetupDescriptorScriptPubKeyMans();
36 auto& desc =
descs.at(0);
69 std::vector<bilingual_str> warnings;
78 std::vector<bilingual_str> warnings;
93 std::vector<bilingual_str> warnings;
101 wallet->chain().waitForNotificationsIfTipChanged({});
102 wallet->m_chain_notifications_handler.reset();
156 value.
write(it->second);
201 auto& key = it->first;
202 if (key.size() <
prefix.size() || std::search(key.begin(), key.end(),
prefix.begin(),
prefix.end()) != key.begin()) {
213 return std::make_unique<MockableDatabase>(records);
223 keystore.SetWalletFlag(WALLET_FLAG_DESCRIPTORS);
229 if (!success)
return nullptr;
232 const int64_t range_start = 0, range_end = 1, next_index = 0,
timestamp = 1;
238 return &
spkm.value().get();
std::variant< CNoDestination, PubKeyDestination, PKHash, ScriptHash, WitnessV0ScriptHash, WitnessV0KeyHash, WitnessV1Taproot, PayToAnchor, WitnessUnknown > CTxDestination
A txout script categorized into standard templates.
#define Assert(val)
Identity function.
An in-memory indexed chain of blocks.
An encapsulated private key.
Double ended buffer combining vector and stream-like interfaces.
void write(std::span< const value_type > src)
constexpr bool IsNull() const
Interface giving clients (wallet processes, maybe other analysis tools in the future) ability to acce...
A CWallet maintains a set of transactions and balances, and provides the ability to create new transa...
static std::shared_ptr< CWallet > LoadExisting(WalletContext &context, const std::string &name, std::unique_ptr< WalletDatabase > database, bilingual_str &error, std::vector< bilingual_str > &warnings)
static std::shared_ptr< CWallet > CreateNew(WalletContext &context, const std::string &name, std::unique_ptr< WalletDatabase > database, uint64_t wallet_creation_flags, bilingual_str &error, std::vector< bilingual_str > &warnings)
bool ReadKey(DataStream &&key, DataStream &value) override
bool EraseKey(DataStream &&key) override
bool ErasePrefix(std::span< const std::byte > prefix) override
bool HasKey(DataStream &&key) override
bool WriteKey(DataStream &&key, DataStream &&value, bool overwrite=true) override
MockableCursor(const MockableData &records, bool pass)
MockableData::const_iterator m_cursor_end
MockableData::const_iterator m_cursor
Status Next(DataStream &key, DataStream &value) override
A WalletDatabase whose contents and return values can be modified as needed for testing.
An instance of this class represents one database.
Descriptor with some wallet metadata.
RAII object to check and reserve a wallet rescan.
static UniValue Parse(std::string_view raw, ParamFormat format=ParamFormat::JSON)
Parse string to UniValue or throw runtime_error if string contains invalid JSON.
RecursiveMutex cs_main
Mutex to guard access to validation specific variables, such as reading or changing the chainstate.
std::string EncodeSecret(const CKey &key)
std::string EncodeDestination(const CTxDestination &dest)
wallet::DescriptorScriptPubKeyMan * CreateDescriptor(CWallet &keystore, const std::string &desc_str, const bool success)
std::unique_ptr< CWallet > CreateSyncedWallet(interfaces::Chain &chain, CChain &cchain, const CKey &key)
void TestUnloadWallet(std::shared_ptr< CWallet > &&wallet)
std::map< SerializeData, SerializeData, std::less<> > MockableData
std::unique_ptr< WalletDatabase > MakeWalletDatabase(const std::string &name, const DatabaseOptions &options, DatabaseStatus &status, bilingual_str &error_string)
MockableDatabase & GetMockableDatabase(CWallet &wallet)
void NotifyWalletLoaded(WalletContext &context, const std::shared_ptr< CWallet > &wallet)
std::unique_ptr< WalletDatabase > CreateMockableWalletDatabase(MockableData records)
std::unique_ptr< WalletDatabase > DuplicateMockDatabase(WalletDatabase &database)
std::shared_ptr< CWallet > TestLoadWallet(std::unique_ptr< WalletDatabase > database, WalletContext &context)
std::shared_ptr< CWallet > TestCreateWallet(std::unique_ptr< WalletDatabase > database, WalletContext &context, uint64_t create_flags)
@ WALLET_FLAG_DESCRIPTORS
Indicate that this wallet supports DescriptorScriptPubKeyMan.
void WaitForDeleteWallet(std::shared_ptr< CWallet > &&wallet)
Explicitly delete the wallet.
RPCHelpMan getnewaddress()
CTxDestination getNewDestination(CWallet &w, OutputType output_type)
Returns a new destination, of an specific type, from the wallet.
std::optional< int > last_scanned_height
uint256 last_scanned_block
Hash and height of most recent block that was successfully scanned.
uint256 last_failed_block
Height of the most recent block that could not be scanned due to read errors or pruning.
enum wallet::CWallet::ScanResult::@18 status
WalletContext struct containing references to state shared between CWallet instances,...
interfaces::Chain * chain
constexpr auto Ticks(Dur2 d)
Helper to count the seconds of a duration/time_point.
std::vector< std::byte, zero_after_free_allocator< std::byte > > SerializeData
Byte-vector that clears its contents before deletion.