Add GetTxid() which returns a non-malleable txid.
This commit is contained in:
parent
6dfc9e7a7c
commit
49689a574c
|
@ -223,3 +223,31 @@ std::string CTransaction::ToString() const
|
||||||
str += " " + vout[i].ToString() + "\n";
|
str += " " + vout[i].ToString() + "\n";
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return a txid which is non-malleable.
|
||||||
|
// Signature data is cleared before the transaction is serialized and hashed.
|
||||||
|
uint256 CTransaction::GetTxid() const
|
||||||
|
{
|
||||||
|
// Create a deep copy of this transaction
|
||||||
|
CMutableTransaction tx(*this);
|
||||||
|
|
||||||
|
// Clear sigscript from all transaction inputs.
|
||||||
|
for (CTxIn & txIn : tx.vin) {
|
||||||
|
txIn.scriptSig.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear joinSplitSig by filling the buffer with zero
|
||||||
|
tx.joinSplitSig.assign(0);
|
||||||
|
|
||||||
|
// Return double SHA256 hash
|
||||||
|
return tx.GetHash();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Return a txid which is non-malleable.
|
||||||
|
uint256 CMutableTransaction::GetTxid() const
|
||||||
|
{
|
||||||
|
CTransaction tx(*this);
|
||||||
|
return tx.GetTxid();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -373,6 +373,10 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string ToString() const;
|
std::string ToString() const;
|
||||||
|
|
||||||
|
// Return the txid which is the double SHA256 hash of the transaction.
|
||||||
|
uint256 GetTxid() const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** A mutable version of CTransaction. */
|
/** A mutable version of CTransaction. */
|
||||||
|
@ -411,6 +415,9 @@ struct CMutableTransaction
|
||||||
* fly, as opposed to GetHash() in CTransaction, which uses a cached result.
|
* fly, as opposed to GetHash() in CTransaction, which uses a cached result.
|
||||||
*/
|
*/
|
||||||
uint256 GetHash() const;
|
uint256 GetHash() const;
|
||||||
|
|
||||||
|
// Compute a non-malleable txid on the fly.
|
||||||
|
uint256 GetTxid() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // BITCOIN_PRIMITIVES_TRANSACTION_H
|
#endif // BITCOIN_PRIMITIVES_TRANSACTION_H
|
||||||
|
|
Loading…
Reference in New Issue