Bitcoin Core  27.99.0
P2P Digital Currency
Public Types | Public Member Functions | Public Attributes | Private Member Functions | List of all members
wallet::CWalletTx Class Reference

A transaction with a bunch of additional info that only the owner cares about. More...

#include <transaction.h>

Collaboration diagram for wallet::CWalletTx:
[legend]

Public Types

enum  AmountType {
  DEBIT , CREDIT , IMMATURE_CREDIT , AVAILABLE_CREDIT ,
  AMOUNTTYPE_ENUM_ELEMENTS
}
 

Public Member Functions

 CWalletTx (CTransactionRef tx, const TxState &state)
 
void Init ()
 
template<typename Stream >
void Serialize (Stream &s) const
 
template<typename Stream >
void Unserialize (Stream &s)
 
void SetTx (CTransactionRef arg)
 
void MarkDirty ()
 make sure balances are recalculated More...
 
bool IsEquivalentTo (const CWalletTx &tx) const
 True if only scriptSigs are different. More...
 
bool InMempool () const
 
int64_t GetTxTime () const
 
template<typename T >
const T * state () const
 
template<typename T >
T * state ()
 
void updateState (interfaces::Chain &chain)
 Update transaction state when attaching to a chain, filling in heights of conflicted and confirmed blocks. More...
 
bool isAbandoned () const
 
bool isMempoolConflicted () const
 
bool isBlockConflicted () const
 
bool isInactive () const
 
bool isUnconfirmed () const
 
bool isConfirmed () const
 
const TxidGetHash () const LIFETIMEBOUND
 
const WtxidGetWitnessHash () const LIFETIMEBOUND
 
bool IsCoinBase () const
 
void CopyFrom (const CWalletTx &)
 

Public Attributes

mapValue_t mapValue
 Key/value map with information about the transaction. More...
 
std::vector< std::pair< std::string, std::string > > vOrderForm
 
unsigned int fTimeReceivedIsTxTime
 
unsigned int nTimeReceived
 time received by this node More...
 
unsigned int nTimeSmart
 Stable timestamp that never changes, and reflects the order a transaction was added to the wallet. More...
 
bool fFromMe
 From me flag is set to 1 for transactions that were created by the wallet on this bitcoin node, and set to 0 for transactions that were created externally and came in through the network or sendrawtransaction RPC. More...
 
int64_t nOrderPos
 position in ordered transaction list More...
 
std::multimap< int64_t, CWalletTx * >::const_iterator m_it_wtxOrdered
 
CachableAmount m_amounts [AMOUNTTYPE_ENUM_ELEMENTS]
 
bool m_is_cache_empty {true}
 This flag is true if all m_amounts caches are empty. More...
 
bool fChangeCached
 
CAmount nChangeCached
 
CTransactionRef tx
 
TxState m_state
 
std::set< Txidmempool_conflicts
 

Private Member Functions

 CWalletTx (const CWalletTx &)=default
 
CWalletTxoperator= (const CWalletTx &)=default
 

Detailed Description

A transaction with a bunch of additional info that only the owner cares about.

It includes any unrecorded transactions needed to link it back to the block chain.

Definition at line 176 of file transaction.h.

Member Enumeration Documentation

◆ AmountType

Enumerator
DEBIT 
CREDIT 
IMMATURE_CREDIT 
AVAILABLE_CREDIT 
AMOUNTTYPE_ENUM_ELEMENTS 

Definition at line 228 of file transaction.h.

Constructor & Destructor Documentation

◆ CWalletTx() [1/2]

wallet::CWalletTx::CWalletTx ( CTransactionRef  tx,
const TxState state 
)
inline

Definition at line 240 of file transaction.h.

Here is the call graph for this function:

◆ CWalletTx() [2/2]

wallet::CWalletTx::CWalletTx ( const CWalletTx )
privatedefault

Member Function Documentation

◆ CopyFrom()

void wallet::CWalletTx::CopyFrom ( const CWalletTx _tx)

Definition at line 53 of file transaction.cpp.

◆ GetHash()

const Txid& wallet::CWalletTx::GetHash ( ) const
inline

Definition at line 351 of file transaction.h.

Here is the caller graph for this function:

◆ GetTxTime()

int64_t wallet::CWalletTx::GetTxTime ( ) const

Definition at line 26 of file transaction.cpp.

Here is the caller graph for this function:

◆ GetWitnessHash()

const Wtxid& wallet::CWalletTx::GetWitnessHash ( ) const
inline

Definition at line 352 of file transaction.h.

◆ Init()

void wallet::CWalletTx::Init ( )
inline

Definition at line 245 of file transaction.h.

Here is the caller graph for this function:

◆ InMempool()

bool wallet::CWalletTx::InMempool ( ) const

Definition at line 21 of file transaction.cpp.

Here is the caller graph for this function:

◆ isAbandoned()

bool wallet::CWalletTx::isAbandoned ( ) const
inline

Definition at line 345 of file transaction.h.

Here is the caller graph for this function:

◆ isBlockConflicted()

bool wallet::CWalletTx::isBlockConflicted ( ) const
inline

Definition at line 347 of file transaction.h.

Here is the caller graph for this function:

◆ IsCoinBase()

bool wallet::CWalletTx::IsCoinBase ( ) const
inline

Definition at line 353 of file transaction.h.

Here is the caller graph for this function:

◆ isConfirmed()

bool wallet::CWalletTx::isConfirmed ( ) const
inline

Definition at line 350 of file transaction.h.

Here is the caller graph for this function:

◆ IsEquivalentTo()

bool wallet::CWalletTx::IsEquivalentTo ( const CWalletTx tx) const

True if only scriptSigs are different.

Definition at line 12 of file transaction.cpp.

Here is the caller graph for this function:

◆ isInactive()

bool wallet::CWalletTx::isInactive ( ) const
inline

Definition at line 348 of file transaction.h.

Here is the caller graph for this function:

◆ isMempoolConflicted()

bool wallet::CWalletTx::isMempoolConflicted ( ) const
inline

Definition at line 346 of file transaction.h.

Here is the caller graph for this function:

◆ isUnconfirmed()

bool wallet::CWalletTx::isUnconfirmed ( ) const
inline

Definition at line 349 of file transaction.h.

Here is the call graph for this function:

◆ MarkDirty()

void wallet::CWalletTx::MarkDirty ( )
inline

make sure balances are recalculated

Definition at line 321 of file transaction.h.

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

◆ operator=()

CWalletTx& wallet::CWalletTx::operator= ( const CWalletTx )
privatedefault

◆ Serialize()

template<typename Stream >
void wallet::CWalletTx::Serialize ( Stream &  s) const
inline

< Used to be vMerkleBranch

< Used to be vtxPrev

< Used to be fSpent

Definition at line 270 of file transaction.h.

Here is the call graph for this function:

◆ SetTx()

void wallet::CWalletTx::SetTx ( CTransactionRef  arg)
inline

Definition at line 315 of file transaction.h.

Here is the caller graph for this function:

◆ state() [1/2]

template<typename T >
T* wallet::CWalletTx::state ( )
inline

Definition at line 339 of file transaction.h.

◆ state() [2/2]

template<typename T >
const T* wallet::CWalletTx::state ( ) const
inline

Definition at line 338 of file transaction.h.

Here is the caller graph for this function:

◆ Unserialize()

template<typename Stream >
void wallet::CWalletTx::Unserialize ( Stream &  s)
inline

< Used to be vMerkleBranch

< Used to be vtxPrev

Used to be fSpent

Definition at line 291 of file transaction.h.

Here is the call graph for this function:

◆ updateState()

void wallet::CWalletTx::updateState ( interfaces::Chain chain)

Update transaction state when attaching to a chain, filling in heights of conflicted and confirmed blocks.

Definition at line 32 of file transaction.cpp.

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

Member Data Documentation

◆ fChangeCached

bool wallet::CWalletTx::fChangeCached
mutable

Definition at line 237 of file transaction.h.

◆ fFromMe

bool wallet::CWalletTx::fFromMe

From me flag is set to 1 for transactions that were created by the wallet on this bitcoin node, and set to 0 for transactions that were created externally and came in through the network or sendrawtransaction RPC.

Definition at line 223 of file transaction.h.

◆ fTimeReceivedIsTxTime

unsigned int wallet::CWalletTx::fTimeReceivedIsTxTime

Definition at line 206 of file transaction.h.

◆ m_amounts

CachableAmount wallet::CWalletTx::m_amounts[AMOUNTTYPE_ENUM_ELEMENTS]
mutable

Definition at line 229 of file transaction.h.

◆ m_is_cache_empty

bool wallet::CWalletTx::m_is_cache_empty {true}
mutable

This flag is true if all m_amounts caches are empty.

This is particularly useful in places where MarkDirty is conditionally called and the condition can be expensive and thus can be skipped if the flag is true. See MarkDestinationsDirty.

Definition at line 236 of file transaction.h.

◆ m_it_wtxOrdered

std::multimap<int64_t, CWalletTx*>::const_iterator wallet::CWalletTx::m_it_wtxOrdered

Definition at line 225 of file transaction.h.

◆ m_state

TxState wallet::CWalletTx::m_state

Definition at line 259 of file transaction.h.

◆ mapValue

mapValue_t wallet::CWalletTx::mapValue

Key/value map with information about the transaction.

The following keys can be read and written through the map and are serialized in the wallet database:

"comment", "to"   - comment strings provided to sendtoaddress,
                    and sendmany wallet RPCs
"replaces_txid"   - txid (as HexStr) of transaction replaced by
                    bumpfee on transaction created by bumpfee
"replaced_by_txid" - txid (as HexStr) of transaction created by
                    bumpfee on transaction replaced by bumpfee
"from", "message" - obsolete fields that could be set in UI prior to
                    2011 (removed in commit 4d9b223)

The following keys are serialized in the wallet database, but shouldn't be read or written through the map (they will be temporarily added and removed from the map during serialization):

"fromaccount"     - serialized strFromAccount value
"n"               - serialized nOrderPos value
"timesmart"       - serialized nTimeSmart value
"spent"           - serialized vfSpent value that existed prior to
                    2014 (removed in commit 93a18a3)

Definition at line 204 of file transaction.h.

◆ mempool_conflicts

std::set<Txid> wallet::CWalletTx::mempool_conflicts

Definition at line 267 of file transaction.h.

◆ nChangeCached

CAmount wallet::CWalletTx::nChangeCached
mutable

Definition at line 238 of file transaction.h.

◆ nOrderPos

int64_t wallet::CWalletTx::nOrderPos

position in ordered transaction list

Definition at line 224 of file transaction.h.

◆ nTimeReceived

unsigned int wallet::CWalletTx::nTimeReceived

time received by this node

Definition at line 207 of file transaction.h.

◆ nTimeSmart

unsigned int wallet::CWalletTx::nTimeSmart

Stable timestamp that never changes, and reflects the order a transaction was added to the wallet.

Timestamp is based on the block time for a transaction added as part of a block, or else the time when the transaction was received if it wasn't part of a block, with the timestamp adjusted in both cases so timestamp order matches the order transactions were added to the wallet. More details can be found in CWallet::ComputeTimeSmart().

Definition at line 217 of file transaction.h.

◆ tx

CTransactionRef wallet::CWalletTx::tx

Definition at line 258 of file transaction.h.

◆ vOrderForm

std::vector<std::pair<std::string, std::string> > wallet::CWalletTx::vOrderForm

Definition at line 205 of file transaction.h.


The documentation for this class was generated from the following files: