Browse Source

Fix issue where a coinbase tx should have it's sigscript hashed

to avoid duplicate txids, as discussed in BIP34 and BIP30.
pull/145/head
Simon 8 years ago
parent
commit
90a9019387
  1. 15
      src/primitives/transaction.cpp

15
src/primitives/transaction.cpp

@ -234,14 +234,17 @@ void CTransaction::UpdateTxid() 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();
// We keep the sigscript for coinbase txs to avoid duplicate txids (BIP34 and BIP30)
if (!IsCoinBase()) {
// 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);
}
// Clear joinSplitSig by filling the buffer with zero
tx.joinSplitSig.assign(0);
// Return double SHA256 hash
*const_cast<uint256*>(&txid) = tx.GetSerializeHash();
}

Loading…
Cancel
Save