6 #ifndef BITCOIN_PRIMITIVES_TRANSACTION_H 7 #define BITCOIN_PRIMITIVES_TRANSACTION_H 31 template <
typename Stream,
typename Operation>
43 return cmp < 0 || (cmp == 0 && a.
n < b.
n);
108 template <
typename Stream,
typename Operation>
148 template <
typename Stream,
typename Operation>
198 template<
typename Stream,
typename TxType>
203 unsigned char flags = 0;
208 if (tx.vin.size() == 0 && fAllowWitness) {
219 if ((
flags & 1) && fAllowWitness) {
222 for (
size_t i = 0; i < tx.vin.size(); i++) {
223 s >> tx.vin[i].scriptWitness.stack;
225 if (!tx.HasWitness()) {
227 throw std::ios_base::failure(
"Superfluous witness record");
232 throw std::ios_base::failure(
"Unknown transaction optional data");
237 template<
typename Stream,
typename TxType>
242 unsigned char flags = 0;
246 if (tx.HasWitness()) {
252 std::vector<CTxIn> vinDummy;
259 for (
size_t i = 0; i < tx.vin.size(); i++) {
260 s << tx.vin[i].scriptWitness.stack;
287 const std::vector<CTxIn>
vin;
288 const std::vector<CTxOut>
vout;
308 template <
typename Stream>
315 template <
typename Stream>
319 return vin.empty() &&
vout.empty();
339 return (
vin.size() == 1 &&
vin[0].prevout.IsNull());
356 for (
size_t i = 0; i <
vin.size(); i++) {
376 template <
typename Stream>
382 template <
typename Stream>
387 template <
typename Stream>
399 for (
size_t i = 0; i <
vin.size(); i++) {
412 #endif // BITCOIN_PRIMITIVES_TRANSACTION_H std::shared_ptr< const CTransaction > CTransactionRef
Definition: transaction.h:408
uint32_t n
Definition: transaction.h:22
bool IsNull() const
Definition: transaction.h:318
void Serialize(Stream &s) const
Definition: transaction.h:377
bool IsNull() const
Definition: transaction.h:38
Definition: transaction.h:366
static const int SERIALIZE_TRANSACTION_NO_WITNESS
Definition: transaction.h:15
const uint32_t nLockTime
Definition: transaction.h:290
Definition: transaction.h:63
void SetNull()
Definition: uint256.h:39
friend bool operator!=(const COutPoint &a, const COutPoint &b)
Definition: transaction.h:51
CMutableTransaction()
Definition: transaction.cpp:57
static const int32_t CURRENT_VERSION
Definition: transaction.h:274
bool HasWitness() const
Definition: transaction.h:397
ADD_SERIALIZE_METHODS
Definition: transaction.h:146
uint32_t nSequence
Definition: transaction.h:68
const uint256 m_witness_hash
Definition: transaction.h:295
friend bool operator==(const CTxOut &a, const CTxOut &b)
Definition: transaction.h:165
bool IsNull() const
Definition: transaction.h:160
bool IsNull() const
Definition: script.h:579
constexpr deserialize_type deserialize
Definition: serialize.h:41
static CTransactionRef MakeTransactionRef()
Definition: transaction.h:409
CAmount nValue
Definition: transaction.h:136
static const uint32_t SEQUENCE_FINAL
Definition: transaction.h:73
CTxOut()
Definition: transaction.h:139
COutPoint(const uint256 &hashIn, uint32_t nIn)
Definition: transaction.h:27
std::vector< CTxIn > vin
Definition: transaction.h:368
CAmount GetValueOut() const
Definition: transaction.cpp:83
CMutableTransaction(deserialize_type, Stream &s)
Definition: transaction.h:388
ADD_SERIALIZE_METHODS
Definition: transaction.h:29
int32_t nVersion
Definition: transaction.h:370
bool IsNull() const
Definition: uint256.h:31
Definition: serialize.h:40
int Compare(const base_blob &other) const
Definition: uint256.h:44
static const uint32_t SEQUENCE_LOCKTIME_MASK
Definition: transaction.h:87
friend bool operator<(const COutPoint &a, const COutPoint &b)
Definition: transaction.h:40
CScript scriptSig
Definition: transaction.h:67
static constexpr uint32_t NULL_INDEX
Definition: transaction.h:24
int64_t CAmount
Definition: amount.h:12
uint256 ComputeWitnessHash() const
Definition: transaction.cpp:70
unsigned int GetTotalSize() const
Definition: transaction.cpp:94
const int32_t nVersion
Definition: transaction.h:289
COutPoint prevout
Definition: transaction.h:66
Definition: transaction.h:270
Definition: transaction.h:18
unsigned int uint32_t
Definition: stdint.h:21
void Serialize(Stream &s) const
Definition: transaction.h:309
std::string ToString() const
Definition: transaction.cpp:31
void SetNull()
Definition: transaction.h:37
const uint256 hash
Definition: transaction.h:294
friend bool operator==(const CTransaction &a, const CTransaction &b)
Definition: transaction.h:342
void SerializeTransaction(const TxType &tx, Stream &s)
Definition: transaction.h:238
COutPoint()
Definition: transaction.h:26
friend bool operator!=(const CTxOut &a, const CTxOut &b)
Definition: transaction.h:171
void SerializationOp(Stream &s, Operation ser_action)
Definition: transaction.h:109
friend bool operator==(const CTxIn &a, const CTxIn &b)
Definition: transaction.h:115
CScript scriptPubKey
Definition: transaction.h:137
static const int SEQUENCE_LOCKTIME_GRANULARITY
Definition: transaction.h:96
std::vector< CTxOut > vout
Definition: transaction.h:369
void SerializationOp(Stream &s, Operation ser_action)
Definition: transaction.h:32
int flags
Definition: bitcoin-tx.cpp:507
uint32_t nLockTime
Definition: transaction.h:371
CScriptWitness scriptWitness
Only serialized through CTransaction.
Definition: transaction.h:69
Definition: uint256.h:121
const std::vector< CTxIn > vin
Definition: transaction.h:287
static const int32_t MAX_STANDARD_VERSION
Definition: transaction.h:280
std::string ToString() const
Definition: transaction.cpp:12
bool HasWitness() const
Definition: transaction.h:354
void Unserialize(Stream &s)
Definition: transaction.h:383
uint256 GetHash() const
Definition: transaction.cpp:60
std::string ToString() const
Definition: transaction.cpp:52
const uint256 & GetHash() const
Definition: transaction.h:322
CTransaction()
Definition: transaction.cpp:79
std::string ToString() const
Definition: transaction.cpp:99
bool IsCoinBase() const
Definition: transaction.h:337
friend bool operator!=(const CTxIn &a, const CTxIn &b)
Definition: transaction.h:122
const std::vector< CTxOut > vout
Definition: transaction.h:288
ADD_SERIALIZE_METHODS
Definition: transaction.h:106
CTransaction(deserialize_type, Stream &s)
Definition: transaction.h:316
uint256 ComputeHash() const
Definition: transaction.cpp:65
static const uint32_t SEQUENCE_LOCKTIME_TYPE_FLAG
Definition: transaction.h:83
void clear()
Definition: script.h:562
signed int int32_t
Definition: stdint.h:17
void SerializationOp(Stream &s, Operation ser_action)
Definition: transaction.h:149
const uint256 & GetWitnessHash() const
Definition: transaction.h:323
void UnserializeTransaction(TxType &tx, Stream &s)
Definition: transaction.h:199
static const uint32_t SEQUENCE_LOCKTIME_DISABLE_FLAG
Definition: transaction.h:78
#define READWRITE(...)
Definition: serialize.h:184
friend bool operator!=(const CTransaction &a, const CTransaction &b)
Definition: transaction.h:347
void SetNull()
Definition: transaction.h:154
uint256 hash
Definition: transaction.h:21
friend bool operator==(const COutPoint &a, const COutPoint &b)
Definition: transaction.h:46
CTxIn()
Definition: transaction.h:98
Definition: transaction.h:133