diff --git a/include/bitcoin/system/chain/input.hpp b/include/bitcoin/system/chain/input.hpp index 491a59b2c7..9d5b28b8be 100644 --- a/include/bitcoin/system/chain/input.hpp +++ b/include/bitcoin/system/chain/input.hpp @@ -161,8 +161,9 @@ class BC_API input public: /// TODO: prevout destruct requires input destruct. /// Public mutable metadata access, copied but not compared for equality. + /// Defaults are set so non-population issues usually imply invalidity. mutable chain::output::cptr prevout{}; - mutable chain::prevout metadata{ zero, max_uint32, false, false }; + mutable chain::prevout metadata{ zero, max_uint32, true, true }; }; typedef std_vector inputs; diff --git a/include/bitcoin/system/chain/prevout.hpp b/include/bitcoin/system/chain/prevout.hpp index 964b6ca2ff..f0f5436ce8 100644 --- a/include/bitcoin/system/chain/prevout.hpp +++ b/include/bitcoin/system/chain/prevout.hpp @@ -25,6 +25,7 @@ namespace libbitcoin { namespace system { namespace chain { +// Defaults are set so non-population issues usually imply invalidity. class BC_API prevout final { public: @@ -74,7 +75,7 @@ class BC_API prevout final /// The previous output is of a coinbase transaction. /// database: populated, does not require prevout block association. - bool coinbase{ false }; + bool coinbase{ true }; }; } // namespace chain diff --git a/test/chain/transaction.cpp b/test/chain/transaction.cpp index 773a63dd06..776d04c0e1 100644 --- a/test/chain/transaction.cpp +++ b/test/chain/transaction.cpp @@ -1342,6 +1342,7 @@ BOOST_AUTO_TEST_CASE(transaction__is_confirmed_double_spend__empty_inputs__false BOOST_AUTO_TEST_CASE(transaction__is_confirmed_double_spend__default_inputs__false) { + // input.metadata.spent defaults to true. const accessor instance { 0, @@ -1350,7 +1351,7 @@ BOOST_AUTO_TEST_CASE(transaction__is_confirmed_double_spend__default_inputs__fal 0 }; - BOOST_REQUIRE(!instance.is_confirmed_double_spend(42)); + BOOST_REQUIRE(instance.is_confirmed_double_spend(42)); } BOOST_AUTO_TEST_CASE(transaction__is_confirmed_double_spend__unspent_input__false)