From 97cea1a93a26d535f9bad038b559e50437ea54f7 Mon Sep 17 00:00:00 2001 From: Antoine Poinsot Date: Tue, 24 Aug 2021 09:15:01 +0200 Subject: [PATCH] policy: unit test Segwit dust thresholds Signed-off-by: Antoine Poinsot --- src/test/transaction_tests.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/test/transaction_tests.cpp b/src/test/transaction_tests.cpp index 571f792a53..b66e826a27 100644 --- a/src/test/transaction_tests.cpp +++ b/src/test/transaction_tests.cpp @@ -955,6 +955,33 @@ BOOST_AUTO_TEST_CASE(test_IsStandard) BOOST_CHECK(!IsStandardTx(CTransaction(t), reason)); BOOST_CHECK_EQUAL(reason, "bare-multisig"); fIsBareMultisigStd = DEFAULT_PERMIT_BAREMULTISIG; + + // Check P2WPKH outputs dust threshold + t.vout[0].scriptPubKey = CScript() << OP_0 << ParseHex("ffffffffffffffffffffffffffffffffffffffff"); + t.vout[0].nValue = 294; + BOOST_CHECK(IsStandardTx(CTransaction(t), reason)); + t.vout[0].nValue = 293; + BOOST_CHECK(!IsStandardTx(CTransaction(t), reason)); + BOOST_CHECK_EQUAL(reason, "dust"); + + // Check P2WSH outputs dust threshold + t.vout[0].scriptPubKey = CScript() << OP_0 << ParseHex("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); + t.vout[0].nValue = 330; + BOOST_CHECK(IsStandardTx(CTransaction(t), reason)); + t.vout[0].nValue = 329; + BOOST_CHECK(!IsStandardTx(CTransaction(t), reason)); + BOOST_CHECK_EQUAL(reason, "dust"); + + // Check future Witness Program versions dust threshold + for (int op = OP_2; op <= OP_16; op += 1) { + t.vout[0].scriptPubKey = CScript() << (opcodetype)op << ParseHex("ffff"); + t.vout[0].nValue = 240; + BOOST_CHECK(IsStandardTx(CTransaction(t), reason)); + + t.vout[0].nValue = 239; + BOOST_CHECK(!IsStandardTx(CTransaction(t), reason)); + BOOST_CHECK_EQUAL(reason, "dust"); + } } BOOST_AUTO_TEST_SUITE_END()