Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
wallet
transaction.cpp
Go to the documentation of this file.
1
// Copyright (c) 2021-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <
wallet/transaction.h
>
6
7
#include <
interfaces/chain.h
>
8
9
using
interfaces::FoundBlock
;
10
11
namespace
wallet
{
12
bool
CWalletTx::IsEquivalentTo
(
const
CWalletTx
& _tx)
const
13
{
14
CMutableTransaction
tx1 {*this->
tx
};
15
CMutableTransaction
tx2 {*_tx.
tx
};
16
for
(
auto
& txin : tx1.
vin
) {
17
txin.scriptSig =
CScript
();
18
txin.scriptWitness.SetNull();
19
}
20
for
(
auto
& txin : tx2.
vin
) {
21
txin.scriptSig =
CScript
();
22
txin.scriptWitness.SetNull();
23
}
24
return
CTransaction
(tx1) ==
CTransaction
(tx2);
25
}
26
27
bool
CWalletTx::InMempool
()
const
28
{
29
return
state<TxStateInMempool>
();
30
}
31
32
int64_t
CWalletTx::GetTxTime
()
const
33
{
34
int64_t n =
nTimeSmart
;
35
return
n ? n :
nTimeReceived
;
36
}
37
38
void
CWalletTx::updateState
(
interfaces::Chain
& chain)
39
{
40
bool
active;
41
auto
lookup_block = [&](
const
uint256
& hash,
int
& height,
TxState
&
state
) {
42
// If tx block (or conflicting block) was reorged out of chain
43
// while the wallet was shutdown, change tx status to UNCONFIRMED
44
// and reset block height, hash, and index. ABANDONED tx don't have
45
// associated blocks and don't need to be updated. The case where a
46
// transaction was reorged out while online and then reconfirmed
47
// while offline is covered by the rescan logic.
48
if
(!chain.
findBlock
(hash,
FoundBlock
().inActiveChain(active).height(height)) || !active) {
49
state
=
TxStateInactive
{};
50
}
51
};
52
if
(
auto
* conf =
state<TxStateConfirmed>
()) {
53
lookup_block(conf->confirmed_block_hash, conf->confirmed_block_height,
m_state
);
54
}
else
if
(
auto
* conf =
state<TxStateBlockConflicted>
()) {
55
lookup_block(conf->conflicting_block_hash, conf->conflicting_block_height,
m_state
);
56
}
57
}
58
59
void
CWalletTx::CopyFrom
(
const
CWalletTx
& _tx)
60
{
61
*
this
= _tx;
62
}
63
}
// namespace wallet
CScript
Serialized script, used inside transaction inputs and outputs.
Definition
script.h:405
CTransaction
The basic transaction that is broadcasted on the network and contained in blocks.
Definition
transaction.h:281
interfaces::Chain
Definition
chain.h:118
interfaces::Chain::findBlock
virtual bool findBlock(const uint256 &hash, const FoundBlock &block={})=0
interfaces::FoundBlock
Definition
chain.h:53
uint256
256-bit opaque blob.
Definition
uint256.h:195
wallet::CWalletTx::m_state
TxState m_state
Definition
transaction.h:270
wallet::CWalletTx::state
const T * state() const
Definition
transaction.h:354
wallet::CWalletTx::IsEquivalentTo
bool IsEquivalentTo(const CWalletTx &tx) const
True if only scriptSigs are different.
Definition
transaction.cpp:12
wallet::CWalletTx::updateState
void updateState(interfaces::Chain &chain)
Definition
transaction.cpp:38
wallet::CWalletTx::CopyFrom
void CopyFrom(const CWalletTx &)
Definition
transaction.cpp:59
wallet::CWalletTx::nTimeReceived
unsigned int nTimeReceived
time received by this node
Definition
transaction.h:224
wallet::CWalletTx::tx
CTransactionRef tx
Definition
transaction.h:269
wallet::CWalletTx::InMempool
bool InMempool() const
Definition
transaction.cpp:27
wallet::CWalletTx::GetTxTime
int64_t GetTxTime() const
Definition
transaction.cpp:32
wallet::CWalletTx::CWalletTx
CWalletTx(CTransactionRef tx, const TxState &state)
Definition
transaction.h:253
wallet::CWalletTx::nTimeSmart
unsigned int nTimeSmart
Stable timestamp that never changes, and reflects the order a transaction was added to the wallet.
Definition
transaction.h:234
chain.h
wallet
Definition
wallet_balance.cpp:26
wallet::TxState
std::variant< TxStateConfirmed, TxStateInMempool, TxStateBlockConflicted, TxStateInactive, TxStateUnrecognized > TxState
All possible CWalletTx states.
Definition
transaction.h:79
CMutableTransaction
A mutable version of CTransaction.
Definition
transaction.h:358
CMutableTransaction::vin
std::vector< CTxIn > vin
Definition
transaction.h:359
wallet::TxStateInactive
Definition
transaction.h:59
transaction.h
Generated on
for Bitcoin Core by
1.17.0