diff --git a/src/validate_block.cpp b/src/validate_block.cpp index f9e14646..6ecb73ad 100644 --- a/src/validate_block.cpp +++ b/src/validate_block.cpp @@ -251,6 +251,7 @@ bool validate_block::is_distinct_tx_set(const transaction_list& txs) std::vector hashes(txs.size()); std::transform(txs.begin(), txs.end(), hashes.begin(), hasher); + std::sort(hashes.begin(), hashes.end()); auto distinct_end = std::unique(hashes.begin(), hashes.end()); return distinct_end == hashes.end(); } diff --git a/test/validate_block.cpp b/test/validate_block.cpp index e66c26d5..e3330ad6 100644 --- a/test/validate_block.cpp +++ b/test/validate_block.cpp @@ -159,6 +159,14 @@ BOOST_AUTO_TEST_CASE(validate_block__is_distinct_tx_set__partialy_distinct_by_ve BOOST_REQUIRE(!validate_block_fixture::is_distinct_tx_set({ tx1, tx2, tx3 })); } +BOOST_AUTO_TEST_CASE(validate_block__is_distinct_tx_set__partialy_distinct_not_adjacent_by_version__false) +{ + const transaction_type tx1{ 1, 0 }; + const transaction_type tx2{ 2, 0 }; + const transaction_type tx3{ 1, 0 }; + BOOST_REQUIRE(!validate_block_fixture::is_distinct_tx_set({ tx1, tx2, tx3 })); +} + BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()