aboutsummaryrefslogtreecommitdiff
path: root/src/primitives
diff options
context:
space:
mode:
Diffstat (limited to 'src/primitives')
-rw-r--r--src/primitives/transaction.cpp16
-rw-r--r--src/primitives/transaction.h19
2 files changed, 19 insertions, 16 deletions
diff --git a/src/primitives/transaction.cpp b/src/primitives/transaction.cpp
index 2c913bf432..1ad8345fcb 100644
--- a/src/primitives/transaction.cpp
+++ b/src/primitives/transaction.cpp
@@ -12,6 +12,7 @@
#include <tinyformat.h>
#include <uint256.h>
#include <util/strencodings.h>
+#include <util/transaction_identifier.h>
#include <version.h>
#include <cassert>
@@ -65,22 +66,23 @@ std::string CTxOut::ToString() const
CMutableTransaction::CMutableTransaction() : nVersion(CTransaction::CURRENT_VERSION), nLockTime(0) {}
CMutableTransaction::CMutableTransaction(const CTransaction& tx) : vin(tx.vin), vout(tx.vout), nVersion(tx.nVersion), nLockTime(tx.nLockTime) {}
-uint256 CMutableTransaction::GetHash() const
+Txid CMutableTransaction::GetHash() const
{
- return (CHashWriter{SERIALIZE_TRANSACTION_NO_WITNESS} << *this).GetHash();
+ return Txid::FromUint256((CHashWriter{SERIALIZE_TRANSACTION_NO_WITNESS} << *this).GetHash());
}
-uint256 CTransaction::ComputeHash() const
+Txid CTransaction::ComputeHash() const
{
- return (CHashWriter{SERIALIZE_TRANSACTION_NO_WITNESS} << *this).GetHash();
+ return Txid::FromUint256((CHashWriter{SERIALIZE_TRANSACTION_NO_WITNESS} << *this).GetHash());
}
-uint256 CTransaction::ComputeWitnessHash() const
+Wtxid CTransaction::ComputeWitnessHash() const
{
if (!HasWitness()) {
- return hash;
+ return Wtxid::FromUint256(hash.ToUint256());
}
- return (CHashWriter{0} << *this).GetHash();
+
+ return Wtxid::FromUint256((CHashWriter{0} << *this).GetHash());
}
CTransaction::CTransaction(const CMutableTransaction& tx) : vin(tx.vin), vout(tx.vout), nVersion(tx.nVersion), nLockTime(tx.nLockTime), hash{ComputeHash()}, m_witness_hash{ComputeWitnessHash()} {}
diff --git a/src/primitives/transaction.h b/src/primitives/transaction.h
index bd7eb16bec..89deb9de4d 100644
--- a/src/primitives/transaction.h
+++ b/src/primitives/transaction.h
@@ -6,11 +6,12 @@
#ifndef BITCOIN_PRIMITIVES_TRANSACTION_H
#define BITCOIN_PRIMITIVES_TRANSACTION_H
+#include <attributes.h>
#include <consensus/amount.h>
-#include <prevector.h>
#include <script/script.h>
#include <serialize.h>
#include <uint256.h>
+#include <util/transaction_identifier.h> // IWYU pragma: export
#include <cstddef>
#include <cstdint>
@@ -309,11 +310,11 @@ public:
private:
/** Memory only. */
- const uint256 hash;
- const uint256 m_witness_hash;
+ const Txid hash;
+ const Wtxid m_witness_hash;
- uint256 ComputeHash() const;
- uint256 ComputeWitnessHash() const;
+ Txid ComputeHash() const;
+ Wtxid ComputeWitnessHash() const;
public:
/** Convert a CMutableTransaction into a CTransaction. */
@@ -334,8 +335,8 @@ public:
return vin.empty() && vout.empty();
}
- const uint256& GetHash() const { return hash; }
- const uint256& GetWitnessHash() const { return m_witness_hash; };
+ const Txid& GetHash() const LIFETIMEBOUND { return hash; }
+ const Wtxid& GetWitnessHash() const LIFETIMEBOUND { return m_witness_hash; };
// Return sum of txouts.
CAmount GetValueOut() const;
@@ -405,7 +406,7 @@ struct CMutableTransaction
/** Compute the hash of this CMutableTransaction. This is computed on the
* fly, as opposed to GetHash() in CTransaction, which uses a cached result.
*/
- uint256 GetHash() const;
+ Txid GetHash() const;
bool HasWitness() const
{
@@ -432,7 +433,7 @@ public:
static GenTxid Txid(const uint256& hash) { return GenTxid{false, hash}; }
static GenTxid Wtxid(const uint256& hash) { return GenTxid{true, hash}; }
bool IsWtxid() const { return m_is_wtxid; }
- const uint256& GetHash() const { return m_hash; }
+ const uint256& GetHash() const LIFETIMEBOUND { return m_hash; }
friend bool operator==(const GenTxid& a, const GenTxid& b) { return a.m_is_wtxid == b.m_is_wtxid && a.m_hash == b.m_hash; }
friend bool operator<(const GenTxid& a, const GenTxid& b) { return std::tie(a.m_is_wtxid, a.m_hash) < std::tie(b.m_is_wtxid, b.m_hash); }
};