aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/transaction.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/wallet/transaction.h')
-rw-r--r--src/wallet/transaction.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/wallet/transaction.h b/src/wallet/transaction.h
index db858fa5ba..ddeb931112 100644
--- a/src/wallet/transaction.h
+++ b/src/wallet/transaction.h
@@ -22,6 +22,10 @@
#include <variant>
#include <vector>
+namespace interfaces {
+class Chain;
+} // namespace interfaces
+
namespace wallet {
//! State of transaction confirmed in a block.
struct TxStateConfirmed {
@@ -161,7 +165,7 @@ public:
std::vector<uint256> vMerkleBranch;
int nIndex;
- s >> tx >> hashBlock >> vMerkleBranch >> nIndex;
+ s >> TX_WITH_WITNESS(tx) >> hashBlock >> vMerkleBranch >> nIndex;
}
};
@@ -272,7 +276,7 @@ public:
bool dummy_bool = false; //!< Used to be fSpent
uint256 serializedHash = TxStateSerializedBlockHash(m_state);
int serializedIndex = TxStateSerializedIndex(m_state);
- s << tx << serializedHash << dummy_vector1 << serializedIndex << dummy_vector2 << mapValueCopy << vOrderForm << fTimeReceivedIsTxTime << nTimeReceived << fFromMe << dummy_bool;
+ s << TX_WITH_WITNESS(tx) << serializedHash << dummy_vector1 << serializedIndex << dummy_vector2 << mapValueCopy << vOrderForm << fTimeReceivedIsTxTime << nTimeReceived << fFromMe << dummy_bool;
}
template<typename Stream>
@@ -285,7 +289,7 @@ public:
bool dummy_bool; //! Used to be fSpent
uint256 serialized_block_hash;
int serializedIndex;
- s >> tx >> serialized_block_hash >> dummy_vector1 >> serializedIndex >> dummy_vector2 >> mapValue >> vOrderForm >> fTimeReceivedIsTxTime >> nTimeReceived >> fFromMe >> dummy_bool;
+ s >> TX_WITH_WITNESS(tx) >> serialized_block_hash >> dummy_vector1 >> serializedIndex >> dummy_vector2 >> mapValue >> vOrderForm >> fTimeReceivedIsTxTime >> nTimeReceived >> fFromMe >> dummy_bool;
m_state = TxStateInterpretSerialized({serialized_block_hash, serializedIndex});
@@ -326,6 +330,10 @@ public:
template<typename T> const T* state() const { return std::get_if<T>(&m_state); }
template<typename T> T* state() { return std::get_if<T>(&m_state); }
+ //! Update transaction state when attaching to a chain, filling in heights
+ //! of conflicted and confirmed blocks
+ void updateState(interfaces::Chain& chain);
+
bool isAbandoned() const { return state<TxStateInactive>() && state<TxStateInactive>()->abandoned; }
bool isConflicted() const { return state<TxStateConflicted>(); }
bool isInactive() const { return state<TxStateInactive>(); }