aboutsummaryrefslogtreecommitdiff
path: root/src/script
diff options
context:
space:
mode:
Diffstat (limited to 'src/script')
-rw-r--r--src/script/bitcoinconsensus.cpp3
-rw-r--r--src/script/script.h2
-rw-r--r--src/script/sign.cpp9
3 files changed, 6 insertions, 8 deletions
diff --git a/src/script/bitcoinconsensus.cpp b/src/script/bitcoinconsensus.cpp
index 036d6ca7bf..be7fa5d3b7 100644
--- a/src/script/bitcoinconsensus.cpp
+++ b/src/script/bitcoinconsensus.cpp
@@ -93,8 +93,9 @@ static int verify_script(const unsigned char *scriptPubKey, unsigned int scriptP
// Regardless of the verification result, the tx did not error.
set_error(err, bitcoinconsensus_ERR_OK);
+
PrecomputedTransactionData txdata(tx);
- return VerifyScript(tx.vin[nIn].scriptSig, CScript(scriptPubKey, scriptPubKey + scriptPubKeyLen), nIn < tx.wit.vtxinwit.size() ? &tx.wit.vtxinwit[nIn].scriptWitness : NULL, flags, TransactionSignatureChecker(&tx, nIn, amount, txdata), NULL);
+ return VerifyScript(tx.vin[nIn].scriptSig, CScript(scriptPubKey, scriptPubKey + scriptPubKeyLen), &tx.vin[nIn].scriptWitness, flags, TransactionSignatureChecker(&tx, nIn, amount, txdata), NULL);
} catch (const std::exception&) {
return set_error(err, bitcoinconsensus_ERR_TX_DESERIALIZE); // Error deserializing
}
diff --git a/src/script/script.h b/src/script/script.h
index 278774d32e..76419c1495 100644
--- a/src/script/script.h
+++ b/src/script/script.h
@@ -656,6 +656,8 @@ struct CScriptWitness
bool IsNull() const { return stack.empty(); }
+ void SetNull() { stack.clear(); stack.shrink_to_fit(); }
+
std::string ToString() const;
};
diff --git a/src/script/sign.cpp b/src/script/sign.cpp
index f552ad5bba..b008df2591 100644
--- a/src/script/sign.cpp
+++ b/src/script/sign.cpp
@@ -194,9 +194,7 @@ SignatureData DataFromTransaction(const CMutableTransaction& tx, unsigned int nI
SignatureData data;
assert(tx.vin.size() > nIn);
data.scriptSig = tx.vin[nIn].scriptSig;
- if (tx.wit.vtxinwit.size() > nIn) {
- data.scriptWitness = tx.wit.vtxinwit[nIn].scriptWitness;
- }
+ data.scriptWitness = tx.vin[nIn].scriptWitness;
return data;
}
@@ -204,10 +202,7 @@ void UpdateTransaction(CMutableTransaction& tx, unsigned int nIn, const Signatur
{
assert(tx.vin.size() > nIn);
tx.vin[nIn].scriptSig = data.scriptSig;
- if (!data.scriptWitness.IsNull() || tx.wit.vtxinwit.size() > nIn) {
- tx.wit.vtxinwit.resize(tx.vin.size());
- tx.wit.vtxinwit[nIn].scriptWitness = data.scriptWitness;
- }
+ tx.vin[nIn].scriptWitness = data.scriptWitness;
}
bool SignSignature(const CKeyStore &keystore, const CScript& fromPubKey, CMutableTransaction& txTo, unsigned int nIn, const CAmount& amount, int nHashType)