diff --git a/src/bitcoin-tx.cpp b/src/bitcoin-tx.cpp --- a/src/bitcoin-tx.cpp +++ b/src/bitcoin-tx.cpp @@ -695,8 +695,7 @@ UpdateTransaction(mergedTx, i, sigdata); if (!VerifyScript( - txin.scriptSig, prevPubKey, - STANDARD_SCRIPT_VERIFY_FLAGS | SCRIPT_ENABLE_SIGHASH_FORKID, + txin.scriptSig, prevPubKey, STANDARD_SCRIPT_VERIFY_FLAGS, MutableTransactionSignatureChecker(&mergedTx, i, amount))) { fComplete = false; } diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp --- a/src/rpc/rawtransaction.cpp +++ b/src/rpc/rawtransaction.cpp @@ -1058,8 +1058,7 @@ ScriptError serror = SCRIPT_ERR_OK; if (!VerifyScript( - txin.scriptSig, prevPubKey, - STANDARD_SCRIPT_VERIFY_FLAGS | SCRIPT_ENABLE_SIGHASH_FORKID, + txin.scriptSig, prevPubKey, STANDARD_SCRIPT_VERIFY_FLAGS, TransactionSignatureChecker(&txConst, i, amount), &serror)) { TxInErrorToJSON(txin, vErrors, ScriptErrorString(serror)); } diff --git a/src/script/sign.cpp b/src/script/sign.cpp --- a/src/script/sign.cpp +++ b/src/script/sign.cpp @@ -161,10 +161,9 @@ sigdata.scriptSig = PushAll(result); // Test solution - return solved && VerifyScript(sigdata.scriptSig, fromPubKey, - STANDARD_SCRIPT_VERIFY_FLAGS | - SCRIPT_ENABLE_SIGHASH_FORKID, - creator.Checker()); + return solved && + VerifyScript(sigdata.scriptSig, fromPubKey, + STANDARD_SCRIPT_VERIFY_FLAGS, creator.Checker()); } SignatureData DataFromTransaction(const CMutableTransaction &tx, @@ -240,8 +239,7 @@ } if (checker.CheckSig(sig, pubkey, scriptPubKey, - STANDARD_SCRIPT_VERIFY_FLAGS | - SCRIPT_ENABLE_SIGHASH_FORKID)) { + STANDARD_SCRIPT_VERIFY_FLAGS)) { sigs[pubkey] = sig; break; } @@ -275,8 +273,7 @@ explicit Stacks(const std::vector &scriptSigStack_) : script(scriptSigStack_) {} explicit Stacks(const SignatureData &data) { - EvalScript(script, data.scriptSig, - SCRIPT_VERIFY_STRICTENC | SCRIPT_ENABLE_SIGHASH_FORKID, + EvalScript(script, data.scriptSig, MANDATORY_SCRIPT_VERIFY_FLAGS, BaseSignatureChecker()); } diff --git a/src/script/standard.h b/src/script/standard.h --- a/src/script/standard.h +++ b/src/script/standard.h @@ -41,7 +41,7 @@ * details. */ static const unsigned int MANDATORY_SCRIPT_VERIFY_FLAGS = - SCRIPT_VERIFY_P2SH | SCRIPT_VERIFY_STRICTENC; + SCRIPT_VERIFY_P2SH | SCRIPT_VERIFY_STRICTENC | SCRIPT_ENABLE_SIGHASH_FORKID; enum txnouttype { TX_NONSTANDARD, diff --git a/src/validation.cpp b/src/validation.cpp --- a/src/validation.cpp +++ b/src/validation.cpp @@ -862,8 +862,7 @@ "too-long-mempool-chain", false, errString); } - uint32_t scriptVerifyFlags = - STANDARD_SCRIPT_VERIFY_FLAGS | SCRIPT_ENABLE_SIGHASH_FORKID; + uint32_t scriptVerifyFlags = STANDARD_SCRIPT_VERIFY_FLAGS; if (!Params().RequireStandard()) { scriptVerifyFlags = GetArg("-promiscuousmempoolflags", scriptVerifyFlags); @@ -887,14 +886,9 @@ // There is a similar check in CreateNewBlock() to prevent creating // invalid blocks, however allowing such transactions into the mempool // can be exploited as a DoS attack. - // - // SCRIPT_ENABLE_SIGHASH_FORKID is also added as to ensure we do not - // filter out transactions using the antireplay feature. { if (!CheckInputs(tx, state, view, true, - MANDATORY_SCRIPT_VERIFY_FLAGS | - SCRIPT_ENABLE_SIGHASH_FORKID, - true, txdata)) { + MANDATORY_SCRIPT_VERIFY_FLAGS, true, txdata)) { return error( "%s: BUG! PLEASE REPORT THIS! ConnectInputs failed " "against MANDATORY but not STANDARD flags %s, %s", @@ -1403,11 +1397,9 @@ // or non-null dummy arguments; if so, don't trigger DoS // protection to avoid splitting the network between upgraded // and non-upgraded nodes. - uint32_t mandatoryFlags = - flags & ~STANDARD_NOT_MANDATORY_VERIFY_FLAGS; CScriptCheck check2(scriptPubKey, amount, tx, i, - mandatoryFlags | - SCRIPT_ENABLE_SIGHASH_FORKID, + flags & + ~STANDARD_NOT_MANDATORY_VERIFY_FLAGS, cacheStore, txdata); if (check2()) { return state.Invalid(