test: add unit test for non-standard bare multisig txs

The function IsStandardTx() returns rejection reason "bare-multisig" if the
transaction has a bare multisig output and the policy flag fIsBareMultisigStd
is false (set by the boolean command-line argument "-permitbaremultisig" -- for
the unit test, we simply set the global flag variable directly).
This commit is contained in:
Sebastian Falbesoner 2019-11-18 03:16:56 +01:00
parent 7dbc33f617
commit 1bb5d517aa

View file

@ -797,6 +797,17 @@ BOOST_AUTO_TEST_CASE(test_IsStandard)
reason.clear(); reason.clear();
BOOST_CHECK(!IsStandardTx(CTransaction(t), reason)); BOOST_CHECK(!IsStandardTx(CTransaction(t), reason));
BOOST_CHECK_EQUAL(reason, "scriptsig-size"); BOOST_CHECK_EQUAL(reason, "scriptsig-size");
// Check bare multisig (standard if policy flag fIsBareMultisigStd is set)
fIsBareMultisigStd = true;
t.vout[0].scriptPubKey = GetScriptForMultisig(1, {key.GetPubKey()}); // simple 1-of-1
t.vin[0].scriptSig = CScript() << std::vector<unsigned char>(65, 0);
BOOST_CHECK(IsStandardTx(CTransaction(t), reason));
fIsBareMultisigStd = false;
reason.clear();
BOOST_CHECK(!IsStandardTx(CTransaction(t), reason));
BOOST_CHECK_EQUAL(reason, "bare-multisig");
} }
BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()