Bitcoin Core  24.99.0
P2P Digital Currency
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
wallet Namespace Reference

Namespaces

 DBKeys
 
 feebumper
 
 wallet_crypto_tests
 
 WalletTool
 

Classes

struct  WalletDatabaseFileId
 
class  BerkeleyEnvironment
 
class  BerkeleyDatabase
 An instance of this class represents one database. More...
 
class  SafeDbt
 RAII class that automatically cleanses its data on destruction. More...
 
class  BerkeleyCursor
 
class  BerkeleyBatch
 RAII class that provides access to a Berkeley database. More...
 
class  CCoinControl
 Coin Control Features. More...
 
struct  COutput
 A UTXO under consideration for use in funding a new transaction. More...
 
struct  CoinSelectionParams
 Parameters for one iteration of Coin Selection. More...
 
struct  CoinEligibilityFilter
 Parameters for filtering which OutputGroups we may use in coin selection. More...
 
struct  OutputGroup
 A group of UTXOs paid to the same output script. More...
 
struct  Groups
 
struct  OutputGroupTypeMap
 Stores several 'Groups' whose were mapped by output type. More...
 
struct  SelectionResult
 
struct  WalletContext
 WalletContext struct containing references to state shared between CWallet instances, like the reference to the chain interface, and the list of opened wallets. More...
 
class  CMasterKey
 Private key encryption is done based on a CMasterKey, which holds a salt and random encryption key. More...
 
class  CCrypter
 Encryption/decryption context with key information. More...
 
class  DatabaseCursor
 
class  DatabaseBatch
 RAII class that provides access to a WalletDatabase. More...
 
class  WalletDatabase
 An instance of this class represents one database. More...
 
class  DummyCursor
 
class  DummyBatch
 RAII class that provides access to a DummyDatabase. More...
 
class  DummyDatabase
 A dummy WalletDatabase that does nothing and never fails. More...
 
struct  DatabaseOptions
 
class  ExternalSignerScriptPubKeyMan
 
class  WalletInit
 
struct  CachableAmount
 Cachable amount subdivided into watchonly and spendable parts. More...
 
struct  COutputEntry
 
struct  Balance
 
class  DescribeWalletAddressVisitor
 
struct  ImportData
 
struct  tallyitem
 
class  WalletStorage
 
class  CKeyPool
 A key from a CWallet's keypool. More...
 
struct  WalletDestination
 
class  ScriptPubKeyMan
 
class  LegacyScriptPubKeyMan
 
class  LegacySigningProvider
 Wraps a LegacyScriptPubKeyMan so that it can be returned in a new unique_ptr. More...
 
class  DescriptorScriptPubKeyMan
 
struct  TxSize
 
struct  CoinsResult
 COutputs available for spending, stored by OutputType. More...
 
struct  CoinFilterParams
 
struct  SelectionFilter
 
struct  PreSelectedInputs
 
struct  CreatedTransactionResult
 
class  SQLiteCursor
 
class  SQLiteBatch
 RAII class that provides access to a WalletDatabase. More...
 
class  SQLiteDatabase
 An instance of this class represents one SQLite3 database. More...
 
class  GroupVerifier
 
struct  InitWalletDirTestingSetup
 
class  TestCrypter
 
struct  WalletTestingSetup
 Testing setup and teardown for wallet. More...
 
class  ListCoinsTestingSetup
 
class  FailCursor
 
class  FailBatch
 RAII class that provides access to a FailDatabase. More...
 
class  FailDatabase
 A dummy WalletDatabase that does nothing, only fails if needed. More...
 
class  DummyDescriptor
 
struct  TxStateConfirmed
 State of transaction confirmed in a block. More...
 
struct  TxStateInMempool
 State of transaction added to mempool. More...
 
struct  TxStateConflicted
 State of rejected transaction that conflicts with a confirmed block. More...
 
struct  TxStateInactive
 State of transaction not confirmed or conflicting with a known block and not in the mempool. More...
 
struct  TxStateUnrecognized
 State of transaction loaded in an unrecognized state with unexpected hash or index values. More...
 
class  CMerkleTx
 Legacy class used for deserializing vtxPrev for backwards compatibility. More...
 
class  CWalletTx
 A transaction with a bunch of additional info that only the owner cares about. More...
 
struct  WalletTxOrderComparator
 
class  ReserveDestination
 A wrapper to reserve an address from a wallet. More...
 
class  CAddressBookData
 Address book data. More...
 
struct  CRecipient
 
class  CWallet
 A CWallet maintains a set of transactions and balances, and provides the ability to create new transactions. More...
 
class  WalletRescanReserver
 RAII object to check and reserve a wallet rescan. More...
 
struct  MigrationResult
 
class  CWalletScanState
 
class  CHDChain
 
class  CKeyMetadata
 
class  WalletBatch
 Access to the wallet database. More...
 
class  WalletDescriptor
 Descriptor with some wallet metadata. More...
 
struct  MigrationData
 struct containing information needed for migrating legacy wallets to descriptor wallets More...
 

Typedefs

using isminefilter = std::underlying_type< isminetype >::type
 used for bitflags of isminetype More...
 
typedef std::map< CoinEligibilityFilter, OutputGroupTypeMapFilteredOutputGroups
 
using LoadWalletFn = std::function< void(std::unique_ptr< interfaces::Wallet > wallet)>
 
typedef std::vector< unsigned char, secure_allocator< unsigned char > > CKeyingMaterial
 
typedef std::pair< std::vector< unsigned char >, std::vector< unsigned char > > KeyValPair
 
typedef std::vector< unsigned char > valtype
 
typedef std::set< std::shared_ptr< COutput > > CoinSet
 
using TxState = std::variant< TxStateConfirmed, TxStateInMempool, TxStateConflicted, TxStateInactive, TxStateUnrecognized >
 All possible CWalletTx states. More...
 
using SyncTxState = std::variant< TxStateConfirmed, TxStateInMempool, TxStateInactive >
 Subset of states transaction sync logic is implemented to handle. More...
 
typedef std::map< std::string, std::string > mapValue_t
 
using KeyFilterFn = std::function< bool(const std::string &)>
 Callback for filtering key types to deserialize in ReadKeyValue. More...
 

Enumerations

enum class  SelectionAlgorithm : uint8_t { BNB = 0 , KNAPSACK = 1 , SRD = 2 , MANUAL = 3 }
 
enum class  DatabaseFormat { BERKELEY , SQLITE }
 
enum class  DatabaseStatus {
  SUCCESS , FAILED_BAD_PATH , FAILED_BAD_FORMAT , FAILED_ALREADY_LOADED ,
  FAILED_ALREADY_EXISTS , FAILED_NOT_FOUND , FAILED_CREATE , FAILED_LOAD ,
  FAILED_VERIFY , FAILED_ENCRYPT , FAILED_INVALID_BACKUP_FILE
}
 
enum  isminetype : unsigned int {
  ISMINE_NO = 0 , ISMINE_WATCH_ONLY = 1 << 0 , ISMINE_SPENDABLE = 1 << 1 , ISMINE_USED = 1 << 2 ,
  ISMINE_ALL = ISMINE_WATCH_ONLY | ISMINE_SPENDABLE , ISMINE_ALL_USED = ISMINE_ALL | ISMINE_USED , ISMINE_ENUM_ELEMENTS
}
 IsMine() return codes, which depend on ScriptPubKeyMan implementation. More...
 
enum class  ScriptContext { TOP , P2SH , WITNESS_V0 }
 
enum class  DBErrors {
  LOAD_OK , CORRUPT , NONCRITICAL_ERROR , TOO_NEW ,
  EXTERNAL_SIGNER_SUPPORT_REQUIRED , LOAD_FAIL , NEED_REWRITE , NEED_RESCAN ,
  UNKNOWN_DESCRIPTOR , UNEXPECTED_LEGACY_ENTRY
}
 Error statuses for the wallet database. More...
 
enum  WalletFeature {
  FEATURE_BASE = 10500 , FEATURE_WALLETCRYPT = 40000 , FEATURE_COMPRPUBKEY = 60000 , FEATURE_HD = 130000 ,
  FEATURE_HD_SPLIT = 139900 , FEATURE_NO_DEFAULT_KEY = 159900 , FEATURE_PRE_SPLIT_KEYPOOL = 169900 , FEATURE_LATEST = FEATURE_PRE_SPLIT_KEYPOOL
}
 (client) version numbers for particular wallet features More...
 
enum  WalletFlags : uint64_t {
  WALLET_FLAG_AVOID_REUSE = (1ULL << 0) , WALLET_FLAG_KEY_ORIGIN_METADATA = (1ULL << 1) , WALLET_FLAG_LAST_HARDENED_XPUB_CACHED = (1ULL << 2) , WALLET_FLAG_DISABLE_PRIVATE_KEYS = (1ULL << 32) ,
  WALLET_FLAG_BLANK_WALLET = (1ULL << 33) , WALLET_FLAG_DESCRIPTORS = (1ULL << 34) , WALLET_FLAG_EXTERNAL_SIGNER = (1ULL << 35)
}
 

Functions

std::shared_ptr< BerkeleyEnvironmentGetBerkeleyEnv (const fs::path &env_directory, bool use_shared_memory)
 Get BerkeleyEnvironment given a directory path. More...
 
bool BerkeleyDatabaseSanityCheck ()
 Perform sanity check of runtime BDB version versus linked BDB version. More...
 
std::string BerkeleyDatabaseVersion ()
 
std::unique_ptr< BerkeleyDatabaseMakeBerkeleyDatabase (const fs::path &path, const DatabaseOptions &options, DatabaseStatus &status, bilingual_str &error)
 Return object giving access to Berkeley database at specified path. More...
 
std::optional< SelectionResultSelectCoinsBnB (std::vector< OutputGroup > &utxo_pool, const CAmount &selection_target, const CAmount &cost_of_change)
 
std::optional< SelectionResultSelectCoinsSRD (const std::vector< OutputGroup > &utxo_pool, CAmount target_value, FastRandomContext &rng)
 Select coins by Single Random Draw. More...
 
static void ApproximateBestSubset (FastRandomContext &insecure_rand, const std::vector< OutputGroup > &groups, const CAmount &nTotalLower, const CAmount &nTargetValue, std::vector< char > &vfBest, CAmount &nBest, int iterations=1000)
 Find a subset of the OutputGroups that is at least as large as, but as close as possible to, the target amount; solve subset sum. More...
 
std::optional< SelectionResultKnapsackSolver (std::vector< OutputGroup > &groups, const CAmount &nTargetValue, CAmount change_target, FastRandomContext &rng)
 
CAmount GetSelectionWaste (const std::set< std::shared_ptr< COutput >> &inputs, CAmount change_cost, CAmount target, bool use_effective_value=true)
 Compute the waste for this result given the cost of change and the opportunity cost of spending these inputs now vs in the future. More...
 
CAmount GenerateChangeTarget (const CAmount payment_value, const CAmount change_fee, FastRandomContext &rng)
 Choose a random change target for each transaction to make it harder to fingerprint the Core wallet based on the change output values of transactions it creates. More...
 
std::string GetAlgorithmName (const SelectionAlgorithm algo)
 
bool EncryptSecret (const CKeyingMaterial &vMasterKey, const CKeyingMaterial &vchPlaintext, const uint256 &nIV, std::vector< unsigned char > &vchCiphertext)
 
bool DecryptSecret (const CKeyingMaterial &vMasterKey, const std::vector< unsigned char > &vchCiphertext, const uint256 &nIV, CKeyingMaterial &vchPlaintext)
 
bool DecryptKey (const CKeyingMaterial &vMasterKey, const std::vector< unsigned char > &vchCryptedSecret, const CPubKey &vchPubKey, CKey &key)
 
std::vector< fs::pathListDatabases (const fs::path &path)
 Recursively list database paths in directory. More...
 
fs::path BDBDataFile (const fs::path &wallet_path)
 
fs::path SQLiteDataFile (const fs::path &path)
 
bool IsBDBFile (const fs::path &path)
 
bool IsSQLiteFile (const fs::path &path)
 
void ReadDatabaseArgs (const ArgsManager &args, DatabaseOptions &options)
 
void SplitWalletPath (const fs::path &wallet_path, fs::path &env_directory, std::string &database_filename)
 
std::unique_ptr< WalletDatabaseMakeDatabase (const fs::path &path, const DatabaseOptions &options, DatabaseStatus &status, bilingual_str &error)
 
bool DumpWallet (const ArgsManager &args, CWallet &wallet, bilingual_str &error)
 
static void WalletToolReleaseWallet (CWallet *wallet)
 
bool CreateFromDump (const ArgsManager &args, const std::string &name, const fs::path &wallet_path, bilingual_str &error, std::vector< bilingual_str > &warnings)
 
static feebumper::Result PreconditionChecks (const CWallet &wallet, const CWalletTx &wtx, bool require_mine, std::vector< bilingual_str > &errors) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 Check whether transaction has descendant in wallet or mempool, or has been mined, or conflicts with a mined transaction. More...
 
static feebumper::Result CheckFeeRate (const CWallet &wallet, const CWalletTx &wtx, const CFeeRate &newFeerate, const int64_t maxTxSize, CAmount old_fee, std::vector< bilingual_str > &errors)
 Check if the user provided a valid feeRate. More...
 
static CFeeRate EstimateFeeRate (const CWallet &wallet, const CWalletTx &wtx, const CAmount old_fee, const CCoinControl &coin_control)
 
CAmount GetRequiredFee (const CWallet &wallet, unsigned int nTxBytes)
 Return the minimum required absolute fee for this size based on the required fee rate. More...
 
CAmount GetMinimumFee (const CWallet &wallet, unsigned int nTxBytes, const CCoinControl &coin_control, FeeCalculation *feeCalc)
 Estimate the minimum fee considering user set parameters and the required fee. More...
 
CFeeRate GetRequiredFeeRate (const CWallet &wallet)
 Return the minimum required feerate taking into account the minimum relay feerate and user set minimum transaction feerate. More...
 
CFeeRate GetMinimumFeeRate (const CWallet &wallet, const CCoinControl &coin_control, FeeCalculation *feeCalc)
 Estimate the minimum fee rate considering user set parameters and the required fee. More...
 
CFeeRate GetDiscardRate (const CWallet &wallet)
 Return the maximum feerate for discarding change. More...
 
bool VerifyWallets (WalletContext &context)
 Responsible for reading and validating the -wallet arguments and verifying the wallet database. More...
 
bool LoadWallets (WalletContext &context)
 Load wallet databases. More...
 
void StartWallets (WalletContext &context, CScheduler &scheduler)
 Complete startup of wallets. More...
 
void FlushWallets (WalletContext &context)
 Flush all wallets in preparation for shutdown. More...
 
void StopWallets (WalletContext &context)
 Stop all wallets. Wallets will be flushed first. More...
 
void UnloadWallets (WalletContext &context)
 Close all wallets. More...
 
isminetype InputIsMine (const CWallet &wallet, const CTxIn &txin)
 
bool AllInputsMine (const CWallet &wallet, const CTransaction &tx, const isminefilter &filter)
 Returns whether all of the inputs match the filter. More...
 
CAmount OutputGetCredit (const CWallet &wallet, const CTxOut &txout, const isminefilter &filter)
 
CAmount TxGetCredit (const CWallet &wallet, const CTransaction &tx, const isminefilter &filter)
 
bool ScriptIsChange (const CWallet &wallet, const CScript &script)
 
bool OutputIsChange (const CWallet &wallet, const CTxOut &txout)
 
CAmount OutputGetChange (const CWallet &wallet, const CTxOut &txout)
 
CAmount TxGetChange (const CWallet &wallet, const CTransaction &tx)
 
static CAmount GetCachableAmount (const CWallet &wallet, const CWalletTx &wtx, CWalletTx::AmountType type, const isminefilter &filter)
 
CAmount CachedTxGetCredit (const CWallet &wallet, const CWalletTx &wtx, const isminefilter &filter)
 
CAmount CachedTxGetDebit (const CWallet &wallet, const CWalletTx &wtx, const isminefilter &filter)
 filter decides which addresses will count towards the debit More...
 
CAmount CachedTxGetChange (const CWallet &wallet, const CWalletTx &wtx)
 
CAmount CachedTxGetImmatureCredit (const CWallet &wallet, const CWalletTx &wtx, const isminefilter &filter)
 
CAmount CachedTxGetAvailableCredit (const CWallet &wallet, const CWalletTx &wtx, const isminefilter &filter)
 
void CachedTxGetAmounts (const CWallet &wallet, const CWalletTx &wtx, std::list< COutputEntry > &listReceived, std::list< COutputEntry > &listSent, CAmount &nFee, const isminefilter &filter, bool include_change)
 
bool CachedTxIsFromMe (const CWallet &wallet, const CWalletTx &wtx, const isminefilter &filter)
 
bool CachedTxIsTrusted (const CWallet &wallet, const CWalletTx &wtx, std::set< uint256 > &trusted_parents)
 
bool CachedTxIsTrusted (const CWallet &wallet, const CWalletTx &wtx)
 
Balance GetBalance (const CWallet &wallet, const int min_depth, bool avoid_reuse)
 
std::map< CTxDestination, CAmountGetAddressBalances (const CWallet &wallet)
 
std::set< std::set< CTxDestination > > GetAddressGroupings (const CWallet &wallet)
 
RPCHelpMan getnewaddress ()
 
RPCHelpMan getrawchangeaddress ()
 
RPCHelpMan setlabel ()
 
RPCHelpMan listaddressgroupings ()
 
RPCHelpMan addmultisigaddress ()
 
RPCHelpMan keypoolrefill ()
 
RPCHelpMan newkeypool ()
 
static UniValue DescribeWalletAddress (const CWallet &wallet, const CTxDestination &dest)
 
RPCHelpMan getaddressinfo ()
 
RPCHelpMan getaddressesbylabel ()
 
RPCHelpMan listlabels ()
 
RPCHelpMan walletdisplayaddress ()
 
static std::string EncodeDumpString (const std::string &str)
 
static std::string DecodeDumpString (const std::string &str)
 
static bool GetWalletAddressesForKey (const LegacyScriptPubKeyMan *spk_man, const CWallet &wallet, const CKeyID &keyid, std::string &strAddr, std::string &strLabel) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 
static void RescanWallet (CWallet &wallet, const WalletRescanReserver &reserver, int64_t time_begin=TIMESTAMP_MIN, bool update=true)
 
static void EnsureBlockDataFromTime (const CWallet &wallet, int64_t timestamp)
 
RPCHelpMan importprivkey ()
 
RPCHelpMan importaddress ()
 
RPCHelpMan importprunedfunds ()
 
RPCHelpMan removeprunedfunds ()
 
RPCHelpMan importpubkey ()
 
RPCHelpMan importwallet ()
 
RPCHelpMan dumpprivkey ()
 
RPCHelpMan dumpwallet ()
 
static std::string RecurseImportData (const CScript &script, ImportData &import_data, const ScriptContext script_ctx)
 
static UniValue ProcessImportLegacy (ImportData &import_data, std::map< CKeyID, CPubKey > &pubkey_map, std::map< CKeyID, CKey > &privkey_map, std::set< CScript > &script_pub_keys, bool &have_solving_data, const UniValue &data, std::vector< CKeyID > &ordered_pubkeys)
 
static UniValue ProcessImportDescriptor (ImportData &import_data, std::map< CKeyID, CPubKey > &pubkey_map, std::map< CKeyID, CKey > &privkey_map, std::set< CScript > &script_pub_keys, bool &have_solving_data, const UniValue &data, std::vector< CKeyID > &ordered_pubkeys)
 
static UniValue ProcessImport (CWallet &wallet, const UniValue &data, const int64_t timestamp) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 
static int64_t GetImportTimestamp (const UniValue &data, int64_t now)
 
RPCHelpMan importmulti ()
 
static UniValue ProcessDescriptorImport (CWallet &wallet, const UniValue &data, const int64_t timestamp) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 
RPCHelpMan importdescriptors ()
 
RPCHelpMan listdescriptors ()
 
RPCHelpMan backupwallet ()
 
RPCHelpMan restorewallet ()
 
static CAmount GetReceived (const CWallet &wallet, const UniValue &params, bool by_label) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 
RPCHelpMan getreceivedbyaddress ()
 
RPCHelpMan getreceivedbylabel ()
 
RPCHelpMan getbalance ()
 
RPCHelpMan getunconfirmedbalance ()
 
RPCHelpMan lockunspent ()
 
RPCHelpMan listlockunspent ()
 
RPCHelpMan getbalances ()
 
RPCHelpMan listunspent ()
 
RPCHelpMan walletpassphrase ()
 
RPCHelpMan walletpassphrasechange ()
 
RPCHelpMan walletlock ()
 
RPCHelpMan encryptwallet ()
 
RPCHelpMan signmessage ()
 
static void ParseRecipients (const UniValue &address_amounts, const UniValue &subtract_fee_outputs, std::vector< CRecipient > &recipients)
 
static void InterpretFeeEstimationInstructions (const UniValue &conf_target, const UniValue &estimate_mode, const UniValue &fee_rate, UniValue &options)
 
static UniValue FinishTransaction (const std::shared_ptr< CWallet > pwallet, const UniValue &options, const CMutableTransaction &rawTx)
 
static void PreventOutdatedOptions (const UniValue &options)
 
UniValue SendMoney (CWallet &wallet, const CCoinControl &coin_control, std::vector< CRecipient > &recipients, mapValue_t map_value, bool verbose)
 
static void SetFeeEstimateMode (const CWallet &wallet, CCoinControl &cc, const UniValue &conf_target, const UniValue &estimate_mode, const UniValue &fee_rate, bool override_min_fee)
 Update coin control with fee estimation based on the given parameters. More...
 
RPCHelpMan sendtoaddress ()
 
RPCHelpMan sendmany ()
 
RPCHelpMan settxfee ()
 
static std::vector< RPCArgFundTxDoc (bool solving_data=true)
 
void FundTransaction (CWallet &wallet, CMutableTransaction &tx, CAmount &fee_out, int &change_position, const UniValue &options, CCoinControl &coinControl, bool override_min_fee)
 
static void SetOptionsInputWeights (const UniValue &inputs, UniValue &options)
 
RPCHelpMan fundrawtransaction ()
 
RPCHelpMan signrawtransactionwithwallet ()
 
static std::vector< RPCArgOutputsDoc ()
 
static RPCHelpMan bumpfee_helper (std::string method_name)
 
RPCHelpMan bumpfee ()
 
RPCHelpMan psbtbumpfee ()
 
RPCHelpMan send ()
 
RPCHelpMan sendall ()
 
RPCHelpMan walletprocesspsbt ()
 
RPCHelpMan walletcreatefundedpsbt ()
 
static void WalletTxToJSON (const CWallet &wallet, const CWalletTx &wtx, UniValue &entry) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 
static UniValue ListReceived (const CWallet &wallet, const UniValue &params, const bool by_label, const bool include_immature_coinbase) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 
RPCHelpMan listreceivedbyaddress ()
 
RPCHelpMan listreceivedbylabel ()
 
static void MaybePushAddress (UniValue &entry, const CTxDestination &dest)
 
template<class Vec >
static void ListTransactions (const CWallet &wallet, const CWalletTx &wtx, int nMinDepth, bool fLong, Vec &ret, const isminefilter &filter_ismine, const std::optional< std::string > &filter_label, bool include_change=false) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 List transactions based on the given criteria. More...
 
static std::vector< RPCResultTransactionDescriptionString ()
 
RPCHelpMan listtransactions ()
 
RPCHelpMan listsinceblock ()
 
RPCHelpMan gettransaction ()
 
RPCHelpMan abandontransaction ()
 
RPCHelpMan rescanblockchain ()
 
RPCHelpMan abortrescan ()
 
int64_t ParseISO8601DateTime (const std::string &str)
 
bool GetAvoidReuseFlag (const CWallet &wallet, const UniValue &param)
 
bool ParseIncludeWatchonly (const UniValue &include_watchonly, const CWallet &wallet)
 Used by RPC commands that have an include_watchonly parameter. More...
 
bool GetWalletNameFromJSONRPCRequest (const JSONRPCRequest &request, std::string &wallet_name)
 
std::shared_ptr< CWalletGetWalletForJSONRPCRequest (const JSONRPCRequest &request)
 Figures out what wallet, if any, to use for a JSONRPCRequest. More...
 
void EnsureWalletIsUnlocked (const CWallet &wallet)
 
WalletContextEnsureWalletContext (const std::any &context)
 
LegacyScriptPubKeyManEnsureLegacyScriptPubKeyMan (CWallet &wallet, bool also_create)
 
const LegacyScriptPubKeyManEnsureConstLegacyScriptPubKeyMan (const CWallet &wallet)
 
std::string LabelFromValue (const UniValue &value)
 
void PushParentDescriptors (const CWallet &wallet, const CScript &script_pubkey, UniValue &entry)
 Fetch parent descriptors of this scriptPubKey. More...
 
void HandleWalletError (const std::shared_ptr< CWallet > wallet, DatabaseStatus &status, bilingual_str &error)
 
bool HaveKey (const SigningProvider &wallet, const CKey &key)
 Checks if a CKey is in the given CWallet compressed or otherwise. More...
 
static RPCHelpMan getwalletinfo ()
 
static RPCHelpMan listwalletdir ()
 
static RPCHelpMan listwallets ()
 
static RPCHelpMan loadwallet ()
 
static RPCHelpMan setwalletflag ()
 
static RPCHelpMan createwallet ()
 
static RPCHelpMan unloadwallet ()
 
static RPCHelpMan sethdseed ()
 
static RPCHelpMan upgradewallet ()
 
RPCHelpMan simulaterawtransaction ()
 
static RPCHelpMan migratewallet ()
 
Span< const CRPCCommandGetWalletRPCCommands ()
 
static bool KeyFilter (const std::string &type)
 
bool RecoverDatabaseFile (const ArgsManager &args, const fs::path &file_path, bilingual_str &error, std::vector< bilingual_str > &warnings)
 
static int64_t GetOldestKeyTimeInPool (const std::set< int64_t > &setKeyPool, WalletBatch &batch)
 
static bool ExtractPubKey (const CScript &dest, CPubKey &pubKeyOut)
 
static void DeriveExtKey (CExtKey &key_in, unsigned int index, CExtKey &key_out)
 Try to derive an extended key, throw if it fails. More...
 
std::vector< CKeyIDGetAffectedKeys (const CScript &spk, const SigningProvider &provider)
 
int CalculateMaximumSignedInputSize (const CTxOut &txout, const COutPoint outpoint, const SigningProvider *provider, bool can_grind_r, const CCoinControl *coin_control)
 
int CalculateMaximumSignedInputSize (const CTxOut &txout, const CWallet *pwallet, const CCoinControl *coin_control)
 Get the marginal bytes if spending the specified output from this transaction. More...
 
TxSize CalculateMaximumSignedTxSize (const CTransaction &tx, const CWallet *wallet, const std::vector< CTxOut > &txouts, const CCoinControl *coin_control=nullptr)
 Calculate the size of the transaction using CoinControl to determine whether to expect signature grinding when calculating the size of the input spend. More...
 
TxSize CalculateMaximumSignedTxSize (const CTransaction &tx, const CWallet *wallet, const CCoinControl *coin_control)
 
static OutputType GetOutputType (TxoutType type, bool is_from_p2sh)
 
util::Result< PreSelectedInputsFetchSelectedInputs (const CWallet &wallet, const CCoinControl &coin_control, const CoinSelectionParams &coin_selection_params) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 Fetch and validate coin control selected inputs. More...
 
CoinsResult AvailableCoins (const CWallet &wallet, const CCoinControl *coinControl=nullptr, std::optional< CFeeRate > feerate=std::nullopt, const CoinFilterParams &params={}) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 Populate the CoinsResult struct with vectors of available COutputs, organized by OutputType. More...
 
CoinsResult AvailableCoinsListUnspent (const CWallet &wallet, const CCoinControl *coinControl=nullptr, CoinFilterParams params={}) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 Wrapper function for AvailableCoins which skips the feerate and CoinFilterParams::only_spendable parameters. More...
 
CAmount GetAvailableBalance (const CWallet &wallet, const CCoinControl *coinControl)
 
const CTxOutFindNonChangeParentOutput (const CWallet &wallet, const COutPoint &outpoint) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 Find non-change parent output. More...
 
std::map< CTxDestination, std::vector< COutput > > ListCoins (const CWallet &wallet) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 Return list of available coins and locked coins grouped by non-change output address. More...
 
FilteredOutputGroups GroupOutputs (const CWallet &wallet, const CoinsResult &coins, const CoinSelectionParams &coin_sel_params, const std::vector< SelectionFilter > &filters, std::vector< OutputGroup > &ret_discarded_groups)
 
FilteredOutputGroups GroupOutputs (const CWallet &wallet, const CoinsResult &coins, const CoinSelectionParams &coin_sel_params, const std::vector< SelectionFilter > &filters)
 Group coins by the provided filters. More...
 
static bool HasErrorMsg (const util::Result< SelectionResult > &res)
 
util::Result< SelectionResultAttemptSelection (const CAmount &nTargetValue, OutputGroupTypeMap &groups, const CoinSelectionParams &coin_selection_params, bool allow_mixed_output_types)
 Attempt to find a valid input set that preserves privacy by not mixing OutputTypes. More...
 
util::Result< SelectionResultChooseSelectionResult (const CAmount &nTargetValue, Groups &groups, const CoinSelectionParams &coin_selection_params)
 Attempt to find a valid input set that meets the provided eligibility filter and target. More...
 
util::Result< SelectionResultSelectCoins (const CWallet &wallet, CoinsResult &available_coins, const PreSelectedInputs &pre_set_inputs, const CAmount &nTargetValue, const CCoinControl &coin_control, const CoinSelectionParams &coin_selection_params) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 Select all coins from coin_control, and if coin_control 'm_allow_other_inputs=true', call 'AutomaticCoinSelection' to select a set of coins such that nTargetValue - pre_set_inputs.total_amount is met. More...
 
util::Result< SelectionResultAutomaticCoinSelection (const CWallet &wallet, CoinsResult &available_coins, const CAmount &nTargetValue, const CoinSelectionParams &coin_selection_params) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 Select a set of coins such that nTargetValue is met; never select unconfirmed coins if they are not ours param@[in] wallet The wallet which provides data necessary to spend the selected coins param@[in] available_coins The struct of coins, organized by OutputType, available for selection prior to filtering param@[in] nTargetValue The target value param@[in] coin_selection_params Parameters for this coin selection such as feerates, whether to avoid partial spends, and whether to subtract the fee from the outputs. More...
 
static bool IsCurrentForAntiFeeSniping (interfaces::Chain &chain, const uint256 &block_hash)
 
static void DiscourageFeeSniping (CMutableTransaction &tx, FastRandomContext &rng_fast, interfaces::Chain &chain, const uint256 &block_hash, int block_height)
 Set a height-based locktime for new transactions (uses the height of the current chain tip unless we are not synced with the current chain. More...
 
static util::Result< CreatedTransactionResultCreateTransactionInternal (CWallet &wallet, const std::vector< CRecipient > &vecSend, int change_pos, const CCoinControl &coin_control, bool sign) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 
util::Result< CreatedTransactionResultCreateTransaction (CWallet &wallet, const std::vector< CRecipient > &vecSend, int change_pos, const CCoinControl &coin_control, bool sign=true)
 Create a new transaction paying the recipients with a set of coins selected by SelectCoins(); Also create the change output, when needed. More...
 
bool FundTransaction (CWallet &wallet, CMutableTransaction &tx, CAmount &nFeeRet, int &nChangePosInOut, bilingual_str &error, bool lockUnspents, const std::set< int > &setSubtractFeeFromOutputs, CCoinControl)
 Insert additional inputs into the transaction by calling CreateTransaction();. More...
 
static void ErrorLogCallback (void *arg, int code, const char *msg)
 
static bool BindBlobToStatement (sqlite3_stmt *stmt, int index, Span< const std::byte > blob, const std::string &description)
 
static std::optional< int > ReadPragmaInteger (sqlite3 *db, const std::string &key, const std::string &description, bilingual_str &error)
 
static void SetPragma (sqlite3 *db, const std::string &key, const std::string &value, const std::string &err_msg)
 
std::unique_ptr< SQLiteDatabaseMakeSQLiteDatabase (const fs::path &path, const DatabaseOptions &options, DatabaseStatus &status, bilingual_str &error)
 
std::string SQLiteDatabaseVersion ()
 
static void add_coin (const CAmount &nValue, int nInput, std::vector< COutput > &set)
 
static void add_coin (const CAmount &nValue, int nInput, SelectionResult &result)
 
static void add_coin (const CAmount &nValue, int nInput, CoinSet &set, CAmount fee=0, CAmount long_term_fee=0)
 
static void add_coin (CoinsResult &available_coins, CWallet &wallet, const CAmount &nValue, CFeeRate feerate=CFeeRate(0), int nAge=6 *24, bool fIsFromMe=false, int nInput=0, bool spendable=false)
 
static bool EquivalentResult (const SelectionResult &a, const SelectionResult &b)
 Check if SelectionResult a is equivalent to SelectionResult b. More...
 
static bool EqualResult (const SelectionResult &a, const SelectionResult &b)
 Check if this selection is equal to another one. More...
 
static CAmount make_hard_case (int utxos, std::vector< COutput > &utxo_pool)
 
std::vector< OutputGroup > & GroupCoins (const std::vector< COutput > &available_coins)
 
std::vector< OutputGroup > & KnapsackGroupOutputs (const CoinsResult &available_coins, CWallet &wallet, const CoinEligibilityFilter &filter)
 
 BOOST_AUTO_TEST_CASE (bnb_search_test)
 
 BOOST_AUTO_TEST_CASE (knapsack_solver_test)
 
 BOOST_AUTO_TEST_CASE (ApproximateBestSubset)
 
 BOOST_AUTO_TEST_CASE (SelectCoins_test)
 
 BOOST_AUTO_TEST_CASE (waste_test)
 
 BOOST_AUTO_TEST_CASE (effective_value_test)
 
static util::Result< SelectionResultselect_coins (const CAmount &target, const CoinSelectionParams &cs_params, const CCoinControl &cc, std::function< CoinsResult(CWallet &)> coin_setup, interfaces::Chain *chain)
 
static bool has_coin (const CoinSet &set, CAmount amount)
 
 BOOST_AUTO_TEST_CASE (check_max_weight)
 
 BOOST_AUTO_TEST_CASE (SelectCoins_effective_value_test)
 
 BOOST_FIXTURE_TEST_CASE (wallet_coinsresult_test, BasicTestingSetup)
 
static std::shared_ptr< BerkeleyEnvironmentGetWalletEnv (const fs::path &path, fs::path &database_filename)
 
 BOOST_AUTO_TEST_CASE (getwalletenv_file)
 
 BOOST_AUTO_TEST_CASE (getwalletenv_directory)
 
 BOOST_AUTO_TEST_CASE (getwalletenv_g_dbenvs_multiple)
 
 BOOST_AUTO_TEST_CASE (getwalletenv_g_dbenvs_free_instance)
 
static void AddCoin (const CAmount &value, int n_input, int n_input_bytes, int locktime, std::vector< COutput > &coins, CFeeRate fee_rate)
 
static void GroupCoins (FuzzedDataProvider &fuzzed_data_provider, const std::vector< COutput > &coins, const CoinSelectionParams &coin_params, bool positive_only, std::vector< OutputGroup > &output_groups)
 
 FUZZ_TARGET (coinselection)
 
static std::shared_ptr< CWalletNewWallet (const node::NodeContext &m_node)
 
static void addCoin (CoinsResult &coins, CWallet &wallet, const CTxDestination &dest, const CAmount &nValue, bool is_from_me, CFeeRate fee_rate=CFeeRate(0), int depth=6)
 
CoinSelectionParams makeSelectionParams (FastRandomContext &rand, bool avoid_partial_spends)
 
 BOOST_AUTO_TEST_CASE (outputs_grouping_tests)
 
 BOOST_AUTO_TEST_CASE (walletinit_verify_walletdir_default)
 
 BOOST_AUTO_TEST_CASE (walletinit_verify_walletdir_custom)
 
 BOOST_AUTO_TEST_CASE (walletinit_verify_walletdir_does_not_exist)
 
 BOOST_AUTO_TEST_CASE (walletinit_verify_walletdir_is_not_directory)
 
 BOOST_AUTO_TEST_CASE (walletinit_verify_walletdir_is_not_relative)
 
 BOOST_AUTO_TEST_CASE (walletinit_verify_walletdir_no_trailing)
 
 BOOST_AUTO_TEST_CASE (walletinit_verify_walletdir_no_trailing2)
 
wallet::ScriptPubKeyManCreateDescriptor (CWallet &keystore, const std::string &desc_str, const bool success)
 
 BOOST_AUTO_TEST_CASE (ismine_standard)
 
static void import_descriptor (CWallet &wallet, const std::string &descriptor) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 
 BOOST_AUTO_TEST_CASE (psbt_updater_test)
 
 BOOST_AUTO_TEST_CASE (parse_hd_keypath)
 
 BOOST_AUTO_TEST_CASE (util_ParseISO8601DateTime)
 
 BOOST_AUTO_TEST_CASE (CanProvide)
 
 BOOST_FIXTURE_TEST_CASE (SubtractFee, TestChain100Setup)
 
static void TestFillInputToWeight (int64_t additional_weight, std::vector< int64_t > expected_stack_sizes)
 
 BOOST_FIXTURE_TEST_CASE (FillInputToWeightTest, BasicTestingSetup)
 
 BOOST_FIXTURE_TEST_CASE (wallet_duplicated_preset_inputs_test, TestChain100Setup)
 
std::unique_ptr< CWalletCreateSyncedWallet (interfaces::Chain &chain, CChain &cchain, const CKey &key)
 
std::unique_ptr< WalletDatabaseDuplicateMockDatabase (WalletDatabase &database, DatabaseOptions &options)
 
std::string getnewaddress (CWallet &w)
 Returns a new encoded destination from the wallet (hardcoded to BECH32) More...
 
CTxDestination getNewDestination (CWallet &w, OutputType output_type)
 Returns a new destination, of an specific type, from the wallet. More...
 
 BOOST_AUTO_TEST_CASE (passphrase)
 
 BOOST_AUTO_TEST_CASE (encrypt)
 
 BOOST_AUTO_TEST_CASE (decrypt)
 
static std::shared_ptr< CWalletTestLoadWallet (WalletContext &context)
 
static void TestUnloadWallet (std::shared_ptr< CWallet > &&wallet)
 
static CMutableTransaction TestSimpleSpend (const CTransaction &from, uint32_t index, const CKey &key, const CScript &pubkey)
 
static void AddKey (CWallet &wallet, const CKey &key)
 
 BOOST_FIXTURE_TEST_CASE (scan_for_wallet_transactions, TestChain100Setup)
 
 BOOST_FIXTURE_TEST_CASE (importmulti_rescan, TestChain100Setup)
 
 BOOST_FIXTURE_TEST_CASE (importwallet_rescan, TestChain100Setup)
 
 BOOST_FIXTURE_TEST_CASE (coin_mark_dirty_immature_credit, TestChain100Setup)
 
static int64_t AddTx (ChainstateManager &chainman, CWallet &wallet, uint32_t lockTime, int64_t mockTime, int64_t blockTime)
 
 BOOST_AUTO_TEST_CASE (ComputeTimeSmart)
 
 BOOST_AUTO_TEST_CASE (LoadReceiveRequests)
 
static void TestWatchOnlyPubKey (LegacyScriptPubKeyMan *spk_man, const CPubKey &add_pubkey)
 
static void PollutePubKey (CPubKey &pubkey)
 
 BOOST_AUTO_TEST_CASE (WatchOnlyPubKeys)
 
 BOOST_FIXTURE_TEST_CASE (ListCoinsTest, ListCoinsTestingSetup)
 
void TestCoinsResult (ListCoinsTest &context, OutputType out_type, CAmount amount, std::map< OutputType, size_t > &expected_coins_sizes)
 
 BOOST_FIXTURE_TEST_CASE (BasicOutputTypesTest, ListCoinsTest)
 
 BOOST_FIXTURE_TEST_CASE (wallet_disableprivkeys, TestChain100Setup)
 
static size_t CalculateNestedKeyhashInputSize (bool use_max_sig)
 
 BOOST_FIXTURE_TEST_CASE (dummy_input_size_test, TestChain100Setup)
 
bool malformed_descriptor (std::ios_base::failure e)
 
 BOOST_FIXTURE_TEST_CASE (wallet_descriptor_test, BasicTestingSetup)
 
 BOOST_FIXTURE_TEST_CASE (CreateWallet, TestChain100Setup)
 Test CWallet::Create() and its behavior handling potential race conditions if it's called the same time an incoming transaction shows up in the mempool or a new block. More...
 
 BOOST_FIXTURE_TEST_CASE (CreateWalletWithoutChain, BasicTestingSetup)
 
 BOOST_FIXTURE_TEST_CASE (ZapSelectTx, TestChain100Setup)
 
 BOOST_FIXTURE_TEST_CASE (wallet_sync_tx_invalid_state_test, TestingSetup)
 Checks a wallet invalid state where the inputs (prev-txs) of a new arriving transaction are not marked dirty, while the transaction that spends them exist inside the in-memory wallet tx map (not stored on db due a db write failure). More...
 
 BOOST_AUTO_TEST_CASE (roundtrip)
 
 BOOST_AUTO_TEST_CASE (walletdb_readkeyvalue)
 
 BOOST_FIXTURE_TEST_CASE (wallet_load_unknown_descriptor, TestingSetup)
 
bool HasAnyRecordOfType (WalletDatabase &db, const std::string &key)
 
 BOOST_FIXTURE_TEST_CASE (wallet_load_verif_crypted_key_checksum, TestingSetup)
 
static TxState TxStateInterpretSerialized (TxStateUnrecognized data)
 Try to interpret deserialized TxStateUnrecognized data as a recognized state. More...
 
static uint256 TxStateSerializedBlockHash (const TxState &state)
 Get TxState serialized block hash. Inverse of TxStateInterpretSerialized. More...
 
static int TxStateSerializedIndex (const TxState &state)
 Get TxState serialized block index. Inverse of TxStateInterpretSerialized. More...
 
bool AddWalletSetting (interfaces::Chain &chain, const std::string &wallet_name)
 Add wallet name to persistent configuration so it will be loaded on startup. More...
 
bool RemoveWalletSetting (interfaces::Chain &chain, const std::string &wallet_name)
 Remove wallet name from persistent configuration so it will not be loaded on startup. More...
 
static void UpdateWalletSetting (interfaces::Chain &chain, const std::string &wallet_name, std::optional< bool > load_on_startup, std::vector< bilingual_str > &warnings)
 
static void RefreshMempoolStatus (CWalletTx &tx, interfaces::Chain &chain)
 Refresh mempool status so the wallet is in an internally consistent state and immediately knows the transaction's status: Whether it can be considered trusted and is eligible to be abandoned ... More...
 
bool AddWallet (WalletContext &context, const std::shared_ptr< CWallet > &wallet)
 
bool RemoveWallet (WalletContext &context, const std::shared_ptr< CWallet > &wallet, std::optional< bool > load_on_start, std::vector< bilingual_str > &warnings)
 
bool RemoveWallet (WalletContext &context, const std::shared_ptr< CWallet > &wallet, std::optional< bool > load_on_start)
 
std::vector< std::shared_ptr< CWallet > > GetWallets (WalletContext &context)
 
std::shared_ptr< CWalletGetDefaultWallet (WalletContext &context, size_t &count)
 
std::shared_ptr< CWalletGetWallet (WalletContext &context, const std::string &name)
 
std::unique_ptr< interfaces::HandlerHandleLoadWallet (WalletContext &context, LoadWalletFn load_wallet)
 
void NotifyWalletLoaded (WalletContext &context, const std::shared_ptr< CWallet > &wallet)
 
static std::set< std::string > g_loading_wallet_set GUARDED_BY (g_loading_wallet_mutex)
 
static std::set< std::string > g_unloading_wallet_set GUARDED_BY (g_wallet_release_mutex)
 
static void ReleaseWallet (CWallet *wallet)
 
void UnloadWallet (std::shared_ptr< CWallet > &&wallet)
 Explicitly unload and delete the wallet. More...
 
std::shared_ptr< CWalletLoadWallet (WalletContext &context, const std::string &name, std::optional< bool > load_on_start, const DatabaseOptions &options, DatabaseStatus &status, bilingual_str &error, std::vector< bilingual_str > &warnings)
 
std::shared_ptr< CWalletCreateWallet (WalletContext &context, const std::string &name, std::optional< bool > load_on_start, DatabaseOptions &options, DatabaseStatus &status, bilingual_str &error, std::vector< bilingual_str > &warnings)
 
std::shared_ptr< CWalletRestoreWallet (WalletContext &context, const fs::path &backup_file, const std::string &wallet_name, std::optional< bool > load_on_start, DatabaseStatus &status, bilingual_str &error, std::vector< bilingual_str > &warnings)
 
bool DummySignInput (const SigningProvider &provider, CTxIn &tx_in, const CTxOut &txout, bool can_grind_r, const CCoinControl *coin_control)
 
bool FillInputToWeight (CTxIn &txin, int64_t target_weight)
 
void MaybeResendWalletTxs (WalletContext &context)
 Called periodically by the schedule thread. More...
 
std::unique_ptr< WalletDatabaseMakeWalletDatabase (const std::string &name, const DatabaseOptions &options, DatabaseStatus &status, bilingual_str &error_string)
 
bool DoMigration (CWallet &wallet, WalletContext &context, bilingual_str &error, MigrationResult &res) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet)
 
util::Result< MigrationResultMigrateLegacyToDescriptor (const std::string &wallet_name, const SecureString &passphrase, WalletContext &context)
 Do all steps to migrate a legacy wallet to a descriptor wallet. More...
 
static bool ReadKeyValue (CWallet *pwallet, DataStream &ssKey, CDataStream &ssValue, CWalletScanState &wss, std::string &strType, std::string &strErr, const KeyFilterFn &filter_fn=nullptr) EXCLUSIVE_LOCKS_REQUIRED(pwallet -> cs_wallet)
 
bool ReadKeyValue (CWallet *pwallet, DataStream &ssKey, CDataStream &ssValue, std::string &strType, std::string &strErr, const KeyFilterFn &filter_fn=nullptr)
 Unserialize a given Key-Value pair and load it into the wallet. More...
 
void MaybeCompactWalletDB (WalletContext &context)
 Compacts BDB state so that wallet.dat is self-contained (if there are changes) More...
 
std::unique_ptr< WalletDatabaseCreateDummyWalletDatabase ()
 Return object for accessing dummy database with no read/write capabilities. More...
 
std::unique_ptr< WalletDatabaseCreateMockWalletDatabase (DatabaseOptions &options)
 Return object for accessing temporary in-memory database. More...
 
std::unique_ptr< WalletDatabaseCreateMockWalletDatabase ()
 
fs::path GetWalletDir ()
 Get the path of the wallet directory. More...
 
bool IsFeatureSupported (int wallet_version, int feature_version)
 
WalletFeature GetClosestWalletFeature (int version)
 

Variables

const int DEFAULT_MIN_DEPTH = 0
 
const int DEFAULT_MAX_DEPTH = 9999999
 
static constexpr bool DEFAULT_AVOIDPARTIALSPENDS = false
 Default for -avoidpartialspends. More...
 
struct {
descending
 
static const size_t TOTAL_TRIES = 100000
 
static constexpr CAmount CHANGE_LOWER {50000}
 lower bound for randomly-chosen target change amount More...
 
static constexpr CAmount CHANGE_UPPER {1000000}
 upper bound for randomly-chosen target change amount More...
 
const unsigned int WALLET_CRYPTO_KEY_SIZE = 32
 
const unsigned int WALLET_CRYPTO_SALT_SIZE = 8
 
const unsigned int WALLET_CRYPTO_IV_SIZE = 16
 
static const std::string DUMP_MAGIC = "BITCOIN_CORE_WALLET_DUMP"
 
uint32_t DUMP_VERSION = 1
 
static const int64_t TIMESTAMP_MIN = 0
 
static const std::string WALLET_ENDPOINT_BASE = "/wallet/"
 
const std::string HELP_REQUIRING_PASSPHRASE {"\nRequires wallet passphrase to be set with walletpassphrase call if wallet is encrypted.\n"}
 
static const char * HEADER_END = "HEADER=END"
 
static const char * DATA_END = "DATA=END"
 
const uint32_t BIP32_HARDENED_KEY_LIMIT = 0x80000000
 Value for the first BIP 32 hardened derivation. Can be used as a bit mask and as a value. See BIP 32 for more details. More...
 
static const unsigned int DEFAULT_KEYPOOL_SIZE = 1000
 Default for -keypool. More...
 
static const std::unordered_set< OutputTypeLEGACY_OUTPUT_TYPES
 OutputTypes supported by the LegacyScriptPubKeyMan. More...
 
static constexpr size_t OUTPUT_GROUP_MAX_ENTRIES {100}
 
static constexpr int32_t WALLET_SCHEMA_VERSION = 0
 
static const CoinEligibilityFilter filter_standard (1, 6, 0)
 
static const CoinEligibilityFilter filter_confirmed (1, 1, 0)
 
static const CoinEligibilityFilter filter_standard_extra (6, 6, 0)
 
static int nextLockTime = 0
 
static int nextLockTime = 0
 
const std::map< uint64_t, std::string > WALLET_FLAG_CAVEATS
 
static GlobalMutex g_loading_wallet_mutex
 
static GlobalMutex g_wallet_release_mutex
 
static std::condition_variable g_wallet_release_cv
 
constexpr CAmount DEFAULT_PAY_TX_FEE = 0
 -paytxfee default More...
 
static const CAmount DEFAULT_FALLBACK_FEE = 0
 -fallbackfee default More...
 
static const CAmount DEFAULT_DISCARD_FEE = 10000
 -discardfee default More...
 
static const CAmount DEFAULT_TRANSACTION_MINFEE = 1000
 -mintxfee default More...
 
static const CAmount DEFAULT_CONSOLIDATE_FEERATE {10000}
 -consolidatefeerate default More...
 
static const CAmount DEFAULT_MAX_AVOIDPARTIALSPEND_FEE = 0
 maximum fee increase allowed to do partial spend avoidance, even for nodes with this feature disabled by default More...
 
constexpr CAmount HIGH_APS_FEE {COIN / 10000}
 discourage APS fee higher than this amount More...
 
static const CAmount WALLET_INCREMENTAL_RELAY_FEE = 5000
 minimum recommended increment for replacement txs More...
 
static const bool DEFAULT_SPEND_ZEROCONF_CHANGE = true
 Default for -spendzeroconfchange. More...
 
static const bool DEFAULT_WALLET_REJECT_LONG_CHAINS {true}
 Default for -walletrejectlongchains. More...
 
static const unsigned int DEFAULT_TX_CONFIRM_TARGET = 6
 -txconfirmtarget default More...
 
static const bool DEFAULT_WALLET_RBF = true
 -walletrbf default More...
 
static const bool DEFAULT_WALLETBROADCAST = true
 
static const bool DEFAULT_DISABLE_WALLET = false
 
static const bool DEFAULT_WALLETCROSSCHAIN = false
 
constexpr CAmount DEFAULT_TRANSACTION_MAXFEE {COIN / 10}
 -maxtxfee default More...
 
constexpr CAmount HIGH_TX_FEE_PER_KB {COIN / 100}
 Discourage users to set fees higher than this amount (in satoshis) per kB. More...
 
constexpr CAmount HIGH_MAX_TX_FEE {100 * HIGH_TX_FEE_PER_KB}
 -maxtxfee will warn if called with a higher fee than this amount (in satoshis) More...
 
static constexpr size_t DUMMY_NESTED_P2WPKH_INPUT_SIZE = 91
 Pre-calculated constants for input size estimation in virtual size More...
 
constexpr OutputType DEFAULT_ADDRESS_TYPE {OutputType::BECH32}
 Default for -addresstype. More...
 
static constexpr uint64_t KNOWN_WALLET_FLAGS
 
static constexpr uint64_t MUTABLE_WALLET_FLAGS
 
static const std::map< std::string, WalletFlagsWALLET_FLAG_MAP
 
static const bool DEFAULT_FLUSHWALLET = true
 Overview of wallet database classes: More...
 

Typedef Documentation

◆ CKeyingMaterial

typedef std::vector<unsigned char, secure_allocator<unsigned char> > wallet::CKeyingMaterial

Definition at line 62 of file crypter.h.

◆ CoinSet

typedef std::set<std::shared_ptr<COutput> > wallet::CoinSet

Definition at line 32 of file coinselector_tests.cpp.

◆ FilteredOutputGroups

Definition at line 275 of file coinselection.h.

◆ isminefilter

typedef std::underlying_type< isminetype >::type wallet::isminefilter

used for bitflags of isminetype

Definition at line 41 of file wallet.h.

◆ KeyFilterFn

using wallet::KeyFilterFn = typedef std::function<bool(const std::string&)>

Callback for filtering key types to deserialize in ReadKeyValue.

Definition at line 303 of file walletdb.h.

◆ KeyValPair

typedef std::pair<std::vector<unsigned char>, std::vector<unsigned char> > wallet::KeyValPair

Definition at line 19 of file salvage.cpp.

◆ LoadWalletFn

using wallet::LoadWalletFn = typedef std::function<void(std::unique_ptr<interfaces::Wallet> wallet)>

Definition at line 23 of file context.h.

◆ mapValue_t

typedef std::map<std::string, std::string> wallet::mapValue_t

Definition at line 111 of file transaction.h.

◆ SyncTxState

Subset of states transaction sync logic is implemented to handle.

Definition at line 69 of file transaction.h.

◆ TxState

All possible CWalletTx states.

Definition at line 66 of file transaction.h.

◆ valtype

typedef std::vector<unsigned char> wallet::valtype

Definition at line 45 of file scriptpubkeyman.cpp.

Enumeration Type Documentation

◆ DatabaseFormat

Enumerator
BERKELEY 
SQLITE 

Definition at line 220 of file db.h.

◆ DatabaseStatus

Enumerator
SUCCESS 
FAILED_BAD_PATH 
FAILED_BAD_FORMAT 
FAILED_ALREADY_LOADED 
FAILED_ALREADY_EXISTS 
FAILED_NOT_FOUND 
FAILED_CREATE 
FAILED_LOAD 
FAILED_VERIFY 
FAILED_ENCRYPT 
FAILED_INVALID_BACKUP_FILE 

Definition at line 239 of file db.h.

◆ DBErrors

enum wallet::DBErrors
strong

Error statuses for the wallet database.

Enumerator
LOAD_OK 
CORRUPT 
NONCRITICAL_ERROR 
TOO_NEW 
EXTERNAL_SIGNER_SUPPORT_REQUIRED 
LOAD_FAIL 
NEED_REWRITE 
NEED_RESCAN 
UNKNOWN_DESCRIPTOR 
UNEXPECTED_LEGACY_ENTRY 

Definition at line 45 of file walletdb.h.

◆ isminetype

enum wallet::isminetype : unsigned int

IsMine() return codes, which depend on ScriptPubKeyMan implementation.

Not every ScriptPubKeyMan covers all types, please refer to https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.21.0.md#ismine-semantics for better understanding.

For LegacyScriptPubKeyMan, ISMINE_NO: the scriptPubKey is not in the wallet; ISMINE_WATCH_ONLY: the scriptPubKey has been imported into the wallet; ISMINE_SPENDABLE: the scriptPubKey corresponds to an address owned by the wallet user (can spend with the private key); ISMINE_USED: the scriptPubKey corresponds to a used address owned by the wallet user; ISMINE_ALL: all ISMINE flags except for USED; ISMINE_ALL_USED: all ISMINE flags including USED; ISMINE_ENUM_ELEMENTS: the number of isminetype enum elements.

For DescriptorScriptPubKeyMan and future ScriptPubKeyMan, ISMINE_NO: the scriptPubKey is not in the wallet; ISMINE_SPENDABLE: the scriptPubKey matches a scriptPubKey in the wallet. ISMINE_USED: the scriptPubKey corresponds to a used address owned by the wallet user.

Enumerator
ISMINE_NO 
ISMINE_WATCH_ONLY 
ISMINE_SPENDABLE 
ISMINE_USED 
ISMINE_ALL 
ISMINE_ALL_USED 
ISMINE_ENUM_ELEMENTS 

Definition at line 41 of file ismine.h.

◆ ScriptContext

enum wallet::ScriptContext
strong
Enumerator
TOP 

Top-level scriptPubKey.

P2SH 

P2SH redeemScript.

WITNESS_V0 

P2WSH witnessScript.

Definition at line 845 of file backup.cpp.

◆ SelectionAlgorithm

enum wallet::SelectionAlgorithm : uint8_t
strong
Enumerator
BNB 
KNAPSACK 
SRD 
MANUAL 

Definition at line 313 of file coinselection.h.

◆ WalletFeature

(client) version numbers for particular wallet features

Enumerator
FEATURE_BASE 
FEATURE_WALLETCRYPT 
FEATURE_COMPRPUBKEY 
FEATURE_HD 
FEATURE_HD_SPLIT 
FEATURE_NO_DEFAULT_KEY 
FEATURE_PRE_SPLIT_KEYPOOL 
FEATURE_LATEST 

Definition at line 15 of file walletutil.h.

◆ WalletFlags

enum wallet::WalletFlags : uint64_t
Enumerator
WALLET_FLAG_AVOID_REUSE 
WALLET_FLAG_KEY_ORIGIN_METADATA 
WALLET_FLAG_LAST_HARDENED_XPUB_CACHED 
WALLET_FLAG_DISABLE_PRIVATE_KEYS 
WALLET_FLAG_BLANK_WALLET 

Flag set when a wallet contains no HD seed and no private keys, scripts, addresses, and other watch only things, and is therefore "blank.".

The only function this flag serves is to distinguish a blank wallet from a newly created wallet when the wallet database is loaded, to avoid initialization that should only happen on first run.

This flag is also a mandatory flag to prevent previous versions of bitcoin from opening the wallet, thinking it was newly created, and then improperly reinitializing it.

WALLET_FLAG_DESCRIPTORS 

Indicate that this wallet supports DescriptorScriptPubKeyMan.

WALLET_FLAG_EXTERNAL_SIGNER 

Indicates that the wallet needs an external signer.

Definition at line 36 of file walletutil.h.

Function Documentation

◆ abandontransaction()

RPCHelpMan wallet::abandontransaction ( )

Definition at line 801 of file transactions.cpp.

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

◆ abortrescan()

RPCHelpMan wallet::abortrescan ( )

Definition at line 932 of file transactions.cpp.

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

◆ add_coin() [1/4]

static void wallet::add_coin ( CoinsResult available_coins,
CWallet wallet,
const CAmount nValue,
CFeeRate  feerate = CFeeRate(0),
int  nAge = 6*24,
bool  fIsFromMe = false,
int  nInput = 0,
bool  spendable = false 
)
static

Definition at line 71 of file coinselector_tests.cpp.

Here is the call graph for this function:

◆ add_coin() [2/4]

static void wallet::add_coin ( const CAmount nValue,
int  nInput,
CoinSet set,
CAmount  fee = 0,
CAmount  long_term_fee = 0 
)
static

Definition at line 60 of file coinselector_tests.cpp.

Here is the call graph for this function:

◆ add_coin() [3/4]

static void wallet::add_coin ( const CAmount nValue,
int  nInput,
SelectionResult result 
)
static

Definition at line 48 of file coinselector_tests.cpp.

Here is the call graph for this function:

◆ add_coin() [4/4]

static void wallet::add_coin ( const CAmount nValue,
int  nInput,
std::vector< COutput > &  set 
)
static

Definition at line 39 of file coinselector_tests.cpp.

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

◆ addCoin()

static void wallet::addCoin ( CoinsResult coins,
CWallet wallet,
const CTxDestination dest,
const CAmount nValue,
bool  is_from_me,
CFeeRate  fee_rate = CFeeRate(0),
int  depth = 6 
)
static

Definition at line 28 of file group_outputs_tests.cpp.

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

◆ AddCoin()

static void wallet::AddCoin ( const CAmount value,
int  n_input,
int  n_input_bytes,
int  locktime,
std::vector< COutput > &  coins,
CFeeRate  fee_rate 
)
static

Definition at line 17 of file coinselection.cpp.

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

◆ AddKey()

static void wallet::AddKey ( CWallet wallet,
const CKey key 
)
static

Definition at line 80 of file wallet_tests.cpp.

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

◆ addmultisigaddress()

RPCHelpMan wallet::addmultisigaddress ( )

Definition at line 214 of file addresses.cpp.

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

◆ AddTx()

static int64_t wallet::AddTx ( ChainstateManager chainman,
CWallet wallet,
uint32_t  lockTime,
int64_t  mockTime,
int64_t  blockTime 
)
static

Definition at line 379 of file wallet_tests.cpp.

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

◆ AddWallet()

bool wallet::AddWallet ( WalletContext context,
const std::shared_ptr< CWallet > &  wallet 
)

Definition at line 112 of file wallet.cpp.

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

◆ AddWalletSetting()

bool wallet::AddWalletSetting ( interfaces::Chain chain,
const std::string &  wallet_name 
)

Add wallet name to persistent configuration so it will be loaded on startup.

Definition at line 62 of file wallet.cpp.

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

◆ AllInputsMine()

bool wallet::AllInputsMine ( const CWallet wallet,
const CTransaction tx,
const isminefilter filter 
)

Returns whether all of the inputs match the filter.

Definition at line 22 of file receive.cpp.

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

◆ ApproximateBestSubset()

static void wallet::ApproximateBestSubset ( FastRandomContext insecure_rand,
const std::vector< OutputGroup > &  groups,
const CAmount nTotalLower,
const CAmount nTargetValue,
std::vector< char > &  vfBest,
CAmount nBest,
int  iterations = 1000 
)
static

Find a subset of the OutputGroups that is at least as large as, but as close as possible to, the target amount; solve subset sum.

param@[in] groups OutputGroups to choose from, sorted by value in descending order. param@[in] nTotalLower Total (effective) value of the UTXOs in groups. param@[in] nTargetValue Subset sum target, not including change. param@[out] vfBest Boolean vector representing the subset chosen that is closest to nTargetValue, with indices corresponding to groups. If the ith entry is true, that means the ith group in groups was selected. param@[out] nBest Total amount of subset chosen that is closest to nTargetValue. param@[in] iterations Maximum number of tries.

Definition at line 207 of file coinselection.cpp.

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

◆ AttemptSelection()

util::Result< SelectionResult > wallet::AttemptSelection ( const CAmount nTargetValue,
OutputGroupTypeMap groups,
const CoinSelectionParams coin_selection_params,
bool  allow_mixed_output_types 
)

Attempt to find a valid input set that preserves privacy by not mixing OutputTypes.

ChooseSelectionResult() will be called on each OutputType individually and the best the solution (according to the waste metric) will be chosen. If a valid input cannot be found from any single OutputType, fallback to running ChooseSelectionResult() over all available coins.

param@[in] nTargetValue The target value param@[in] groups The grouped outputs mapped by coin eligibility filters param@[in] coin_selection_params Parameters for the coin selection param@[in] allow_mixed_output_types Relax restriction that SelectionResults must be of the same OutputType returns If successful, a SelectionResult containing the input set If failed, returns (1) an empty error message if the target was not reached (general "Insufficient funds") or (2) an specific error message if there was something particularly wrong (e.g. a selection result that surpassed the tx max weight size).

Definition at line 537 of file spend.cpp.

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

◆ AutomaticCoinSelection()

util::Result< SelectionResult > wallet::AutomaticCoinSelection ( const CWallet wallet,
CoinsResult available_coins,
const CAmount nTargetValue,
const CoinSelectionParams coin_selection_params 
)

Select a set of coins such that nTargetValue is met; never select unconfirmed coins if they are not ours param@[in] wallet The wallet which provides data necessary to spend the selected coins param@[in] available_coins The struct of coins, organized by OutputType, available for selection prior to filtering param@[in] nTargetValue The target value param@[in] coin_selection_params Parameters for this coin selection such as feerates, whether to avoid partial spends, and whether to subtract the fee from the outputs.

returns If successful, a SelectionResult containing the selected coins If failed, returns (1) an empty error message if the target was not reached (general "Insufficient funds") or (2) an specific error message if there was something particularly wrong (e.g. a selection result that surpassed the tx max weight size).

Definition at line 651 of file spend.cpp.

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

◆ AvailableCoins()

CoinsResult wallet::AvailableCoins ( const CWallet wallet,
const CCoinControl coinControl,
std::optional< CFeeRate feerate,
const CoinFilterParams params 
)

Populate the CoinsResult struct with vectors of available COutputs, organized by OutputType.

Definition at line 204 of file spend.cpp.

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

◆ AvailableCoinsListUnspent()

CoinsResult wallet::AvailableCoinsListUnspent ( const CWallet wallet,
const CCoinControl coinControl = nullptr,
CoinFilterParams  params = {} 
)

Wrapper function for AvailableCoins which skips the feerate and CoinFilterParams::only_spendable parameters.

Use this function to list all available coins (e.g. listunspent RPC) while not intending to fund a transaction.

Definition at line 353 of file spend.cpp.

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

◆ backupwallet()

RPCHelpMan wallet::backupwallet ( )

Definition at line 1856 of file backup.cpp.

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

◆ BDBDataFile()

fs::path wallet::BDBDataFile ( const fs::path wallet_path)

Definition at line 64 of file db.cpp.

Here is the caller graph for this function:

◆ BerkeleyDatabaseSanityCheck()

bool wallet::BerkeleyDatabaseSanityCheck ( )

Perform sanity check of runtime BDB version versus linked BDB version.

Definition at line 735 of file bdb.cpp.

Here is the caller graph for this function:

◆ BerkeleyDatabaseVersion()

std::string wallet::BerkeleyDatabaseVersion ( )

Definition at line 752 of file bdb.cpp.

Here is the caller graph for this function:

◆ BindBlobToStatement()

static bool wallet::BindBlobToStatement ( sqlite3_stmt *  stmt,
int  index,
Span< const std::byte >  blob,
const std::string &  description 
)
static

Definition at line 37 of file sqlite.cpp.

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

◆ BOOST_AUTO_TEST_CASE() [1/33]

wallet::BOOST_AUTO_TEST_CASE ( ApproximateBestSubset  )

Definition at line 714 of file coinselector_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [2/33]

wallet::BOOST_AUTO_TEST_CASE ( bnb_search_test  )

Definition at line 162 of file coinselector_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [3/33]

wallet::BOOST_AUTO_TEST_CASE ( CanProvide  )

Definition at line 18 of file scriptpubkeyman_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [4/33]

wallet::BOOST_AUTO_TEST_CASE ( check_max_weight  )

Definition at line 949 of file coinselector_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [5/33]

wallet::BOOST_AUTO_TEST_CASE ( ComputeTimeSmart  )

Definition at line 407 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [6/33]

wallet::BOOST_AUTO_TEST_CASE ( decrypt  )

Definition at line 107 of file wallet_crypto_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [7/33]

wallet::BOOST_AUTO_TEST_CASE ( effective_value_test  )

Definition at line 889 of file coinselector_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [8/33]

wallet::BOOST_AUTO_TEST_CASE ( encrypt  )

Definition at line 92 of file wallet_crypto_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [9/33]

wallet::BOOST_AUTO_TEST_CASE ( getwalletenv_directory  )

Definition at line 39 of file db_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [10/33]

wallet::BOOST_AUTO_TEST_CASE ( getwalletenv_file  )

Definition at line 25 of file db_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [11/33]

wallet::BOOST_AUTO_TEST_CASE ( getwalletenv_g_dbenvs_free_instance  )

Definition at line 64 of file db_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [12/33]

wallet::BOOST_AUTO_TEST_CASE ( getwalletenv_g_dbenvs_multiple  )

Definition at line 50 of file db_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [13/33]

wallet::BOOST_AUTO_TEST_CASE ( ismine_standard  )

Definition at line 39 of file ismine_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [14/33]

wallet::BOOST_AUTO_TEST_CASE ( knapsack_solver_test  )

Definition at line 402 of file coinselector_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [15/33]

wallet::BOOST_AUTO_TEST_CASE ( LoadReceiveRequests  )

Definition at line 430 of file wallet_tests.cpp.

◆ BOOST_AUTO_TEST_CASE() [16/33]

wallet::BOOST_AUTO_TEST_CASE ( outputs_grouping_tests  )

Definition at line 108 of file group_outputs_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [17/33]

wallet::BOOST_AUTO_TEST_CASE ( parse_hd_keypath  )

Definition at line 73 of file psbt_wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [18/33]

wallet::BOOST_AUTO_TEST_CASE ( passphrase  )

Definition at line 76 of file wallet_crypto_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [19/33]

wallet::BOOST_AUTO_TEST_CASE ( psbt_updater_test  )

Definition at line 29 of file psbt_wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [20/33]

wallet::BOOST_AUTO_TEST_CASE ( roundtrip  )

Definition at line 14 of file wallet_transaction_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [21/33]

wallet::BOOST_AUTO_TEST_CASE ( SelectCoins_effective_value_test  )

Definition at line 1042 of file coinselector_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [22/33]

wallet::BOOST_AUTO_TEST_CASE ( SelectCoins_test  )

Definition at line 737 of file coinselector_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [23/33]

wallet::BOOST_AUTO_TEST_CASE ( util_ParseISO8601DateTime  )

Definition at line 13 of file rpc_util_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [24/33]

wallet::BOOST_AUTO_TEST_CASE ( walletdb_readkeyvalue  )

When ReadKeyValue() reads from either a "key" or "wkey" it first reads the CDataStream steam into a CPrivKey or CWalletKey respectively and then reads a hash of the pubkey and privkey into a uint256. Wallets from 0.8 or before do not store the pubkey/privkey hash, trying to read the hash from old wallets throws an exception, for backwards compatibility this read is wrapped in a try block to silently fail. The test here makes sure the type of exception thrown from CDataStream::read() matches the type we expect, otherwise we need to update the "key"/"wkey" exception type caught.

Definition at line 15 of file walletdb_tests.cpp.

◆ BOOST_AUTO_TEST_CASE() [25/33]

wallet::BOOST_AUTO_TEST_CASE ( walletinit_verify_walletdir_custom  )

Definition at line 26 of file init_tests.cpp.

◆ BOOST_AUTO_TEST_CASE() [26/33]

wallet::BOOST_AUTO_TEST_CASE ( walletinit_verify_walletdir_default  )

Definition at line 16 of file init_tests.cpp.

◆ BOOST_AUTO_TEST_CASE() [27/33]

wallet::BOOST_AUTO_TEST_CASE ( walletinit_verify_walletdir_does_not_exist  )

Definition at line 36 of file init_tests.cpp.

◆ BOOST_AUTO_TEST_CASE() [28/33]

wallet::BOOST_AUTO_TEST_CASE ( walletinit_verify_walletdir_is_not_directory  )

Definition at line 46 of file init_tests.cpp.

◆ BOOST_AUTO_TEST_CASE() [29/33]

wallet::BOOST_AUTO_TEST_CASE ( walletinit_verify_walletdir_is_not_relative  )

Definition at line 56 of file init_tests.cpp.

◆ BOOST_AUTO_TEST_CASE() [30/33]

wallet::BOOST_AUTO_TEST_CASE ( walletinit_verify_walletdir_no_trailing  )

Definition at line 66 of file init_tests.cpp.

◆ BOOST_AUTO_TEST_CASE() [31/33]

wallet::BOOST_AUTO_TEST_CASE ( walletinit_verify_walletdir_no_trailing2  )

Definition at line 76 of file init_tests.cpp.

◆ BOOST_AUTO_TEST_CASE() [32/33]

wallet::BOOST_AUTO_TEST_CASE ( waste_test  )

Definition at line 791 of file coinselector_tests.cpp.

Here is the call graph for this function:

◆ BOOST_AUTO_TEST_CASE() [33/33]

wallet::BOOST_AUTO_TEST_CASE ( WatchOnlyPubKeys  )

Definition at line 491 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [1/19]

wallet::BOOST_FIXTURE_TEST_CASE ( BasicOutputTypesTest  ,
ListCoinsTest   
)

Definition at line 639 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [2/19]

wallet::BOOST_FIXTURE_TEST_CASE ( coin_mark_dirty_immature_credit  ,
TestChain100Setup   
)

Definition at line 356 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [3/19]

wallet::BOOST_FIXTURE_TEST_CASE ( CreateWallet  ,
TestChain100Setup   
)

Test CWallet::Create() and its behavior handling potential race conditions if it's called the same time an incoming transaction shows up in the mempool or a new block.

It isn't possible to verify there aren't race condition in every case, so this test just checks two specific cases and ensures that timing of notifications in these cases doesn't prevent the wallet from detecting transactions.

In the first case, block and mempool transactions are created before the wallet is loaded, but notifications about these transactions are delayed until after it is loaded. The notifications are superfluous in this case, so the test verifies the transactions are detected before they arrive.

In the second case, block and mempool transactions are created after the wallet rescan and notifications are immediately synced, to verify the wallet must already have a handler in place for them, and there's no gap after rescanning where new transactions in new blocks could be lost.

Definition at line 767 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [4/19]

wallet::BOOST_FIXTURE_TEST_CASE ( CreateWalletWithoutChain  ,
BasicTestingSetup   
)

Definition at line 865 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [5/19]

wallet::BOOST_FIXTURE_TEST_CASE ( dummy_input_size_test  ,
TestChain100Setup   
)

Definition at line 722 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [6/19]

wallet::BOOST_FIXTURE_TEST_CASE ( FillInputToWeightTest  ,
BasicTestingSetup   
)

Definition at line 78 of file spend_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [7/19]

wallet::BOOST_FIXTURE_TEST_CASE ( importmulti_rescan  ,
TestChain100Setup   
)

Definition at line 214 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [8/19]

wallet::BOOST_FIXTURE_TEST_CASE ( importwallet_rescan  ,
TestChain100Setup   
)

Definition at line 280 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [9/19]

wallet::BOOST_FIXTURE_TEST_CASE ( ListCoinsTest  ,
ListCoinsTestingSetup   
)

Definition at line 568 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [10/19]

wallet::BOOST_FIXTURE_TEST_CASE ( scan_for_wallet_transactions  ,
TestChain100Setup   
)

Definition at line 91 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [11/19]

wallet::BOOST_FIXTURE_TEST_CASE ( SubtractFee  ,
TestChain100Setup   
)

Definition at line 18 of file spend_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [12/19]

wallet::BOOST_FIXTURE_TEST_CASE ( wallet_coinsresult_test  ,
BasicTestingSetup   
)

Definition at line 1092 of file coinselector_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [13/19]

wallet::BOOST_FIXTURE_TEST_CASE ( wallet_descriptor_test  ,
BasicTestingSetup   
)

Definition at line 734 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [14/19]

wallet::BOOST_FIXTURE_TEST_CASE ( wallet_disableprivkeys  ,
TestChain100Setup   
)

Definition at line 665 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [15/19]

wallet::BOOST_FIXTURE_TEST_CASE ( wallet_duplicated_preset_inputs_test  ,
TestChain100Setup   
)

Definition at line 115 of file spend_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [16/19]

wallet::BOOST_FIXTURE_TEST_CASE ( wallet_load_unknown_descriptor  ,
TestingSetup   
)

Definition at line 35 of file walletload_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [17/19]

wallet::BOOST_FIXTURE_TEST_CASE ( wallet_load_verif_crypted_key_checksum  ,
TestingSetup   
)

Definition at line 73 of file walletload_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [18/19]

wallet::BOOST_FIXTURE_TEST_CASE ( wallet_sync_tx_invalid_state_test  ,
TestingSetup   
)

Checks a wallet invalid state where the inputs (prev-txs) of a new arriving transaction are not marked dirty, while the transaction that spends them exist inside the in-memory wallet tx map (not stored on db due a db write failure).

Definition at line 962 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ BOOST_FIXTURE_TEST_CASE() [19/19]

wallet::BOOST_FIXTURE_TEST_CASE ( ZapSelectTx  ,
TestChain100Setup   
)

Definition at line 874 of file wallet_tests.cpp.

Here is the call graph for this function:

◆ bumpfee()

RPCHelpMan wallet::bumpfee ( )

Definition at line 1172 of file spend.cpp.

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

◆ bumpfee_helper()

static RPCHelpMan wallet::bumpfee_helper ( std::string  method_name)
static

Definition at line 979 of file spend.cpp.

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

◆ CachedTxGetAmounts()

void wallet::CachedTxGetAmounts ( const CWallet wallet,
const CWalletTx wtx,
std::list< COutputEntry > &  listReceived,
std::list< COutputEntry > &  listSent,
CAmount nFee,
const isminefilter filter,
bool  include_change 
)

Definition at line 194 of file receive.cpp.

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

◆ CachedTxGetAvailableCredit()

CAmount wallet::CachedTxGetAvailableCredit ( const CWallet wallet,
const CWalletTx wtx,
const isminefilter filter 
)

Definition at line 159 of file receive.cpp.

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

◆ CachedTxGetChange()

CAmount wallet::CachedTxGetChange ( const CWallet wallet,
const CWalletTx wtx 
)

Definition at line 139 of file receive.cpp.

Here is the call graph for this function:

◆ CachedTxGetCredit()

CAmount wallet::CachedTxGetCredit ( const CWallet wallet,
const CWalletTx wtx,
const isminefilter filter 
)

Definition at line 109 of file receive.cpp.

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

◆ CachedTxGetDebit()

CAmount wallet::CachedTxGetDebit ( const CWallet wallet,
const CWalletTx wtx,
const isminefilter filter 
)

filter decides which addresses will count towards the debit

Definition at line 126 of file receive.cpp.

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

◆ CachedTxGetImmatureCredit()

CAmount wallet::CachedTxGetImmatureCredit ( const CWallet wallet,
const CWalletTx wtx,
const isminefilter filter 
)

Definition at line 148 of file receive.cpp.

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

◆ CachedTxIsFromMe()

bool wallet::CachedTxIsFromMe ( const CWallet wallet,
const CWalletTx wtx,
const isminefilter filter 
)

Definition at line 251 of file receive.cpp.

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

◆ CachedTxIsTrusted() [1/2]

bool wallet::CachedTxIsTrusted ( const CWallet wallet,
const CWalletTx wtx 
)

Definition at line 286 of file receive.cpp.

Here is the call graph for this function:

◆ CachedTxIsTrusted() [2/2]

bool wallet::CachedTxIsTrusted ( const CWallet wallet,
const CWalletTx wtx,
std::set< uint256 > &  trusted_parents 
)

Definition at line 256 of file receive.cpp.

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

◆ CalculateMaximumSignedInputSize() [1/2]

int wallet::CalculateMaximumSignedInputSize ( const CTxOut txout,
const COutPoint  outpoint,
const SigningProvider provider,
bool  can_grind_r,
const CCoinControl coin_control 
)

Definition at line 33 of file spend.cpp.

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

◆ CalculateMaximumSignedInputSize() [2/2]

int wallet::CalculateMaximumSignedInputSize ( const CTxOut txout,
const CWallet pwallet,
const CCoinControl coin_control 
)

Get the marginal bytes if spending the specified output from this transaction.

Use CoinControl to determine whether to expect signature grinding when calculating the size of the input spend.

Definition at line 43 of file spend.cpp.

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

◆ CalculateMaximumSignedTxSize() [1/2]

TxSize wallet::CalculateMaximumSignedTxSize ( const CTransaction tx,
const CWallet wallet,
const CCoinControl coin_control 
)

Definition at line 62 of file spend.cpp.

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

◆ CalculateMaximumSignedTxSize() [2/2]

TxSize wallet::CalculateMaximumSignedTxSize ( const CTransaction tx,
const CWallet wallet,
const std::vector< CTxOut > &  txouts,
const CCoinControl coin_control 
)

Calculate the size of the transaction using CoinControl to determine whether to expect signature grinding when calculating the size of the input spend.

Definition at line 50 of file spend.cpp.

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

◆ CalculateNestedKeyhashInputSize()

static size_t wallet::CalculateNestedKeyhashInputSize ( bool  use_max_sig)
static

Definition at line 687 of file wallet_tests.cpp.

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

◆ CheckFeeRate()

static feebumper::Result wallet::CheckFeeRate ( const CWallet wallet,
const CWalletTx wtx,
const CFeeRate newFeerate,
const int64_t  maxTxSize,
CAmount  old_fee,
std::vector< bilingual_str > &  errors 
)
static

Check if the user provided a valid feeRate.

Definition at line 66 of file feebumper.cpp.

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

◆ ChooseSelectionResult()

util::Result< SelectionResult > wallet::ChooseSelectionResult ( const CAmount nTargetValue,
Groups groups,
const CoinSelectionParams coin_selection_params 
)

Attempt to find a valid input set that meets the provided eligibility filter and target.

Multiple coin selection algorithms will be run and the input set that produces the least waste (according to the waste metric) will be chosen.

param@[in] nTargetValue The target value param@[in] groups The struct containing the outputs grouped by script and divided by (1) positive only outputs and (2) all outputs (positive + negative). param@[in] coin_selection_params Parameters for the coin selection returns If successful, a SelectionResult containing the input set If failed, returns (1) an empty error message if the target was not reached (general "Insufficient funds") or (2) an specific error message if there was something particularly wrong (e.g. a selection result that surpassed the tx max weight size).

Definition at line 564 of file spend.cpp.

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

◆ CreateDescriptor()

wallet::ScriptPubKeyMan* wallet::CreateDescriptor ( CWallet keystore,
const std::string &  desc_str,
const bool  success 
)

Definition at line 20 of file ismine_tests.cpp.

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

◆ CreateDummyWalletDatabase()

std::unique_ptr< WalletDatabase > wallet::CreateDummyWalletDatabase ( )

Return object for accessing dummy database with no read/write capabilities.

Definition at line 1236 of file walletdb.cpp.

Here is the caller graph for this function:

◆ CreateFromDump()

bool wallet::CreateFromDump ( const ArgsManager args,
const std::string &  name,
const fs::path wallet_path,
bilingual_str error,
std::vector< bilingual_str > &  warnings 
)

Definition at line 119 of file dump.cpp.

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

◆ CreateMockWalletDatabase() [1/2]

std::unique_ptr< WalletDatabase > wallet::CreateMockWalletDatabase ( )

Definition at line 1269 of file walletdb.cpp.

Here is the call graph for this function:

◆ CreateMockWalletDatabase() [2/2]

std::unique_ptr< WalletDatabase > wallet::CreateMockWalletDatabase ( DatabaseOptions options)

Return object for accessing temporary in-memory database.

Definition at line 1242 of file walletdb.cpp.

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

◆ CreateSyncedWallet()

std::unique_ptr< CWallet > wallet::CreateSyncedWallet ( interfaces::Chain chain,
CChain cchain,
const CKey key 
)

Definition at line 17 of file util.cpp.

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

◆ CreateTransaction()

util::Result< CreatedTransactionResult > wallet::CreateTransaction ( CWallet wallet,
const std::vector< CRecipient > &  vecSend,
int  change_pos,
const CCoinControl coin_control,
bool  sign = true 
)

Create a new transaction paying the recipients with a set of coins selected by SelectCoins(); Also create the change output, when needed.

Note
passing change_pos as -1 will result in setting a random position

Definition at line 1136 of file spend.cpp.

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

◆ CreateTransactionInternal()

static util::Result<CreatedTransactionResult> wallet::CreateTransactionInternal ( CWallet wallet,
const std::vector< CRecipient > &  vecSend,
int  change_pos,
const CCoinControl coin_control,
bool  sign 
)
static

Definition at line 826 of file spend.cpp.

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

◆ createwallet()

static RPCHelpMan wallet::createwallet ( )
static

Definition at line 317 of file wallet.cpp.

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

◆ CreateWallet()

std::shared_ptr< CWallet > wallet::CreateWallet ( WalletContext context,
const std::string &  name,
std::optional< bool >  load_on_start,
DatabaseOptions options,
DatabaseStatus status,
bilingual_str error,
std::vector< bilingual_str > &  warnings 
)

Definition at line 340 of file wallet.cpp.

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

◆ DecodeDumpString()

static std::string wallet::DecodeDumpString ( const std::string &  str)
static

Definition at line 49 of file backup.cpp.

Here is the caller graph for this function:

◆ DecryptKey()

bool wallet::DecryptKey ( const CKeyingMaterial vMasterKey,
const std::vector< unsigned char > &  vchCryptedSecret,
const CPubKey vchPubKey,
CKey key 
)

Definition at line 128 of file crypter.cpp.

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

◆ DecryptSecret()

bool wallet::DecryptSecret ( const CKeyingMaterial vMasterKey,
const std::vector< unsigned char > &  vchCiphertext,
const uint256 nIV,
CKeyingMaterial vchPlaintext 
)

Definition at line 118 of file crypter.cpp.

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

◆ DeriveExtKey()

static void wallet::DeriveExtKey ( CExtKey key_in,
unsigned int  index,
CExtKey key_out 
)
static

Try to derive an extended key, throw if it fails.

Definition at line 1089 of file scriptpubkeyman.cpp.

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

◆ DescribeWalletAddress()

static UniValue wallet::DescribeWalletAddress ( const CWallet wallet,
const CTxDestination dest 
)
static

Definition at line 478 of file addresses.cpp.

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

◆ DiscourageFeeSniping()

static void wallet::DiscourageFeeSniping ( CMutableTransaction tx,
FastRandomContext rng_fast,
interfaces::Chain chain,
const uint256 block_hash,
int  block_height 
)
static

Set a height-based locktime for new transactions (uses the height of the current chain tip unless we are not synced with the current chain.

Definition at line 770 of file spend.cpp.

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

◆ DoMigration()

bool wallet::DoMigration ( CWallet wallet,
WalletContext context,
bilingual_str error,
MigrationResult res 
)

Definition at line 4090 of file wallet.cpp.

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

◆ dumpprivkey()

RPCHelpMan wallet::dumpprivkey ( )

Definition at line 641 of file backup.cpp.

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

◆ dumpwallet()

RPCHelpMan wallet::dumpwallet ( )

Definition at line 687 of file backup.cpp.

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

◆ DumpWallet()

bool wallet::DumpWallet ( const ArgsManager args,
CWallet wallet,
bilingual_str error 
)

Definition at line 23 of file dump.cpp.

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

◆ DuplicateMockDatabase()

std::unique_ptr< WalletDatabase > wallet::DuplicateMockDatabase ( WalletDatabase database,
DatabaseOptions options 
)

Definition at line 47 of file util.cpp.

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

◆ EncodeDumpString()

static std::string wallet::EncodeDumpString ( const std::string &  str)
static

Definition at line 37 of file backup.cpp.

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

◆ EncryptSecret()

bool wallet::EncryptSecret ( const CKeyingMaterial vMasterKey,
const CKeyingMaterial vchPlaintext,
const uint256 nIV,
std::vector< unsigned char > &  vchCiphertext 
)

Definition at line 108 of file crypter.cpp.

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

◆ encryptwallet()

RPCHelpMan wallet::encryptwallet ( )

Definition at line 216 of file encrypt.cpp.

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

◆ EnsureBlockDataFromTime()

static void wallet::EnsureBlockDataFromTime ( const CWallet wallet,
int64_t  timestamp 
)
static

Definition at line 97 of file backup.cpp.

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

◆ EnsureConstLegacyScriptPubKeyMan()

const LegacyScriptPubKeyMan & wallet::EnsureConstLegacyScriptPubKeyMan ( const CWallet wallet)

Definition at line 125 of file util.cpp.

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

◆ EnsureLegacyScriptPubKeyMan()

LegacyScriptPubKeyMan & wallet::EnsureLegacyScriptPubKeyMan ( CWallet wallet,
bool  also_create 
)

Definition at line 113 of file util.cpp.

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

◆ EnsureWalletContext()

WalletContext & wallet::EnsureWalletContext ( const std::any &  context)

Definition at line 103 of file util.cpp.

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

◆ EnsureWalletIsUnlocked()

void wallet::EnsureWalletIsUnlocked ( const CWallet wallet)

Definition at line 96 of file util.cpp.

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

◆ EqualResult()

static bool wallet::EqualResult ( const SelectionResult a,
const SelectionResult b 
)
static

Check if this selection is equal to another one.

Equal means same inputs (i.e same value and prevout)

Definition at line 110 of file coinselector_tests.cpp.

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

◆ EquivalentResult()

static bool wallet::EquivalentResult ( const SelectionResult a,
const SelectionResult b 
)
static

Check if SelectionResult a is equivalent to SelectionResult b.

Equivalent means same input values, but maybe different inputs (i.e. same value, different prevout)

Definition at line 92 of file coinselector_tests.cpp.

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

◆ ErrorLogCallback()

static void wallet::ErrorLogCallback ( void *  arg,
int  code,
const char *  msg 
)
static

Definition at line 26 of file sqlite.cpp.

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

◆ EstimateFeeRate()

static CFeeRate wallet::EstimateFeeRate ( const CWallet wallet,
const CWalletTx wtx,
const CAmount  old_fee,
const CCoinControl coin_control 
)
static

Definition at line 117 of file feebumper.cpp.

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

◆ ExtractPubKey()

static bool wallet::ExtractPubKey ( const CScript dest,
CPubKey pubKeyOut 
)
static

Definition at line 869 of file scriptpubkeyman.cpp.

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

◆ FetchSelectedInputs()

util::Result< PreSelectedInputs > wallet::FetchSelectedInputs ( const CWallet wallet,
const CCoinControl coin_control,
const CoinSelectionParams coin_selection_params 
)

Fetch and validate coin control selected inputs.

Coins could be internal (from the wallet) or external.

Definition at line 160 of file spend.cpp.

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

◆ FindNonChangeParentOutput()

const CTxOut & wallet::FindNonChangeParentOutput ( const CWallet wallet,
const COutPoint outpoint 
)

Find non-change parent output.

Definition at line 365 of file spend.cpp.

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

◆ FinishTransaction()

static UniValue wallet::FinishTransaction ( const std::shared_ptr< CWallet pwallet,
const UniValue options,
const CMutableTransaction rawTx 
)
static

Definition at line 79 of file spend.cpp.

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

◆ FlushWallets()

void wallet::FlushWallets ( WalletContext context)

Flush all wallets in preparation for shutdown.

Definition at line 157 of file load.cpp.

Here is the call graph for this function:

◆ fundrawtransaction()

RPCHelpMan wallet::fundrawtransaction ( )

Definition at line 744 of file spend.cpp.

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

◆ FundTransaction() [1/2]

void wallet::FundTransaction ( CWallet wallet,
CMutableTransaction tx,
CAmount fee_out,
int &  change_position,
const UniValue options,
CCoinControl coinControl,
bool  override_min_fee 
)

Definition at line 492 of file spend.cpp.

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

◆ FundTransaction() [2/2]

bool wallet::FundTransaction ( CWallet wallet,
CMutableTransaction tx,
CAmount nFeeRet,
int &  nChangePosInOut,
bilingual_str error,
bool  lockUnspents,
const std::set< int > &  setSubtractFeeFromOutputs,
CCoinControl  coinControl 
)

Insert additional inputs into the transaction by calling CreateTransaction();.

Definition at line 1184 of file spend.cpp.

Here is the call graph for this function:

◆ FundTxDoc()

static std::vector<RPCArg> wallet::FundTxDoc ( bool  solving_data = true)
static

Definition at line 453 of file spend.cpp.

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

◆ FUZZ_TARGET()

wallet::FUZZ_TARGET ( coinselection  )

Definition at line 47 of file coinselection.cpp.

Here is the call graph for this function:

◆ GenerateChangeTarget()

CAmount wallet::GenerateChangeTarget ( const CAmount  payment_value,
const CAmount  change_fee,
FastRandomContext rng 
)

Choose a random change target for each transaction to make it harder to fingerprint the Core wallet based on the change output values of transactions it creates.

Change target covers at least change fees and adds a random value on top of it. The random value is between 50ksat and min(2 * payment_value, 1milsat) When payment_value <= 25ksat, the value is just 50ksat.

Making change amounts similar to the payment value may help disguise which output(s) are payments are which ones are change. Using double the payment value may increase the number of inputs needed (and thus be more expensive in fees), but breaks analysis techniques which assume the coins selected are just sufficient to cover the payment amount ("unnecessary input" heuristic).

Parameters
[in]payment_valueAverage payment value of the transaction output(s).
[in]change_feeFee for creating a change output.

Definition at line 418 of file coinselection.cpp.

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

◆ GetAddressBalances()

std::map< CTxDestination, CAmount > wallet::GetAddressBalances ( const CWallet wallet)

Definition at line 322 of file receive.cpp.

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

◆ getaddressesbylabel()

RPCHelpMan wallet::getaddressesbylabel ( )

Definition at line 634 of file addresses.cpp.

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

◆ GetAddressGroupings()

std::set< std::set< CTxDestination > > wallet::GetAddressGroupings ( const CWallet wallet)

Definition at line 360 of file receive.cpp.

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

◆ getaddressinfo()

RPCHelpMan wallet::getaddressinfo ( )

Definition at line 490 of file addresses.cpp.

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

◆ GetAffectedKeys()

std::vector< CKeyID > wallet::GetAffectedKeys ( const CScript spk,
const SigningProvider provider 
)

Definition at line 1504 of file scriptpubkeyman.cpp.

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

◆ GetAlgorithmName()

std::string wallet::GetAlgorithmName ( const SelectionAlgorithm  algo)

Definition at line 521 of file coinselection.cpp.

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

◆ GetAvailableBalance()

CAmount wallet::GetAvailableBalance ( const CWallet wallet,
const CCoinControl coinControl 
)

Definition at line 359 of file spend.cpp.

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

◆ GetAvoidReuseFlag()

bool wallet::GetAvoidReuseFlag ( const CWallet wallet,
const UniValue param 
)

Definition at line 36 of file util.cpp.

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

◆ getbalance()

RPCHelpMan wallet::getbalance ( )

Definition at line 162 of file coins.cpp.

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

◆ GetBalance()

Balance wallet::GetBalance ( const CWallet wallet,
const int  min_depth,
bool  avoid_reuse 
)

Definition at line 293 of file receive.cpp.

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

◆ getbalances()

RPCHelpMan wallet::getbalances ( )

Definition at line 429 of file coins.cpp.

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

◆ GetBerkeleyEnv()

std::shared_ptr< BerkeleyEnvironment > wallet::GetBerkeleyEnv ( const fs::path env_directory,
bool  use_shared_memory 
)

Get BerkeleyEnvironment given a directory path.

Parameters
[in]env_directoryPath to environment directory
Returns
A shared pointer to the BerkeleyEnvironment object for the wallet directory, never empty because ~BerkeleyEnvironment erases the weak pointer from the g_dbenvs map.
Postcondition
A new BerkeleyEnvironment weak pointer is inserted into g_dbenvs if the directory path key was not already in the map.

Definition at line 65 of file bdb.cpp.

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

◆ GetCachableAmount()

static CAmount wallet::GetCachableAmount ( const CWallet wallet,
const CWalletTx wtx,
CWalletTx::AmountType  type,
const isminefilter filter 
)
static

Definition at line 99 of file receive.cpp.

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

◆ GetClosestWalletFeature()

WalletFeature wallet::GetClosestWalletFeature ( int  version)

Definition at line 38 of file walletutil.cpp.

Here is the caller graph for this function:

◆ GetDefaultWallet()

std::shared_ptr< CWallet > wallet::GetDefaultWallet ( WalletContext context,
size_t &  count 
)

Definition at line 156 of file wallet.cpp.

Here is the caller graph for this function:

◆ GetDiscardRate()

CFeeRate wallet::GetDiscardRate ( const CWallet wallet)

Return the maximum feerate for discarding change.

Definition at line 84 of file fees.cpp.

Here is the caller graph for this function:

◆ GetImportTimestamp()

static int64_t wallet::GetImportTimestamp ( const UniValue data,
int64_t  now 
)
static

Definition at line 1232 of file backup.cpp.

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

◆ GetMinimumFee()

CAmount wallet::GetMinimumFee ( const CWallet wallet,
unsigned int  nTxBytes,
const CCoinControl coin_control,
FeeCalculation feeCalc 
)

Estimate the minimum fee considering user set parameters and the required fee.

Definition at line 19 of file fees.cpp.

Here is the call graph for this function:

◆ GetMinimumFeeRate()

CFeeRate wallet::GetMinimumFeeRate ( const CWallet wallet,
const CCoinControl coin_control,
FeeCalculation feeCalc 
)

Estimate the minimum fee rate considering user set parameters and the required fee.

Definition at line 29 of file fees.cpp.

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

◆ getnewaddress() [1/2]

RPCHelpMan wallet::getnewaddress ( )

Definition at line 17 of file addresses.cpp.

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

◆ getnewaddress() [2/2]

std::string wallet::getnewaddress ( CWallet w)

Returns a new encoded destination from the wallet (hardcoded to BECH32)

Definition at line 71 of file util.cpp.

Here is the call graph for this function:

◆ getNewDestination()

CTxDestination wallet::getNewDestination ( CWallet w,
OutputType  output_type 
)

Returns a new destination, of an specific type, from the wallet.

Definition at line 77 of file util.cpp.

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

◆ GetOldestKeyTimeInPool()

static int64_t wallet::GetOldestKeyTimeInPool ( const std::set< int64_t > &  setKeyPool,
WalletBatch batch 
)
static

Definition at line 529 of file scriptpubkeyman.cpp.

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

◆ GetOutputType()

static OutputType wallet::GetOutputType ( TxoutType  type,
bool  is_from_p2sh 
)
static

Definition at line 141 of file spend.cpp.

Here is the caller graph for this function:

◆ getrawchangeaddress()

RPCHelpMan wallet::getrawchangeaddress ( )

Definition at line 69 of file addresses.cpp.

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

◆ GetReceived()

static CAmount wallet::GetReceived ( const CWallet wallet,
const UniValue params,
bool  by_label 
)
static

Definition at line 20 of file coins.cpp.

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

◆ getreceivedbyaddress()

RPCHelpMan wallet::getreceivedbyaddress ( )

Definition at line 80 of file coins.cpp.

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

◆ getreceivedbylabel()

RPCHelpMan wallet::getreceivedbylabel ( )

Definition at line 121 of file coins.cpp.

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

◆ GetRequiredFee()

CAmount wallet::GetRequiredFee ( const CWallet wallet,
unsigned int  nTxBytes 
)

Return the minimum required absolute fee for this size based on the required fee rate.

Definition at line 13 of file fees.cpp.

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

◆ GetRequiredFeeRate()

CFeeRate wallet::GetRequiredFeeRate ( const CWallet wallet)

Return the minimum required feerate taking into account the minimum relay feerate and user set minimum transaction feerate.

Definition at line 24 of file fees.cpp.

Here is the caller graph for this function:

◆ GetSelectionWaste()

CAmount wallet::GetSelectionWaste ( const std::set< std::shared_ptr< COutput >> &  inputs,
CAmount  change_cost,
CAmount  target,
bool  use_effective_value = true 
)

Compute the waste for this result given the cost of change and the opportunity cost of spending these inputs now vs in the future.

If change exists, waste = change_cost + inputs * (effective_feerate - long_term_feerate) If no change, waste = excess + inputs * (effective_feerate - long_term_feerate) where excess = selected_effective_value - target change_cost = effective_feerate * change_output_size + long_term_feerate * change_spend_size

Note this function is separate from SelectionResult for the tests.

Parameters
[in]inputsThe selected inputs
[in]change_costThe cost of creating change and spending it in the future. Only used if there is change, in which case it must be positive. Must be 0 if there is no change.
[in]targetThe amount targeted by the coin selection algorithm.
[in]use_effective_valueWhether to use the input's effective value (when true) or the real value (when false).
Returns
The waste

Definition at line 390 of file coinselection.cpp.

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

◆ gettransaction()

RPCHelpMan wallet::gettransaction ( )

Definition at line 687 of file transactions.cpp.

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

◆ getunconfirmedbalance()

RPCHelpMan wallet::getunconfirmedbalance ( )

Definition at line 217 of file coins.cpp.

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

◆ GetWallet()

std::shared_ptr< CWallet > wallet::GetWallet ( WalletContext context,
const std::string &  name 
)

Definition at line 163 of file wallet.cpp.

Here is the caller graph for this function:

◆ GetWalletAddressesForKey()

static bool wallet::GetWalletAddressesForKey ( const LegacyScriptPubKeyMan spk_man,
const CWallet wallet,
const CKeyID keyid,
std::string &  strAddr,
std::string &  strLabel 
)
static

Definition at line 63 of file backup.cpp.

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

◆ GetWalletDir()

fs::path wallet::GetWalletDir ( )

Get the path of the wallet directory.

Definition at line 11 of file walletutil.cpp.

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

◆ GetWalletEnv()

static std::shared_ptr<BerkeleyEnvironment> wallet::GetWalletEnv ( const fs::path path,
fs::path database_filename 
)
static

Definition at line 18 of file db_tests.cpp.

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

◆ GetWalletForJSONRPCRequest()

std::shared_ptr< CWallet > wallet::GetWalletForJSONRPCRequest ( const JSONRPCRequest request)

Figures out what wallet, if any, to use for a JSONRPCRequest.

Parameters
[in]requestJSONRPCRequest that wishes to access a wallet
Returns
nullptr if no wallet should be used, or a pointer to the CWallet

Definition at line 72 of file util.cpp.

Here is the call graph for this function:

◆ getwalletinfo()

static RPCHelpMan wallet::getwalletinfo ( )
static

Definition at line 31 of file wallet.cpp.

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

◆ GetWalletNameFromJSONRPCRequest()

bool wallet::GetWalletNameFromJSONRPCRequest ( const JSONRPCRequest request,
std::string &  wallet_name 
)

Definition at line 62 of file util.cpp.

Here is the caller graph for this function:

◆ GetWalletRPCCommands()

Span< const CRPCCommand > wallet::GetWalletRPCCommands ( )

Definition at line 855 of file wallet.cpp.

◆ GetWallets()

std::vector< std::shared_ptr< CWallet > > wallet::GetWallets ( WalletContext context)

Definition at line 150 of file wallet.cpp.

Here is the caller graph for this function:

◆ GroupCoins() [1/2]

std::vector<OutputGroup>& wallet::GroupCoins ( const std::vector< COutput > &  available_coins)
inline

Definition at line 131 of file coinselector_tests.cpp.

Here is the caller graph for this function:

◆ GroupCoins() [2/2]

static void wallet::GroupCoins ( FuzzedDataProvider fuzzed_data_provider,
const std::vector< COutput > &  coins,
const CoinSelectionParams coin_params,
bool  positive_only,
std::vector< OutputGroup > &  output_groups 
)
static

Definition at line 27 of file coinselection.cpp.

Here is the call graph for this function:

◆ GroupOutputs() [1/2]

FilteredOutputGroups wallet::GroupOutputs ( const CWallet wallet,
const CoinsResult coins,
const CoinSelectionParams params,
const std::vector< SelectionFilter > &  filters 
)

Group coins by the provided filters.

Definition at line 525 of file spend.cpp.

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

◆ GroupOutputs() [2/2]

FilteredOutputGroups wallet::GroupOutputs ( const CWallet wallet,
const CoinsResult coins,
const CoinSelectionParams coin_sel_params,
const std::vector< SelectionFilter > &  filters,
std::vector< OutputGroup > &  ret_discarded_groups 
)

Definition at line 407 of file spend.cpp.

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

◆ GUARDED_BY() [1/2]

static std::set<std::string> g_loading_wallet_set wallet::GUARDED_BY ( g_loading_wallet_mutex  )
static

◆ GUARDED_BY() [2/2]

static std::set<std::string> g_unloading_wallet_set wallet::GUARDED_BY ( g_wallet_release_mutex  )
static

◆ HandleLoadWallet()

std::unique_ptr< interfaces::Handler > wallet::HandleLoadWallet ( WalletContext context,
LoadWalletFn  load_wallet 
)

Definition at line 172 of file wallet.cpp.

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

◆ HandleWalletError()

void wallet::HandleWalletError ( const std::shared_ptr< CWallet wallet,
DatabaseStatus status,
bilingual_str error 
)

Definition at line 154 of file util.cpp.

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

◆ has_coin()

static bool wallet::has_coin ( const CoinSet set,
CAmount  amount 
)
static

Definition at line 944 of file coinselector_tests.cpp.

Here is the caller graph for this function:

◆ HasAnyRecordOfType()

bool wallet::HasAnyRecordOfType ( WalletDatabase db,
const std::string &  key 
)

Definition at line 54 of file walletload_tests.cpp.

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

◆ HasErrorMsg()

static bool wallet::HasErrorMsg ( const util::Result< SelectionResult > &  res)
static

Definition at line 535 of file spend.cpp.

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

◆ HaveKey()

bool wallet::HaveKey ( const SigningProvider wallet,
const CKey key 
)

Checks if a CKey is in the given CWallet compressed or otherwise.

Definition at line 24 of file wallet.cpp.

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

◆ import_descriptor()

static void wallet::import_descriptor ( CWallet wallet,
const std::string &  descriptor 
)
static

Definition at line 17 of file psbt_wallet_tests.cpp.

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

◆ importaddress()

RPCHelpMan wallet::importaddress ( )

Definition at line 215 of file backup.cpp.

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

◆ importdescriptors()

RPCHelpMan wallet::importdescriptors ( )

Definition at line 1586 of file backup.cpp.

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

◆ importmulti()

RPCHelpMan wallet::importmulti ( )

Definition at line 1246 of file backup.cpp.

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

◆ importprivkey()

RPCHelpMan wallet::importprivkey ( )

Definition at line 113 of file backup.cpp.

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

◆ importprunedfunds()

RPCHelpMan wallet::importprunedfunds ( )

Definition at line 317 of file backup.cpp.

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

◆ importpubkey()

RPCHelpMan wallet::importpubkey ( )

Definition at line 411 of file backup.cpp.

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

◆ importwallet()

RPCHelpMan wallet::importwallet ( )

Definition at line 494 of file backup.cpp.

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

◆ InputIsMine()

isminetype wallet::InputIsMine ( const CWallet wallet,
const CTxIn txin 
)

Definition at line 12 of file receive.cpp.

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

◆ InterpretFeeEstimationInstructions()

static void wallet::InterpretFeeEstimationInstructions ( const UniValue conf_target,
const UniValue estimate_mode,
const UniValue fee_rate,
UniValue options 
)
static

Definition at line 57 of file spend.cpp.

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

◆ IsBDBFile()

bool wallet::IsBDBFile ( const fs::path path)

Definition at line 83 of file db.cpp.

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

◆ IsCurrentForAntiFeeSniping()

static bool wallet::IsCurrentForAntiFeeSniping ( interfaces::Chain chain,
const uint256 block_hash 
)
static

Definition at line 752 of file spend.cpp.

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

◆ IsFeatureSupported()

bool wallet::IsFeatureSupported ( int  wallet_version,
int  feature_version 
)

Definition at line 33 of file walletutil.cpp.

Here is the caller graph for this function:

◆ IsSQLiteFile()

bool wallet::IsSQLiteFile ( const fs::path path)

Definition at line 108 of file db.cpp.

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

◆ KeyFilter()

static bool wallet::KeyFilter ( const std::string &  type)
static

Definition at line 21 of file salvage.cpp.

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

◆ keypoolrefill()

RPCHelpMan wallet::keypoolrefill ( )

Definition at line 310 of file addresses.cpp.

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

◆ KnapsackGroupOutputs()

std::vector<OutputGroup>& wallet::KnapsackGroupOutputs ( const CoinsResult available_coins,
CWallet wallet,
const CoinEligibilityFilter filter 
)
inline

Definition at line 142 of file coinselector_tests.cpp.

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

◆ KnapsackSolver()

std::optional< SelectionResult > wallet::KnapsackSolver ( std::vector< OutputGroup > &  groups,
const CAmount nTargetValue,
CAmount  change_target,
FastRandomContext rng 
)

Definition at line 255 of file coinselection.cpp.

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

◆ LabelFromValue()

std::string wallet::LabelFromValue ( const UniValue value)

Definition at line 134 of file util.cpp.

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

◆ listaddressgroupings()

RPCHelpMan wallet::listaddressgroupings ( )

Definition at line 154 of file addresses.cpp.

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

◆ ListCoins()

std::map< CTxDestination, std::vector< COutput > > wallet::ListCoins ( const CWallet wallet)

Return list of available coins and locked coins grouped by non-change output address.

Definition at line 385 of file spend.cpp.

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

◆ ListDatabases()

std::vector< fs::path > wallet::ListDatabases ( const fs::path wallet_dir)

Recursively list database paths in directory.

Definition at line 19 of file db.cpp.

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

◆ listdescriptors()

RPCHelpMan wallet::listdescriptors ( )

Definition at line 1743 of file backup.cpp.

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

◆ listlabels()

RPCHelpMan wallet::listlabels ( )

Definition at line 694 of file addresses.cpp.

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

◆ listlockunspent()

RPCHelpMan wallet::listlockunspent ( )

Definition at line 376 of file coins.cpp.

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

◆ ListReceived()

static UniValue wallet::ListReceived ( const CWallet wallet,
const UniValue params,
const bool  by_label,
const bool  include_immature_coinbase 
)
static

Definition at line 70 of file transactions.cpp.

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

◆ listreceivedbyaddress()

RPCHelpMan wallet::listreceivedbyaddress ( )

Definition at line 201 of file transactions.cpp.

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

◆ listreceivedbylabel()

RPCHelpMan wallet::listreceivedbylabel ( )

Definition at line 254 of file transactions.cpp.

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

◆ listsinceblock()

RPCHelpMan wallet::listsinceblock ( )

Definition at line 541 of file transactions.cpp.

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

◆ listtransactions()

RPCHelpMan wallet::listtransactions ( )

Definition at line 431 of file transactions.cpp.

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

◆ ListTransactions()

template<class Vec >
static void wallet::ListTransactions ( const CWallet wallet,
const CWalletTx wtx,
int  nMinDepth,
bool  fLong,
Vec &  ret,
const isminefilter filter_ismine,
const std::optional< std::string > &  filter_label,
bool  include_change = false 
)
static

List transactions based on the given criteria.

Parameters
walletThe wallet.
wtxThe wallet transaction.
nMinDepthThe minimum confirmation depth.
fLongWhether to include the JSON version of the transaction.
retThe vector into which the result is stored.
filter_ismineThe "is mine" filter flags.
filter_labelOptional label string to filter incoming transactions.

Definition at line 318 of file transactions.cpp.

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

◆ listunspent()

RPCHelpMan wallet::listunspent ( )

Definition at line 496 of file coins.cpp.

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

◆ listwalletdir()

static RPCHelpMan wallet::listwalletdir ( )
static

Definition at line 128 of file wallet.cpp.

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

◆ listwallets()

static RPCHelpMan wallet::listwallets ( )
static

Definition at line 165 of file wallet.cpp.

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

◆ loadwallet()

static RPCHelpMan wallet::loadwallet ( )
static

Definition at line 196 of file wallet.cpp.

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

◆ LoadWallet()

std::shared_ptr< CWallet > wallet::LoadWallet ( WalletContext context,
const std::string &  name,
std::optional< bool >  load_on_start,
const DatabaseOptions options,
DatabaseStatus status,
bilingual_str error,
std::vector< bilingual_str > &  warnings 
)

Definition at line 327 of file wallet.cpp.

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

◆ LoadWallets()

bool wallet::LoadWallets ( WalletContext context)

Load wallet databases.

Definition at line 105 of file load.cpp.

Here is the call graph for this function:

◆ lockunspent()

RPCHelpMan wallet::lockunspent ( )

Definition at line 240 of file coins.cpp.

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

◆ make_hard_case()

static CAmount wallet::make_hard_case ( int  utxos,
std::vector< COutput > &  utxo_pool 
)
static

Definition at line 119 of file coinselector_tests.cpp.

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

◆ MakeBerkeleyDatabase()

std::unique_ptr< BerkeleyDatabase > wallet::MakeBerkeleyDatabase ( const fs::path path,
const DatabaseOptions options,
DatabaseStatus status,
bilingual_str error 
)

Return object giving access to Berkeley database at specified path.

Definition at line 834 of file bdb.cpp.

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

◆ MakeDatabase()

std::unique_ptr< WalletDatabase > wallet::MakeDatabase ( const fs::path path,
const DatabaseOptions options,
DatabaseStatus status,
bilingual_str error 
)

Definition at line 1156 of file walletdb.cpp.

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

◆ makeSelectionParams()

CoinSelectionParams wallet::makeSelectionParams ( FastRandomContext rand,
bool  avoid_partial_spends 
)

Definition at line 61 of file group_outputs_tests.cpp.

Here is the caller graph for this function:

◆ MakeSQLiteDatabase()

std::unique_ptr< SQLiteDatabase > wallet::MakeSQLiteDatabase ( const fs::path path,
const DatabaseOptions options,
DatabaseStatus status,
bilingual_str error 
)

Definition at line 551 of file sqlite.cpp.

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

◆ MakeWalletDatabase()

std::unique_ptr< WalletDatabase > wallet::MakeWalletDatabase ( const std::string &  name,
const DatabaseOptions options,
DatabaseStatus status,
bilingual_str error_string 
)

Definition at line 2886 of file wallet.cpp.

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

◆ malformed_descriptor()

bool wallet::malformed_descriptor ( std::ios_base::failure  e)

Definition at line 728 of file wallet_tests.cpp.

Here is the caller graph for this function:

◆ MaybeCompactWalletDB()

void wallet::MaybeCompactWalletDB ( WalletContext context)

Compacts BDB state so that wallet.dat is self-contained (if there are changes)

Definition at line 1058 of file walletdb.cpp.

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

◆ MaybePushAddress()

static void wallet::MaybePushAddress ( UniValue entry,
const CTxDestination dest 
)
static

Definition at line 299 of file transactions.cpp.

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

◆ MaybeResendWalletTxs()

void wallet::MaybeResendWalletTxs ( WalletContext context)

Called periodically by the schedule thread.

Prompts individual wallets to resend their transactions. Actual rebroadcast schedule is managed by the wallets themselves.

Definition at line 2101 of file wallet.cpp.

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

◆ MigrateLegacyToDescriptor()

util::Result< MigrationResult > wallet::MigrateLegacyToDescriptor ( const std::string &  wallet_name,
const SecureString passphrase,
WalletContext context 
)

Do all steps to migrate a legacy wallet to a descriptor wallet.

Definition at line 4183 of file wallet.cpp.

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

◆ migratewallet()

static RPCHelpMan wallet::migratewallet ( )
static

Definition at line 715 of file wallet.cpp.

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

◆ newkeypool()

RPCHelpMan wallet::newkeypool ( )

Definition at line 354 of file addresses.cpp.

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

◆ NewWallet()

static std::shared_ptr<CWallet> wallet::NewWallet ( const node::NodeContext m_node)
static

Definition at line 18 of file group_outputs_tests.cpp.

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

◆ NotifyWalletLoaded()

void wallet::NotifyWalletLoaded ( WalletContext context,
const std::shared_ptr< CWallet > &  wallet 
)

Definition at line 179 of file wallet.cpp.

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

◆ OutputGetChange()

CAmount wallet::OutputGetChange ( const CWallet wallet,
const CTxOut txout 
)

Definition at line 78 of file receive.cpp.

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

◆ OutputGetCredit()

CAmount wallet::OutputGetCredit ( const CWallet wallet,
const CTxOut txout,
const isminefilter filter 
)

Definition at line 31 of file receive.cpp.

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

◆ OutputIsChange()

bool wallet::OutputIsChange ( const CWallet wallet,
const CTxOut txout 
)

Definition at line 73 of file receive.cpp.

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

◆ OutputsDoc()

static std::vector<RPCArg> wallet::OutputsDoc ( )
static

Definition at line 961 of file spend.cpp.

Here is the caller graph for this function:

◆ ParseIncludeWatchonly()

bool wallet::ParseIncludeWatchonly ( const UniValue include_watchonly,
const CWallet wallet 
)

Used by RPC commands that have an include_watchonly parameter.

We default to true for watchonly wallets if include_watchonly isn't explicitly set.

Definition at line 51 of file util.cpp.

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

◆ ParseISO8601DateTime()

int64_t wallet::ParseISO8601DateTime ( const std::string &  str)

Definition at line 22 of file util.cpp.

Here is the caller graph for this function:

◆ ParseRecipients()

static void wallet::ParseRecipients ( const UniValue address_amounts,
const UniValue subtract_fee_outputs,
std::vector< CRecipient > &  recipients 
)
static

Definition at line 26 of file spend.cpp.

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

◆ PollutePubKey()

static void wallet::PollutePubKey ( CPubKey pubkey)
static

Definition at line 481 of file wallet_tests.cpp.

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

◆ PreconditionChecks()

static feebumper::Result wallet::PreconditionChecks ( const CWallet wallet,
const CWalletTx wtx,
bool  require_mine,
std::vector< bilingual_str > &  errors 
)
static

Check whether transaction has descendant in wallet or mempool, or has been mined, or conflicts with a mined transaction.

Return a feebumper::Result.

Definition at line 23 of file feebumper.cpp.

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

◆ PreventOutdatedOptions()

static void wallet::PreventOutdatedOptions ( const UniValue options)
static

Definition at line 122 of file spend.cpp.

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

◆ ProcessDescriptorImport()

static UniValue wallet::ProcessDescriptorImport ( CWallet wallet,
const UniValue data,
const int64_t  timestamp 
)
static

Definition at line 1446 of file backup.cpp.

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

◆ ProcessImport()

static UniValue wallet::ProcessImport ( CWallet wallet,
const UniValue data,
const int64_t  timestamp 
)
static

Definition at line 1156 of file backup.cpp.

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

◆ ProcessImportDescriptor()

static UniValue wallet::ProcessImportDescriptor ( ImportData import_data,
std::map< CKeyID, CPubKey > &  pubkey_map,
std::map< CKeyID, CKey > &  privkey_map,
std::set< CScript > &  script_pub_keys,
bool &  have_solving_data,
const UniValue data,
std::vector< CKeyID > &  ordered_pubkeys 
)
static

Definition at line 1067 of file backup.cpp.

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

◆ ProcessImportLegacy()

static UniValue wallet::ProcessImportLegacy ( ImportData import_data,
std::map< CKeyID, CPubKey > &  pubkey_map,
std::map< CKeyID, CKey > &  privkey_map,
std::set< CScript > &  script_pub_keys,
bool &  have_solving_data,
const UniValue data,
std::vector< CKeyID > &  ordered_pubkeys 
)
static

Definition at line 920 of file backup.cpp.

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

◆ psbtbumpfee()

RPCHelpMan wallet::psbtbumpfee ( )

Definition at line 1173 of file spend.cpp.

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

◆ PushParentDescriptors()

void wallet::PushParentDescriptors ( const CWallet wallet,
const CScript script_pubkey,
UniValue entry 
)

Fetch parent descriptors of this scriptPubKey.

Definition at line 145 of file util.cpp.

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

◆ ReadDatabaseArgs()

void wallet::ReadDatabaseArgs ( const ArgsManager args,
DatabaseOptions options 
)

Definition at line 142 of file db.cpp.

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

◆ ReadKeyValue() [1/2]

static bool wallet::ReadKeyValue ( CWallet pwallet,
DataStream ssKey,
CDataStream ssValue,
CWalletScanState wss,
std::string &  strType,
std::string &  strErr,
const KeyFilterFn filter_fn = nullptr 
) -> cs_wallet)
static

Definition at line 324 of file walletdb.cpp.

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

◆ ReadKeyValue() [2/2]

bool wallet::ReadKeyValue ( CWallet pwallet,
DataStream ssKey,
CDataStream ssValue,
std::string &  strType,
std::string &  strErr,
const KeyFilterFn filter_fn 
)

Unserialize a given Key-Value pair and load it into the wallet.

Definition at line 762 of file walletdb.cpp.

Here is the call graph for this function:

◆ ReadPragmaInteger()

static std::optional<int> wallet::ReadPragmaInteger ( sqlite3 *  db,
const std::string &  key,
const std::string &  description,
bilingual_str error 
)
static

Definition at line 53 of file sqlite.cpp.

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

◆ RecoverDatabaseFile()

bool wallet::RecoverDatabaseFile ( const ArgsManager args,
const fs::path file_path,
bilingual_str error,
std::vector< bilingual_str > &  warnings 
)

Salvage data from a file. The DB_AGGRESSIVE flag is being used (see berkeley DB->verify() method documentation). key/value pairs are appended to salvagedData which are then written out to a new wallet file. NOTE: reads the entire database into memory, so cannot be used for huge databases.

Definition at line 26 of file salvage.cpp.

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

◆ RecurseImportData()

static std::string wallet::RecurseImportData ( const CScript script,
ImportData import_data,
const ScriptContext  script_ctx 
)
static

Definition at line 854 of file backup.cpp.

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

◆ RefreshMempoolStatus()

static void wallet::RefreshMempoolStatus ( CWalletTx tx,
interfaces::Chain chain 
)
static

Refresh mempool status so the wallet is in an internally consistent state and immediately knows the transaction's status: Whether it can be considered trusted and is eligible to be abandoned ...

Definition at line 103 of file wallet.cpp.

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

◆ ReleaseWallet()

static void wallet::ReleaseWallet ( CWallet wallet)
static

Definition at line 194 of file wallet.cpp.

Here is the caller graph for this function:

◆ removeprunedfunds()

RPCHelpMan wallet::removeprunedfunds ( )

Definition at line 373 of file backup.cpp.

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

◆ RemoveWallet() [1/2]

bool wallet::RemoveWallet ( WalletContext context,
const std::shared_ptr< CWallet > &  wallet,
std::optional< bool >  load_on_start 
)

Definition at line 144 of file wallet.cpp.

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

◆ RemoveWallet() [2/2]

bool wallet::RemoveWallet ( WalletContext context,
const std::shared_ptr< CWallet > &  wallet,
std::optional< bool >  load_on_start,
std::vector< bilingual_str > &  warnings 
)

Definition at line 124 of file wallet.cpp.

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

◆ RemoveWalletSetting()

bool wallet::RemoveWalletSetting ( interfaces::Chain chain,
const std::string &  wallet_name 
)

Remove wallet name from persistent configuration so it will not be loaded on startup.

Definition at line 73 of file wallet.cpp.

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

◆ rescanblockchain()

RPCHelpMan wallet::rescanblockchain ( )

Definition at line 842 of file transactions.cpp.

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

◆ RescanWallet()

static void wallet::RescanWallet ( CWallet wallet,
const WalletRescanReserver reserver,
int64_t  time_begin = TIMESTAMP_MIN,
bool  update = true 
)
static

Definition at line 87 of file backup.cpp.

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

◆ restorewallet()

RPCHelpMan wallet::restorewallet ( )

Definition at line 1890 of file backup.cpp.

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

◆ RestoreWallet()

std::shared_ptr< CWallet > wallet::RestoreWallet ( WalletContext context,
const fs::path backup_file,
const std::string &  wallet_name,
std::optional< bool >  load_on_start,
DatabaseStatus status,
bilingual_str error,
std::vector< bilingual_str > &  warnings 
)

Definition at line 445 of file wallet.cpp.

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

◆ ScriptIsChange()

bool wallet::ScriptIsChange ( const CWallet wallet,
const CScript script 
)

Definition at line 51 of file receive.cpp.

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

◆ select_coins()

static util::Result<SelectionResult> wallet::select_coins ( const CAmount target,
const CoinSelectionParams cs_params,
const CCoinControl cc,
std::function< CoinsResult(CWallet &)>  coin_setup,
interfaces::Chain chain 
)
static

Definition at line 924 of file coinselector_tests.cpp.

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

◆ SelectCoins()

util::Result< SelectionResult > wallet::SelectCoins ( const CWallet wallet,
CoinsResult available_coins,
const PreSelectedInputs pre_set_inputs,
const CAmount nTargetValue,
const CCoinControl coin_control,
const CoinSelectionParams coin_selection_params 
)

Select all coins from coin_control, and if coin_control 'm_allow_other_inputs=true', call 'AutomaticCoinSelection' to select a set of coins such that nTargetValue - pre_set_inputs.total_amount is met.

Definition at line 606 of file spend.cpp.

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

◆ SelectCoinsBnB()

std::optional< SelectionResult > wallet::SelectCoinsBnB ( std::vector< OutputGroup > &  utxo_pool,
const CAmount selection_target,
const CAmount cost_of_change 
)

Definition at line 66 of file coinselection.cpp.

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

◆ SelectCoinsSRD()

std::optional< SelectionResult > wallet::SelectCoinsSRD ( const std::vector< OutputGroup > &  utxo_pool,
CAmount  target_value,
FastRandomContext rng 
)

Select coins by Single Random Draw.

OutputGroups are selected randomly from the eligible outputs until the target is satisfied

Parameters
[in]utxo_poolThe positive effective value OutputGroups eligible for selection
[in]target_valueThe target value to select for
Returns
If successful, a SelectionResult, otherwise, std::nullopt

Definition at line 168 of file coinselection.cpp.

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

◆ send()

RPCHelpMan wallet::send ( )

Definition at line 1175 of file spend.cpp.

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

◆ sendall()

RPCHelpMan wallet::sendall ( )

Definition at line 1281 of file spend.cpp.

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

◆ sendmany()

RPCHelpMan wallet::sendmany ( )

Definition at line 314 of file spend.cpp.

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

◆ SendMoney()

UniValue wallet::SendMoney ( CWallet wallet,
const CCoinControl coin_control,
std::vector< CRecipient > &  recipients,
mapValue_t  map_value,
bool  verbose 
)

Definition at line 144 of file spend.cpp.

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

◆ sendtoaddress()

RPCHelpMan wallet::sendtoaddress ( )

Definition at line 212 of file spend.cpp.

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

◆ SetFeeEstimateMode()

static void wallet::SetFeeEstimateMode ( const CWallet wallet,
CCoinControl cc,
const UniValue conf_target,
const UniValue estimate_mode,
const UniValue fee_rate,
bool  override_min_fee 
)
static

Update coin control with fee estimation based on the given parameters.

Parameters
[in]walletWallet reference
[in,out]ccCoin control to be updated
[in]conf_targetUniValue integer; confirmation target in blocks, values between 1 and 1008 are valid per policy/fees.h;
[in]estimate_modeUniValue string; fee estimation mode, valid values are "unset", "economical" or "conservative";
[in]fee_rateUniValue real; fee rate in sat/vB; if present, both conf_target and estimate_mode must either be null, or "unset"
[in]override_min_feebool; whether to set fOverrideFeeRate to true to disable minimum fee rate checks and instead verify only that fee_rate is greater than 0
Exceptions
aJSONRPCError if conf_target, estimate_mode, or fee_rate contain invalid values or are in conflict

Definition at line 188 of file spend.cpp.

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

◆ sethdseed()

static RPCHelpMan wallet::sethdseed ( )
static

Definition at line 473 of file wallet.cpp.

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

◆ setlabel()

RPCHelpMan wallet::setlabel ( )

Definition at line 116 of file addresses.cpp.

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

◆ SetOptionsInputWeights()

static void wallet::SetOptionsInputWeights ( const UniValue inputs,
UniValue options 
)
static

Definition at line 727 of file spend.cpp.

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

◆ SetPragma()

static void wallet::SetPragma ( sqlite3 *  db,
const std::string &  key,
const std::string &  value,
const std::string &  err_msg 
)
static

Definition at line 74 of file sqlite.cpp.

Here is the caller graph for this function:

◆ settxfee()

RPCHelpMan wallet::settxfee ( )

Definition at line 410 of file spend.cpp.

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

◆ setwalletflag()

static RPCHelpMan wallet::setwalletflag ( )
static

Definition at line 250 of file wallet.cpp.

Here is the caller graph for this function:

◆ signmessage()

RPCHelpMan wallet::signmessage ( )

Definition at line 14 of file signmessage.cpp.

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

◆ signrawtransactionwithwallet()

RPCHelpMan wallet::signrawtransactionwithwallet ( )

Definition at line 864 of file spend.cpp.

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

◆ simulaterawtransaction()

RPCHelpMan wallet::simulaterawtransaction ( )

Definition at line 606 of file wallet.cpp.

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

◆ SplitWalletPath()

void wallet::SplitWalletPath ( const fs::path wallet_path,
fs::path env_directory,
std::string &  database_filename 
)

◆ SQLiteDatabaseVersion()

std::string wallet::SQLiteDatabaseVersion ( )

Definition at line 569 of file sqlite.cpp.

Here is the caller graph for this function:

◆ SQLiteDataFile()

fs::path wallet::SQLiteDataFile ( const fs::path path)

Definition at line 78 of file db.cpp.

Here is the caller graph for this function:

◆ StartWallets()

void wallet::StartWallets ( WalletContext context,
CScheduler scheduler 
)

Complete startup of wallets.

Definition at line 144 of file load.cpp.

Here is the call graph for this function:

◆ StopWallets()

void wallet::StopWallets ( WalletContext context)

Stop all wallets. Wallets will be flushed first.

Definition at line 164 of file load.cpp.

Here is the call graph for this function:

◆ TestCoinsResult()

void wallet::TestCoinsResult ( ListCoinsTest &  context,
OutputType  out_type,
CAmount  amount,
std::map< OutputType, size_t > &  expected_coins_sizes 
)

Definition at line 625 of file wallet_tests.cpp.

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

◆ TestFillInputToWeight()

static void wallet::TestFillInputToWeight ( int64_t  additional_weight,
std::vector< int64_t >  expected_stack_sizes 
)
static

Definition at line 64 of file spend_tests.cpp.

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

◆ TestLoadWallet()

static std::shared_ptr<CWallet> wallet::TestLoadWallet ( WalletContext context)
static

Definition at line 46 of file wallet_tests.cpp.

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

◆ TestSimpleSpend()

static CMutableTransaction wallet::TestSimpleSpend ( const CTransaction from,
uint32_t  index,
const CKey key,
const CScript pubkey 
)
static

Definition at line 66 of file wallet_tests.cpp.

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

◆ TestUnloadWallet()

static void wallet::TestUnloadWallet ( std::shared_ptr< CWallet > &&  wallet)
static

Definition at line 59 of file wallet_tests.cpp.

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

◆ TestWatchOnlyPubKey()

static void wallet::TestWatchOnlyPubKey ( LegacyScriptPubKeyMan spk_man,
const CPubKey add_pubkey 
)
static

Definition at line 449 of file wallet_tests.cpp.

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

◆ TransactionDescriptionString()

static std::vector<RPCResult> wallet::TransactionDescriptionString ( )
static

Definition at line 400 of file transactions.cpp.

Here is the caller graph for this function:

◆ TxGetChange()

CAmount wallet::TxGetChange ( const CWallet wallet,
const CTransaction tx 
)

Definition at line 86 of file receive.cpp.

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

◆ TxGetCredit()

CAmount wallet::TxGetCredit ( const CWallet wallet,
const CTransaction tx,
const isminefilter filter 
)

Definition at line 39 of file receive.cpp.

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

◆ TxStateInterpretSerialized()

static TxState wallet::TxStateInterpretSerialized ( TxStateUnrecognized  data)
inlinestatic

Try to interpret deserialized TxStateUnrecognized data as a recognized state.

Definition at line 72 of file transaction.h.

Here is the caller graph for this function:

◆ TxStateSerializedBlockHash()

static uint256 wallet::TxStateSerializedBlockHash ( const TxState state)
inlinestatic

Get TxState serialized block hash. Inverse of TxStateInterpretSerialized.

Definition at line 87 of file transaction.h.

Here is the caller graph for this function:

◆ TxStateSerializedIndex()

static int wallet::TxStateSerializedIndex ( const TxState state)
inlinestatic

Get TxState serialized block index. Inverse of TxStateInterpretSerialized.

Definition at line 99 of file transaction.h.

Here is the caller graph for this function:

◆ unloadwallet()

static RPCHelpMan wallet::unloadwallet ( )
static

Definition at line 415 of file wallet.cpp.

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

◆ UnloadWallet()

void wallet::UnloadWallet ( std::shared_ptr< CWallet > &&  wallet)

Explicitly unload and delete the wallet.

Blocks the current thread after signaling the unload intent so that all wallet pointer owners release the wallet. Note that, when blocking is not required, the wallet is implicitly unloaded by the shared pointer deleter.

Definition at line 211 of file wallet.cpp.

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

◆ UnloadWallets()

void wallet::UnloadWallets ( WalletContext context)

Close all wallets.

Definition at line 171 of file load.cpp.

Here is the call graph for this function:

◆ UpdateWalletSetting()

static void wallet::UpdateWalletSetting ( interfaces::Chain chain,
const std::string &  wallet_name,
std::optional< bool >  load_on_startup,
std::vector< bilingual_str > &  warnings 
)
static

Definition at line 85 of file wallet.cpp.

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

◆ upgradewallet()

static RPCHelpMan wallet::upgradewallet ( )
static

Definition at line 544 of file wallet.cpp.

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

◆ VerifyWallets()

bool wallet::VerifyWallets ( WalletContext context)

Responsible for reading and validating the -wallet arguments and verifying the wallet database.

Definition at line 25 of file load.cpp.

Here is the call graph for this function:

◆ walletcreatefundedpsbt()

RPCHelpMan wallet::walletcreatefundedpsbt ( )

Definition at line 1607 of file spend.cpp.

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

◆ walletdisplayaddress()

RPCHelpMan wallet::walletdisplayaddress ( )

Definition at line 744 of file addresses.cpp.

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

◆ walletlock()

RPCHelpMan wallet::walletlock ( )

Definition at line 174 of file encrypt.cpp.

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

◆ walletpassphrase()

RPCHelpMan wallet::walletpassphrase ( )

Definition at line 11 of file encrypt.cpp.

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

◆ walletpassphrasechange()

RPCHelpMan wallet::walletpassphrasechange ( )

Definition at line 115 of file encrypt.cpp.

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

◆ walletprocesspsbt()

RPCHelpMan wallet::walletprocesspsbt ( )

Definition at line 1533 of file spend.cpp.

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

◆ WalletToolReleaseWallet()

static void wallet::WalletToolReleaseWallet ( CWallet wallet)
static

Definition at line 112 of file dump.cpp.

Here is the caller graph for this function:

◆ WalletTxToJSON()

static void wallet::WalletTxToJSON ( const CWallet wallet,
const CWalletTx wtx,
UniValue entry 
)
static

Definition at line 17 of file transactions.cpp.

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

Variable Documentation

◆ BIP32_HARDENED_KEY_LIMIT

const uint32_t wallet::BIP32_HARDENED_KEY_LIMIT = 0x80000000

Value for the first BIP 32 hardened derivation. Can be used as a bit mask and as a value. See BIP 32 for more details.

Definition at line 22 of file scriptpubkeyman.cpp.

◆ CHANGE_LOWER

constexpr CAmount wallet::CHANGE_LOWER {50000}
staticconstexpr

lower bound for randomly-chosen target change amount

Definition at line 21 of file coinselection.h.

◆ CHANGE_UPPER

constexpr CAmount wallet::CHANGE_UPPER {1000000}
staticconstexpr

upper bound for randomly-chosen target change amount

Definition at line 23 of file coinselection.h.

◆ DATA_END

const char* wallet::DATA_END = "DATA=END"
static

Definition at line 18 of file salvage.cpp.

◆ DEFAULT_ADDRESS_TYPE

constexpr OutputType wallet::DEFAULT_ADDRESS_TYPE {OutputType::BECH32}
constexpr

Default for -addresstype.

Definition at line 124 of file wallet.h.

◆ DEFAULT_AVOIDPARTIALSPENDS

constexpr bool wallet::DEFAULT_AVOIDPARTIALSPENDS = false
staticconstexpr

Default for -avoidpartialspends.

Definition at line 26 of file coincontrol.h.

◆ DEFAULT_CONSOLIDATE_FEERATE

const CAmount wallet::DEFAULT_CONSOLIDATE_FEERATE {10000}
static

-consolidatefeerate default

Definition at line 86 of file wallet.h.

◆ DEFAULT_DISABLE_WALLET

const bool wallet::DEFAULT_DISABLE_WALLET = false
static

Definition at line 108 of file wallet.h.

◆ DEFAULT_DISCARD_FEE

const CAmount wallet::DEFAULT_DISCARD_FEE = 10000
static

-discardfee default

Definition at line 82 of file wallet.h.

◆ DEFAULT_FALLBACK_FEE

const CAmount wallet::DEFAULT_FALLBACK_FEE = 0
static

-fallbackfee default

Definition at line 80 of file wallet.h.

◆ DEFAULT_FLUSHWALLET

const bool wallet::DEFAULT_FLUSHWALLET = true
static

Overview of wallet database classes:

  • WalletBatch is an abstract modifier object for the wallet database, and encapsulates a database batch update as well as methods to act on the database. It should be agnostic to the database implementation.

The following classes are implementation specific:

Definition at line 42 of file walletdb.h.

◆ DEFAULT_KEYPOOL_SIZE

const unsigned int wallet::DEFAULT_KEYPOOL_SIZE = 1000
static

Default for -keypool.

Definition at line 51 of file scriptpubkeyman.h.

◆ DEFAULT_MAX_AVOIDPARTIALSPEND_FEE

const CAmount wallet::DEFAULT_MAX_AVOIDPARTIALSPEND_FEE = 0
static

maximum fee increase allowed to do partial spend avoidance, even for nodes with this feature disabled by default

A value of -1 disables this feature completely. A value of 0 (current default) means to attempt to do partial spend avoidance, and use its results if the fees remain unchanged A value > 0 means to do partial spend avoidance if the fee difference against a regular coin selection instance is in the range [0..value].

Definition at line 94 of file wallet.h.

◆ DEFAULT_MAX_DEPTH

const int wallet::DEFAULT_MAX_DEPTH = 9999999

Definition at line 23 of file coincontrol.h.

◆ DEFAULT_MIN_DEPTH

const int wallet::DEFAULT_MIN_DEPTH = 0

Definition at line 22 of file coincontrol.h.

◆ DEFAULT_PAY_TX_FEE

constexpr CAmount wallet::DEFAULT_PAY_TX_FEE = 0
constexpr

-paytxfee default

Definition at line 78 of file wallet.h.

◆ DEFAULT_SPEND_ZEROCONF_CHANGE

const bool wallet::DEFAULT_SPEND_ZEROCONF_CHANGE = true
static

Default for -spendzeroconfchange.

Definition at line 100 of file wallet.h.

◆ DEFAULT_TRANSACTION_MAXFEE

constexpr CAmount wallet::DEFAULT_TRANSACTION_MAXFEE {COIN / 10}
constexpr

-maxtxfee default

Definition at line 111 of file wallet.h.

◆ DEFAULT_TRANSACTION_MINFEE

const CAmount wallet::DEFAULT_TRANSACTION_MINFEE = 1000
static

-mintxfee default

Definition at line 84 of file wallet.h.

◆ DEFAULT_TX_CONFIRM_TARGET

const unsigned int wallet::DEFAULT_TX_CONFIRM_TARGET = 6
static

-txconfirmtarget default

Definition at line 104 of file wallet.h.

◆ DEFAULT_WALLET_RBF

const bool wallet::DEFAULT_WALLET_RBF = true
static

-walletrbf default

Definition at line 106 of file wallet.h.

◆ DEFAULT_WALLET_REJECT_LONG_CHAINS

const bool wallet::DEFAULT_WALLET_REJECT_LONG_CHAINS {true}
static

Default for -walletrejectlongchains.

Definition at line 102 of file wallet.h.

◆ DEFAULT_WALLETBROADCAST

const bool wallet::DEFAULT_WALLETBROADCAST = true
static

Definition at line 107 of file wallet.h.

◆ DEFAULT_WALLETCROSSCHAIN

const bool wallet::DEFAULT_WALLETCROSSCHAIN = false
static

Definition at line 109 of file wallet.h.

◆ 

struct { ... } wallet::descending

◆ DUMMY_NESTED_P2WPKH_INPUT_SIZE

constexpr size_t wallet::DUMMY_NESTED_P2WPKH_INPUT_SIZE = 91
staticconstexpr

Pre-calculated constants for input size estimation in virtual size

Definition at line 117 of file wallet.h.

◆ DUMP_MAGIC

const std::string wallet::DUMP_MAGIC = "BITCOIN_CORE_WALLET_DUMP"
static

Definition at line 20 of file dump.cpp.

◆ DUMP_VERSION

uint32_t wallet::DUMP_VERSION = 1

Definition at line 21 of file dump.cpp.

◆ filter_confirmed

const CoinEligibilityFilter wallet::filter_confirmed(1, 1, 0) ( ,
,
 
)
static

◆ filter_standard

const CoinEligibilityFilter wallet::filter_standard(1, 6, 0) ( ,
,
 
)
static

◆ filter_standard_extra

const CoinEligibilityFilter wallet::filter_standard_extra(6, 6, 0) ( ,
,
 
)
static

◆ g_loading_wallet_mutex

GlobalMutex wallet::g_loading_wallet_mutex
static

Definition at line 187 of file wallet.cpp.

◆ g_wallet_release_cv

std::condition_variable wallet::g_wallet_release_cv
static

Definition at line 189 of file wallet.cpp.

◆ g_wallet_release_mutex

GlobalMutex wallet::g_wallet_release_mutex
static

Definition at line 188 of file wallet.cpp.

◆ HEADER_END

const char* wallet::HEADER_END = "HEADER=END"
static

Definition at line 16 of file salvage.cpp.

◆ HELP_REQUIRING_PASSPHRASE

const std::string wallet::HELP_REQUIRING_PASSPHRASE {"\nRequires wallet passphrase to be set with walletpassphrase call if wallet is encrypted.\n"}

Definition at line 20 of file util.cpp.

◆ HIGH_APS_FEE

constexpr CAmount wallet::HIGH_APS_FEE {COIN / 10000}
constexpr

discourage APS fee higher than this amount

Definition at line 96 of file wallet.h.

◆ HIGH_MAX_TX_FEE

constexpr CAmount wallet::HIGH_MAX_TX_FEE {100 * HIGH_TX_FEE_PER_KB}
constexpr

-maxtxfee will warn if called with a higher fee than this amount (in satoshis)

Definition at line 115 of file wallet.h.

◆ HIGH_TX_FEE_PER_KB

constexpr CAmount wallet::HIGH_TX_FEE_PER_KB {COIN / 100}
constexpr

Discourage users to set fees higher than this amount (in satoshis) per kB.

Definition at line 113 of file wallet.h.

◆ KNOWN_WALLET_FLAGS

constexpr uint64_t wallet::KNOWN_WALLET_FLAGS
staticconstexpr
Initial value:
=
@ WALLET_FLAG_EXTERNAL_SIGNER
Indicates that the wallet needs an external signer.
Definition: walletutil.h:69
@ WALLET_FLAG_LAST_HARDENED_XPUB_CACHED
Definition: walletutil.h:48
@ WALLET_FLAG_KEY_ORIGIN_METADATA
Definition: walletutil.h:45
@ WALLET_FLAG_AVOID_REUSE
Definition: walletutil.h:42
@ WALLET_FLAG_DESCRIPTORS
Indicate that this wallet supports DescriptorScriptPubKeyMan.
Definition: walletutil.h:66
@ WALLET_FLAG_DISABLE_PRIVATE_KEYS
Definition: walletutil.h:51
@ WALLET_FLAG_BLANK_WALLET
Flag set when a wallet contains no HD seed and no private keys, scripts, addresses,...
Definition: walletutil.h:63

Definition at line 126 of file wallet.h.

◆ LEGACY_OUTPUT_TYPES

const std::unordered_set<OutputType> wallet::LEGACY_OUTPUT_TYPES
static
Initial value:

OutputTypes supported by the LegacyScriptPubKeyMan.

Definition at line 262 of file scriptpubkeyman.h.

◆ MUTABLE_WALLET_FLAGS

constexpr uint64_t wallet::MUTABLE_WALLET_FLAGS
staticconstexpr
Initial value:

Definition at line 135 of file wallet.h.

◆ nextLockTime [1/2]

int wallet::nextLockTime = 0
static

Definition at line 37 of file coinselector_tests.cpp.

◆ nextLockTime [2/2]

int wallet::nextLockTime = 0
static

Definition at line 16 of file group_outputs_tests.cpp.

◆ OUTPUT_GROUP_MAX_ENTRIES

constexpr size_t wallet::OUTPUT_GROUP_MAX_ENTRIES {100}
staticconstexpr

Definition at line 31 of file spend.cpp.

◆ TIMESTAMP_MIN

const int64_t wallet::TIMESTAMP_MIN = 0
static

Definition at line 85 of file backup.cpp.

◆ TOTAL_TRIES

const size_t wallet::TOTAL_TRIES = 100000
static

Definition at line 64 of file coinselection.cpp.

◆ WALLET_CRYPTO_IV_SIZE

const unsigned int wallet::WALLET_CRYPTO_IV_SIZE = 16

Definition at line 16 of file crypter.h.

◆ WALLET_CRYPTO_KEY_SIZE

const unsigned int wallet::WALLET_CRYPTO_KEY_SIZE = 32

Definition at line 14 of file crypter.h.

◆ WALLET_CRYPTO_SALT_SIZE

const unsigned int wallet::WALLET_CRYPTO_SALT_SIZE = 8

Definition at line 15 of file crypter.h.

◆ WALLET_ENDPOINT_BASE

const std::string wallet::WALLET_ENDPOINT_BASE = "/wallet/"
static

Definition at line 19 of file util.cpp.

◆ WALLET_FLAG_CAVEATS

const std::map< uint64_t, std::string > wallet::WALLET_FLAG_CAVEATS
Initial value:
{
"You need to rescan the blockchain in order to correctly mark used "
"destinations in the past. Until this is done, some destinations may "
"be considered unused, even if the opposite is the case."
},
}

Definition at line 54 of file wallet.cpp.

◆ WALLET_FLAG_MAP

const std::map<std::string,WalletFlags> wallet::WALLET_FLAG_MAP
static
Initial value:
{
{"avoid_reuse", WALLET_FLAG_AVOID_REUSE},
{"key_origin_metadata", WALLET_FLAG_KEY_ORIGIN_METADATA},
{"last_hardened_xpub_cached", WALLET_FLAG_LAST_HARDENED_XPUB_CACHED},
{"disable_private_keys", WALLET_FLAG_DISABLE_PRIVATE_KEYS},
{"descriptor_wallet", WALLET_FLAG_DESCRIPTORS},
{"external_signer", WALLET_FLAG_EXTERNAL_SIGNER}
}

Definition at line 138 of file wallet.h.

◆ WALLET_INCREMENTAL_RELAY_FEE

const CAmount wallet::WALLET_INCREMENTAL_RELAY_FEE = 5000
static

minimum recommended increment for replacement txs

Definition at line 98 of file wallet.h.

◆ WALLET_SCHEMA_VERSION

constexpr int32_t wallet::WALLET_SCHEMA_VERSION = 0
staticconstexpr

Definition at line 24 of file sqlite.cpp.