Bitcoin Core  27.99.0
P2P Digital Currency
wallet.h
Go to the documentation of this file.
1 // Copyright (c) 2018-2022 The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #ifndef BITCOIN_INTERFACES_WALLET_H
6 #define BITCOIN_INTERFACES_WALLET_H
7 
8 #include <addresstype.h>
9 #include <common/signmessage.h>
10 #include <consensus/amount.h>
11 #include <interfaces/chain.h>
12 #include <pubkey.h>
13 #include <script/script.h>
15 #include <util/fs.h>
16 #include <util/result.h>
17 #include <util/ui_change_type.h>
18 
19 #include <cstdint>
20 #include <functional>
21 #include <map>
22 #include <memory>
23 #include <string>
24 #include <tuple>
25 #include <type_traits>
26 #include <utility>
27 #include <vector>
28 
29 class CFeeRate;
30 class CKey;
31 enum class FeeReason;
32 enum class OutputType;
34 struct bilingual_str;
35 namespace common {
36 enum class PSBTError;
37 } // namespace common
38 namespace node {
39 enum class TransactionError;
40 } // namespace node
41 namespace wallet {
42 class CCoinControl;
43 class CWallet;
44 enum class AddressPurpose;
45 enum isminetype : unsigned int;
46 struct CRecipient;
47 struct WalletContext;
48 using isminefilter = std::underlying_type<isminetype>::type;
49 } // namespace wallet
50 
51 namespace interfaces {
52 
53 class Handler;
54 struct WalletAddress;
55 struct WalletBalances;
56 struct WalletTx;
57 struct WalletTxOut;
58 struct WalletTxStatus;
59 struct WalletMigrationResult;
60 
61 using WalletOrderForm = std::vector<std::pair<std::string, std::string>>;
62 using WalletValueMap = std::map<std::string, std::string>;
63 
65 class Wallet
66 {
67 public:
68  virtual ~Wallet() = default;
69 
71  virtual bool encryptWallet(const SecureString& wallet_passphrase) = 0;
72 
74  virtual bool isCrypted() = 0;
75 
77  virtual bool lock() = 0;
78 
80  virtual bool unlock(const SecureString& wallet_passphrase) = 0;
81 
83  virtual bool isLocked() = 0;
84 
86  virtual bool changeWalletPassphrase(const SecureString& old_wallet_passphrase,
87  const SecureString& new_wallet_passphrase) = 0;
88 
90  virtual void abortRescan() = 0;
91 
93  virtual bool backupWallet(const std::string& filename) = 0;
94 
96  virtual std::string getWalletName() = 0;
97 
98  // Get a new address.
99  virtual util::Result<CTxDestination> getNewDestination(const OutputType type, const std::string& label) = 0;
100 
102  virtual bool getPubKey(const CScript& script, const CKeyID& address, CPubKey& pub_key) = 0;
103 
105  virtual SigningResult signMessage(const std::string& message, const PKHash& pkhash, std::string& str_sig) = 0;
106 
108  virtual bool isSpendable(const CTxDestination& dest) = 0;
109 
111  virtual bool haveWatchOnly() = 0;
112 
114  virtual bool setAddressBook(const CTxDestination& dest, const std::string& name, const std::optional<wallet::AddressPurpose>& purpose) = 0;
115 
116  // Remove address.
117  virtual bool delAddressBook(const CTxDestination& dest) = 0;
118 
120  virtual bool getAddress(const CTxDestination& dest,
121  std::string* name,
122  wallet::isminetype* is_mine,
123  wallet::AddressPurpose* purpose) = 0;
124 
126  virtual std::vector<WalletAddress> getAddresses() = 0;
127 
129  virtual std::vector<std::string> getAddressReceiveRequests() = 0;
130 
132  virtual bool setAddressReceiveRequest(const CTxDestination& dest, const std::string& id, const std::string& value) = 0;
133 
136 
138  virtual bool lockCoin(const COutPoint& output, const bool write_to_db) = 0;
139 
141  virtual bool unlockCoin(const COutPoint& output) = 0;
142 
144  virtual bool isLockedCoin(const COutPoint& output) = 0;
145 
147  virtual void listLockedCoins(std::vector<COutPoint>& outputs) = 0;
148 
150  virtual util::Result<CTransactionRef> createTransaction(const std::vector<wallet::CRecipient>& recipients,
151  const wallet::CCoinControl& coin_control,
152  bool sign,
153  int& change_pos,
154  CAmount& fee) = 0;
155 
158  WalletValueMap value_map,
159  WalletOrderForm order_form) = 0;
160 
162  virtual bool transactionCanBeAbandoned(const uint256& txid) = 0;
163 
165  virtual bool abandonTransaction(const uint256& txid) = 0;
166 
168  virtual bool transactionCanBeBumped(const uint256& txid) = 0;
169 
171  virtual bool createBumpTransaction(const uint256& txid,
172  const wallet::CCoinControl& coin_control,
173  std::vector<bilingual_str>& errors,
174  CAmount& old_fee,
175  CAmount& new_fee,
176  CMutableTransaction& mtx) = 0;
177 
179  virtual bool signBumpTransaction(CMutableTransaction& mtx) = 0;
180 
182  virtual bool commitBumpTransaction(const uint256& txid,
183  CMutableTransaction&& mtx,
184  std::vector<bilingual_str>& errors,
185  uint256& bumped_txid) = 0;
186 
188  virtual CTransactionRef getTx(const uint256& txid) = 0;
189 
191  virtual WalletTx getWalletTx(const uint256& txid) = 0;
192 
194  virtual std::set<WalletTx> getWalletTxs() = 0;
195 
197  virtual bool tryGetTxStatus(const uint256& txid,
198  WalletTxStatus& tx_status,
199  int& num_blocks,
200  int64_t& block_time) = 0;
201 
203  virtual WalletTx getWalletTxDetails(const uint256& txid,
204  WalletTxStatus& tx_status,
205  WalletOrderForm& order_form,
206  bool& in_mempool,
207  int& num_blocks) = 0;
208 
210  virtual std::optional<common::PSBTError> fillPSBT(int sighash_type,
211  bool sign,
212  bool bip32derivs,
213  size_t* n_signed,
215  bool& complete) = 0;
216 
219 
221  virtual bool tryGetBalances(WalletBalances& balances, uint256& block_hash) = 0;
222 
224  virtual CAmount getBalance() = 0;
225 
227  virtual CAmount getAvailableBalance(const wallet::CCoinControl& coin_control) = 0;
228 
230  virtual wallet::isminetype txinIsMine(const CTxIn& txin) = 0;
231 
233  virtual wallet::isminetype txoutIsMine(const CTxOut& txout) = 0;
234 
236  virtual CAmount getDebit(const CTxIn& txin, wallet::isminefilter filter) = 0;
237 
239  virtual CAmount getCredit(const CTxOut& txout, wallet::isminefilter filter) = 0;
240 
243  using CoinsList = std::map<CTxDestination, std::vector<std::tuple<COutPoint, WalletTxOut>>>;
244  virtual CoinsList listCoins() = 0;
245 
247  virtual std::vector<WalletTxOut> getCoins(const std::vector<COutPoint>& outputs) = 0;
248 
250  virtual CAmount getRequiredFee(unsigned int tx_bytes) = 0;
251 
253  virtual CAmount getMinimumFee(unsigned int tx_bytes,
254  const wallet::CCoinControl& coin_control,
255  int* returned_target,
256  FeeReason* reason) = 0;
257 
259  virtual unsigned int getConfirmTarget() = 0;
260 
261  // Return whether HD enabled.
262  virtual bool hdEnabled() = 0;
263 
264  // Return whether the wallet is blank.
265  virtual bool canGetAddresses() = 0;
266 
267  // Return whether private keys enabled.
268  virtual bool privateKeysDisabled() = 0;
269 
270  // Return whether the wallet contains a Taproot scriptPubKeyMan
271  virtual bool taprootEnabled() = 0;
272 
273  // Return whether wallet uses an external signer.
274  virtual bool hasExternalSigner() = 0;
275 
276  // Get default address type.
278 
281 
282  // Remove wallet.
283  virtual void remove() = 0;
284 
286  virtual bool isLegacy() = 0;
287 
289  using UnloadFn = std::function<void()>;
290  virtual std::unique_ptr<Handler> handleUnload(UnloadFn fn) = 0;
291 
293  using ShowProgressFn = std::function<void(const std::string& title, int progress)>;
294  virtual std::unique_ptr<Handler> handleShowProgress(ShowProgressFn fn) = 0;
295 
297  using StatusChangedFn = std::function<void()>;
298  virtual std::unique_ptr<Handler> handleStatusChanged(StatusChangedFn fn) = 0;
299 
301  using AddressBookChangedFn = std::function<void(const CTxDestination& address,
302  const std::string& label,
303  bool is_mine,
304  wallet::AddressPurpose purpose,
305  ChangeType status)>;
306  virtual std::unique_ptr<Handler> handleAddressBookChanged(AddressBookChangedFn fn) = 0;
307 
309  using TransactionChangedFn = std::function<void(const uint256& txid, ChangeType status)>;
310  virtual std::unique_ptr<Handler> handleTransactionChanged(TransactionChangedFn fn) = 0;
311 
313  using WatchOnlyChangedFn = std::function<void(bool have_watch_only)>;
314  virtual std::unique_ptr<Handler> handleWatchOnlyChanged(WatchOnlyChangedFn fn) = 0;
315 
317  using CanGetAddressesChangedFn = std::function<void()>;
318  virtual std::unique_ptr<Handler> handleCanGetAddressesChanged(CanGetAddressesChangedFn fn) = 0;
319 
321  virtual wallet::CWallet* wallet() { return nullptr; }
322 };
323 
327 class WalletLoader : public ChainClient
328 {
329 public:
331  virtual util::Result<std::unique_ptr<Wallet>> createWallet(const std::string& name, const SecureString& passphrase, uint64_t wallet_creation_flags, std::vector<bilingual_str>& warnings) = 0;
332 
334  virtual util::Result<std::unique_ptr<Wallet>> loadWallet(const std::string& name, std::vector<bilingual_str>& warnings) = 0;
335 
337  virtual std::string getWalletDir() = 0;
338 
340  virtual util::Result<std::unique_ptr<Wallet>> restoreWallet(const fs::path& backup_file, const std::string& wallet_name, std::vector<bilingual_str>& warnings) = 0;
341 
343  virtual util::Result<WalletMigrationResult> migrateWallet(const std::string& name, const SecureString& passphrase) = 0;
344 
346  virtual std::vector<std::string> listWalletDir() = 0;
347 
349  virtual std::vector<std::unique_ptr<Wallet>> getWallets() = 0;
350 
354  using LoadWalletFn = std::function<void(std::unique_ptr<Wallet> wallet)>;
355  virtual std::unique_ptr<Handler> handleLoadWallet(LoadWalletFn fn) = 0;
356 
358  virtual wallet::WalletContext* context() { return nullptr; }
359 };
360 
363 {
367  std::string name;
368 
370  : dest(std::move(dest)), is_mine(is_mine), purpose(std::move(purpose)), name(std::move(name))
371  {
372  }
373 };
374 
377 {
381  bool have_watch_only = false;
385 
386  bool balanceChanged(const WalletBalances& prev) const
387  {
388  return balance != prev.balance || unconfirmed_balance != prev.unconfirmed_balance ||
392  }
393 };
394 
395 // Wallet transaction information.
396 struct WalletTx
397 {
399  std::vector<wallet::isminetype> txin_is_mine;
400  std::vector<wallet::isminetype> txout_is_mine;
401  std::vector<bool> txout_is_change;
402  std::vector<CTxDestination> txout_address;
403  std::vector<wallet::isminetype> txout_address_is_mine;
407  int64_t time;
408  std::map<std::string, std::string> value_map;
410 
411  bool operator<(const WalletTx& a) const { return tx->GetHash() < a.tx->GetHash(); }
412 };
413 
416 {
420  unsigned int time_received;
421  uint32_t lock_time;
426 };
427 
430 {
432  int64_t time;
434  bool is_spent = false;
435 };
436 
439 {
440  std::unique_ptr<Wallet> wallet;
441  std::optional<std::string> watchonly_wallet_name;
442  std::optional<std::string> solvables_wallet_name;
444 };
445 
448 std::unique_ptr<Wallet> MakeWallet(wallet::WalletContext& context, const std::shared_ptr<wallet::CWallet>& wallet);
449 
452 std::unique_ptr<WalletLoader> MakeWalletLoader(Chain& chain, ArgsManager& args);
453 
454 } // namespace interfaces
455 
456 #endif // BITCOIN_INTERFACES_WALLET_H
std::variant< CNoDestination, PubKeyDestination, PKHash, ScriptHash, WitnessV0ScriptHash, WitnessV0KeyHash, WitnessV1Taproot, WitnessUnknown > CTxDestination
A txout script categorized into standard templates.
Definition: addresstype.h:131
int64_t CAmount
Amount in satoshis (Can be negative)
Definition: amount.h:12
ArgsManager & args
Definition: bitcoind.cpp:270
Fee rate in satoshis per kilovirtualbyte: CAmount / kvB.
Definition: feerate.h:33
An encapsulated private key.
Definition: key.h:33
A reference to a CKey: the Hash160 of its serialized public key.
Definition: pubkey.h:24
An outpoint - a combination of a transaction hash and an index n into its vout.
Definition: transaction.h:29
An encapsulated public key.
Definition: pubkey.h:34
Serialized script, used inside transaction inputs and outputs.
Definition: script.h:414
An input of a transaction.
Definition: transaction.h:67
An output of a transaction.
Definition: transaction.h:150
Path class wrapper to block calls to the fs::path(std::string) implicit constructor and the fs::path:...
Definition: fs.h:33
Interface to let node manage chain clients (wallets, or maybe tools for monitoring and analysis in th...
Definition: chain.h:372
Interface giving clients (wallet processes, maybe other analysis tools in the future) ability to acce...
Definition: chain.h:124
Interface for accessing a wallet.
Definition: wallet.h:66
virtual bool unlockCoin(const COutPoint &output)=0
Unlock coin.
virtual CoinsList listCoins()=0
virtual CAmount getCredit(const CTxOut &txout, wallet::isminefilter filter)=0
Return credit amount if transaction input belongs to wallet.
virtual bool getPubKey(const CScript &script, const CKeyID &address, CPubKey &pub_key)=0
Get public key.
std::function< void(const std::string &title, int progress)> ShowProgressFn
Register handler for show progress messages.
Definition: wallet.h:293
virtual std::vector< WalletAddress > getAddresses()=0
Get wallet address list.
virtual WalletTx getWalletTx(const uint256 &txid)=0
Get transaction information.
virtual bool tryGetTxStatus(const uint256 &txid, WalletTxStatus &tx_status, int &num_blocks, int64_t &block_time)=0
Try to get updated status for a particular transaction, if possible without blocking.
virtual bool encryptWallet(const SecureString &wallet_passphrase)=0
Encrypt wallet.
virtual wallet::isminetype txoutIsMine(const CTxOut &txout)=0
Return whether transaction output belongs to wallet.
std::function< void(bool have_watch_only)> WatchOnlyChangedFn
Register handler for watchonly changed messages.
Definition: wallet.h:313
virtual bool isLegacy()=0
Return whether is a legacy wallet.
std::function< void(const uint256 &txid, ChangeType status)> TransactionChangedFn
Register handler for transaction changed messages.
Definition: wallet.h:309
std::function< void()> UnloadFn
Register handler for unload message.
Definition: wallet.h:289
virtual bool isLocked()=0
Return whether wallet is locked.
virtual std::unique_ptr< Handler > handleCanGetAddressesChanged(CanGetAddressesChangedFn fn)=0
virtual util::Result< CTxDestination > getNewDestination(const OutputType type, const std::string &label)=0
virtual CAmount getAvailableBalance(const wallet::CCoinControl &coin_control)=0
Get available balance.
virtual std::unique_ptr< Handler > handleWatchOnlyChanged(WatchOnlyChangedFn fn)=0
virtual wallet::isminetype txinIsMine(const CTxIn &txin)=0
Return whether transaction input belongs to wallet.
virtual bool getAddress(const CTxDestination &dest, std::string *name, wallet::isminetype *is_mine, wallet::AddressPurpose *purpose)=0
Look up address in wallet, return whether exists.
virtual util::Result< CTransactionRef > createTransaction(const std::vector< wallet::CRecipient > &recipients, const wallet::CCoinControl &coin_control, bool sign, int &change_pos, CAmount &fee)=0
Create transaction.
std::function< void(const CTxDestination &address, const std::string &label, bool is_mine, wallet::AddressPurpose purpose, ChangeType status)> AddressBookChangedFn
Register handler for address book changed messages.
Definition: wallet.h:305
virtual util::Result< void > displayAddress(const CTxDestination &dest)=0
Display address on external signer.
virtual CAmount getRequiredFee(unsigned int tx_bytes)=0
Get required fee.
virtual bool setAddressBook(const CTxDestination &dest, const std::string &name, const std::optional< wallet::AddressPurpose > &purpose)=0
Add or update address.
virtual std::vector< WalletTxOut > getCoins(const std::vector< COutPoint > &outputs)=0
Return wallet transaction output information.
virtual std::set< WalletTx > getWalletTxs()=0
Get list of all wallet transactions.
virtual void abortRescan()=0
Abort a rescan.
virtual unsigned int getConfirmTarget()=0
Get tx confirm target.
virtual bool unlock(const SecureString &wallet_passphrase)=0
Unlock wallet.
virtual std::vector< std::string > getAddressReceiveRequests()=0
Get receive requests.
virtual bool changeWalletPassphrase(const SecureString &old_wallet_passphrase, const SecureString &new_wallet_passphrase)=0
Change wallet passphrase.
virtual std::string getWalletName()=0
Get wallet name.
virtual bool hasExternalSigner()=0
virtual bool tryGetBalances(WalletBalances &balances, uint256 &block_hash)=0
Get balances if possible without blocking.
virtual CAmount getDefaultMaxTxFee()=0
Get max tx fee.
virtual bool isSpendable(const CTxDestination &dest)=0
Return whether wallet has private key.
virtual CAmount getBalance()=0
Get balance.
virtual bool hdEnabled()=0
virtual std::unique_ptr< Handler > handleShowProgress(ShowProgressFn fn)=0
virtual bool isLockedCoin(const COutPoint &output)=0
Return whether coin is locked.
virtual bool signBumpTransaction(CMutableTransaction &mtx)=0
Sign bump transaction.
std::map< CTxDestination, std::vector< std::tuple< COutPoint, WalletTxOut > >> CoinsList
Return AvailableCoins + LockedCoins grouped by wallet address.
Definition: wallet.h:243
virtual WalletBalances getBalances()=0
Get balances.
virtual OutputType getDefaultAddressType()=0
virtual std::unique_ptr< Handler > handleUnload(UnloadFn fn)=0
virtual bool transactionCanBeBumped(const uint256 &txid)=0
Return whether transaction can be bumped.
virtual bool backupWallet(const std::string &filename)=0
Back up wallet.
virtual void commitTransaction(CTransactionRef tx, WalletValueMap value_map, WalletOrderForm order_form)=0
Commit transaction.
virtual CTransactionRef getTx(const uint256 &txid)=0
Get a transaction.
virtual void listLockedCoins(std::vector< COutPoint > &outputs)=0
List locked coins.
virtual bool lockCoin(const COutPoint &output, const bool write_to_db)=0
Lock coin.
virtual bool createBumpTransaction(const uint256 &txid, const wallet::CCoinControl &coin_control, std::vector< bilingual_str > &errors, CAmount &old_fee, CAmount &new_fee, CMutableTransaction &mtx)=0
Create bump transaction.
virtual WalletTx getWalletTxDetails(const uint256 &txid, WalletTxStatus &tx_status, WalletOrderForm &order_form, bool &in_mempool, int &num_blocks)=0
Get transaction details.
virtual ~Wallet()=default
virtual bool delAddressBook(const CTxDestination &dest)=0
virtual void remove()=0
virtual bool commitBumpTransaction(const uint256 &txid, CMutableTransaction &&mtx, std::vector< bilingual_str > &errors, uint256 &bumped_txid)=0
Commit bump transaction.
std::function< void()> StatusChangedFn
Register handler for status changed messages.
Definition: wallet.h:297
virtual bool transactionCanBeAbandoned(const uint256 &txid)=0
Return whether transaction can be abandoned.
virtual std::unique_ptr< Handler > handleStatusChanged(StatusChangedFn fn)=0
virtual bool haveWatchOnly()=0
Return whether wallet has watch only keys.
virtual CAmount getDebit(const CTxIn &txin, wallet::isminefilter filter)=0
Return debit amount if transaction input belongs to wallet.
virtual wallet::CWallet * wallet()
Return pointer to internal wallet class, useful for testing.
Definition: wallet.h:321
virtual std::unique_ptr< Handler > handleAddressBookChanged(AddressBookChangedFn fn)=0
virtual bool setAddressReceiveRequest(const CTxDestination &dest, const std::string &id, const std::string &value)=0
Save or remove receive request.
virtual bool taprootEnabled()=0
virtual SigningResult signMessage(const std::string &message, const PKHash &pkhash, std::string &str_sig)=0
Sign message.
virtual bool abandonTransaction(const uint256 &txid)=0
Abandon transaction.
virtual std::optional< common::PSBTError > fillPSBT(int sighash_type, bool sign, bool bip32derivs, size_t *n_signed, PartiallySignedTransaction &psbtx, bool &complete)=0
Fill PSBT.
virtual bool privateKeysDisabled()=0
virtual bool lock()=0
Lock wallet.
std::function< void()> CanGetAddressesChangedFn
Register handler for keypool changed messages.
Definition: wallet.h:317
virtual CAmount getMinimumFee(unsigned int tx_bytes, const wallet::CCoinControl &coin_control, int *returned_target, FeeReason *reason)=0
Get minimum fee.
virtual bool canGetAddresses()=0
virtual bool isCrypted()=0
Return whether wallet is encrypted.
virtual std::unique_ptr< Handler > handleTransactionChanged(TransactionChangedFn fn)=0
Wallet chain client that in addition to having chain client methods for starting up,...
Definition: wallet.h:328
virtual std::string getWalletDir()=0
Return default wallet directory.
virtual util::Result< std::unique_ptr< Wallet > > createWallet(const std::string &name, const SecureString &passphrase, uint64_t wallet_creation_flags, std::vector< bilingual_str > &warnings)=0
Create new wallet.
virtual std::vector< std::unique_ptr< Wallet > > getWallets()=0
Return interfaces for accessing wallets (if any).
virtual std::vector< std::string > listWalletDir()=0
Return available wallets in wallet directory.
virtual util::Result< std::unique_ptr< Wallet > > loadWallet(const std::string &name, std::vector< bilingual_str > &warnings)=0
Load existing wallet.
virtual util::Result< WalletMigrationResult > migrateWallet(const std::string &name, const SecureString &passphrase)=0
Migrate a wallet.
virtual util::Result< std::unique_ptr< Wallet > > restoreWallet(const fs::path &backup_file, const std::string &wallet_name, std::vector< bilingual_str > &warnings)=0
Restore backup wallet.
virtual wallet::WalletContext * context()
Return pointer to internal context, useful for testing.
Definition: wallet.h:358
virtual std::unique_ptr< Handler > handleLoadWallet(LoadWalletFn fn)=0
std::function< void(std::unique_ptr< Wallet > wallet)> LoadWalletFn
Register handler for load wallet messages.
Definition: wallet.h:354
256-bit opaque blob.
Definition: uint256.h:127
Coin Control Features.
Definition: coincontrol.h:81
A CWallet maintains a set of transactions and balances, and provides the ability to create new transa...
Definition: wallet.h:303
Definition: args.cpp:840
PSBTError
Definition: types.h:17
std::unique_ptr< WalletLoader > MakeWalletLoader(Chain &chain, ArgsManager &args)
Return implementation of ChainClient interface for a wallet loader.
Definition: dummywallet.cpp:64
std::vector< std::pair< std::string, std::string > > WalletOrderForm
Definition: wallet.h:61
std::unique_ptr< Wallet > MakeWallet(wallet::WalletContext &context, const std::shared_ptr< wallet::CWallet > &wallet)
Return implementation of Wallet interface.
Definition: interfaces.cpp:690
std::map< std::string, std::string > WalletValueMap
Definition: wallet.h:62
Definition: messages.h:20
TransactionError
Definition: types.h:19
std::underlying_type< isminetype >::type isminefilter
used for bitflags of isminetype
Definition: wallet.h:48
isminetype
IsMine() return codes, which depend on ScriptPubKeyMan implementation.
Definition: types.h:41
AddressPurpose
Address purpose field that has been been stored with wallet sending and receiving addresses since BIP...
Definition: types.h:61
OutputType
Definition: outputtype.h:17
FeeReason
Definition: fees.h:60
std::shared_ptr< const CTransaction > CTransactionRef
Definition: transaction.h:423
const char * name
Definition: rest.cpp:49
std::basic_string< char, std::char_traits< char >, secure_allocator< char > > SecureString
Definition: secure.h:58
SigningResult
Definition: signmessage.h:43
A mutable version of CTransaction.
Definition: transaction.h:378
A version of CTransaction with the PSBT format.
Definition: psbt.h:951
Bilingual messages:
Definition: translation.h:18
Information about one wallet address.
Definition: wallet.h:363
CTxDestination dest
Definition: wallet.h:364
wallet::isminetype is_mine
Definition: wallet.h:365
wallet::AddressPurpose purpose
Definition: wallet.h:366
WalletAddress(CTxDestination dest, wallet::isminetype is_mine, wallet::AddressPurpose purpose, std::string name)
Definition: wallet.h:369
Collection of wallet balances.
Definition: wallet.h:377
CAmount unconfirmed_watch_only_balance
Definition: wallet.h:383
CAmount immature_watch_only_balance
Definition: wallet.h:384
bool balanceChanged(const WalletBalances &prev) const
Definition: wallet.h:386
Migrated wallet info.
Definition: wallet.h:439
std::optional< std::string > watchonly_wallet_name
Definition: wallet.h:441
std::optional< std::string > solvables_wallet_name
Definition: wallet.h:442
std::unique_ptr< Wallet > wallet
Definition: wallet.h:440
std::vector< wallet::isminetype > txin_is_mine
Definition: wallet.h:399
std::vector< CTxDestination > txout_address
Definition: wallet.h:402
std::vector< wallet::isminetype > txout_address_is_mine
Definition: wallet.h:403
CTransactionRef tx
Definition: wallet.h:398
std::vector< bool > txout_is_change
Definition: wallet.h:401
std::map< std::string, std::string > value_map
Definition: wallet.h:408
bool operator<(const WalletTx &a) const
Definition: wallet.h:411
std::vector< wallet::isminetype > txout_is_mine
Definition: wallet.h:400
Wallet transaction output.
Definition: wallet.h:430
Updated transaction status.
Definition: wallet.h:416
unsigned int time_received
Definition: wallet.h:420
WalletContext struct containing references to state shared between CWallet instances,...
Definition: context.h:36
ChangeType
General change type (added, updated, removed).
Definition: ui_change_type.h:9