Add GetTxid() which returns a non-malleable txid.
This commit is contained in:
@@ -223,3 +223,31 @@ std::string CTransaction::ToString() const
|
||||
str += " " + vout[i].ToString() + "\n";
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user