Skip to content

Commit adffacf

Browse files
authored
Merge pull request #730 from evoskuil/master
Simplify merkle test vectors.
2 parents 3c979c3 + 3f0d509 commit adffacf

1 file changed

Lines changed: 43 additions & 75 deletions

File tree

test/query/merkle.cpp

Lines changed: 43 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -54,38 +54,6 @@ constexpr auto root88 = system::sha256::double_hash(root84, root84);
5454

5555
constexpr auto root08 = system::sha256::double_hash(root07, root88);
5656

57-
// depth 1 subroots are just the block hashes.
58-
59-
// depth 1 subroots.
60-
constexpr auto sub01 = system::base16_hash("abdc2227d02d114b77be15085c1257709252a7a103f9ac0ab3c85d67e12bc0b8");
61-
constexpr auto sub23 = system::base16_hash("f2a2a2907abb326726a2d6500fe494f63772a941b414236c302e920bc1aa9caf");
62-
constexpr auto sub45 = system::base16_hash("f9f17a3c6d02b0920eccb11156df370bf4117fae2233dfee40817586ba981ca5");
63-
constexpr auto sub67 = system::base16_hash("96cbbc84783888e4cc971ae8acf86dd3c1a419370336bb3c634c97695a8c5ac9");
64-
constexpr auto sub82 = system::base16_hash("67552d97dfd80082ecd5fe3b233e3a4aa9cb9a07a6040bb43b507cbec44088f2");
65-
static_assert(sub01 == root01);
66-
static_assert(sub23 == root23);
67-
static_assert(sub45 == root45);
68-
static_assert(sub67 == root67);
69-
static_assert(sub82 == root82);
70-
71-
// depth 2 subroots.
72-
constexpr auto sub03 = system::base16_hash("965ac94082cebbcffe458075651e9cc33ce703ab0115c72d9e8b1a9906b2b636");
73-
constexpr auto sub47 = system::base16_hash("0e85585b6afb71116ec439b72a25edb8003ef34bc42fb2c88a05249da335774d");
74-
constexpr auto sub84 = system::base16_hash("c752fe3464335530a1109a7cfc6193f9aafb6d0dd913a4a51b92bc6cc4a90c33");
75-
static_assert(sub03 == root03);
76-
static_assert(sub47 == root47);
77-
static_assert(sub84 == root84);
78-
79-
// depth 3 subroots.
80-
constexpr auto sub07 = system::base16_hash("c809e7a698a4b4c474ff6f5f05e88af6d7cb80ddbbe302660dfe6bd1969224a2");
81-
constexpr auto sub88 = system::base16_hash("89e5daa6950b895190716dd26054432b564ccdc2868188ba1da76de8e1dc7591");
82-
static_assert(sub07 == root07);
83-
static_assert(sub88 == root88);
84-
85-
// depth 4 root (is not a subroot)
86-
constexpr auto span08 = system::base16_hash("e347b1c43fd9b5415bf0d92708db8284b78daf4d0e24f9c3405f45feb85e25db");
87-
static_assert(span08 == root08);
88-
8957
class merkle_accessor
9058
: public test::query_accessor
9159
{
@@ -566,17 +534,17 @@ BOOST_AUTO_TEST_CASE(query_merkle__get_merkle_root_and_proof__electrumx_example_
566534
BOOST_CHECK_EQUAL(roots[7], test::block7_hash);
567535
BOOST_CHECK_EQUAL(roots[8], test::block8_hash);
568536

569-
BOOST_CHECK_EQUAL(query.get_merkle_root(8), span08);
537+
BOOST_CHECK_EQUAL(query.get_merkle_root(8), root08);
570538

571539
hashes proof{};
572540
hash_digest root{};
573541
BOOST_CHECK(!query.get_merkle_root_and_proof(root, proof, 5, 8));
574542
BOOST_CHECK_EQUAL(root, root08);
575543
BOOST_CHECK_EQUAL(proof.size(), 4u);
576544
BOOST_CHECK_EQUAL(proof[0], test::block4_hash);
577-
BOOST_CHECK_EQUAL(proof[1], sub67);
578-
BOOST_CHECK_EQUAL(proof[2], sub03);
579-
BOOST_CHECK_EQUAL(proof[3], sub88);
545+
BOOST_CHECK_EQUAL(proof[1], root67);
546+
BOOST_CHECK_EQUAL(proof[2], root03);
547+
BOOST_CHECK_EQUAL(proof[3], root88);
580548
}
581549

582550
BOOST_AUTO_TEST_CASE(query_merkle__get_merkle_root_and_proof__electrumx_example_depth_1__success)
@@ -592,23 +560,23 @@ BOOST_AUTO_TEST_CASE(query_merkle__get_merkle_root_and_proof__electrumx_example_
592560
hashes roots{};
593561
BOOST_CHECK_EQUAL(query.get_merkle_subroots(roots, 8), error::success);
594562
BOOST_CHECK_EQUAL(roots.size(), 5u);
595-
BOOST_CHECK_EQUAL(roots[0], sub01);
596-
BOOST_CHECK_EQUAL(roots[1], sub23);
597-
BOOST_CHECK_EQUAL(roots[2], sub45);
598-
BOOST_CHECK_EQUAL(roots[3], sub67);
599-
BOOST_CHECK_EQUAL(roots[4], sub82);
563+
BOOST_CHECK_EQUAL(roots[0], root01);
564+
BOOST_CHECK_EQUAL(roots[1], root23);
565+
BOOST_CHECK_EQUAL(roots[2], root45);
566+
BOOST_CHECK_EQUAL(roots[3], root67);
567+
BOOST_CHECK_EQUAL(roots[4], root82);
600568

601-
BOOST_CHECK_EQUAL(query.get_merkle_root(8), span08);
569+
BOOST_CHECK_EQUAL(query.get_merkle_root(8), root08);
602570

603571
hashes proof{};
604572
hash_digest root{};
605573
BOOST_CHECK(!query.get_merkle_root_and_proof(root, proof, 5, 8));
606-
BOOST_CHECK_EQUAL(root, span08);
574+
BOOST_CHECK_EQUAL(root, root08);
607575
BOOST_CHECK_EQUAL(proof.size(), 4u);
608576
BOOST_CHECK_EQUAL(proof[0], test::block4_hash);
609-
BOOST_CHECK_EQUAL(proof[1], sub67);
610-
BOOST_CHECK_EQUAL(proof[2], sub03);
611-
BOOST_CHECK_EQUAL(proof[3], sub88);
577+
BOOST_CHECK_EQUAL(proof[1], root67);
578+
BOOST_CHECK_EQUAL(proof[2], root03);
579+
BOOST_CHECK_EQUAL(proof[3], root88);
612580
}
613581

614582
BOOST_AUTO_TEST_CASE(query_merkle__get_merkle_root_and_proof__electrumx_example_depth_2__success)
@@ -624,21 +592,21 @@ BOOST_AUTO_TEST_CASE(query_merkle__get_merkle_root_and_proof__electrumx_example_
624592
hashes roots{};
625593
BOOST_CHECK_EQUAL(query.get_merkle_subroots(roots, 8), error::success);
626594
BOOST_CHECK_EQUAL(roots.size(), 3u);
627-
BOOST_CHECK_EQUAL(roots[0], sub03);
628-
BOOST_CHECK_EQUAL(roots[1], sub47);
629-
BOOST_CHECK_EQUAL(roots[2], sub84);
595+
BOOST_CHECK_EQUAL(roots[0], root03);
596+
BOOST_CHECK_EQUAL(roots[1], root47);
597+
BOOST_CHECK_EQUAL(roots[2], root84);
630598

631-
BOOST_CHECK_EQUAL(query.get_merkle_root(8), span08);
599+
BOOST_CHECK_EQUAL(query.get_merkle_root(8), root08);
632600

633601
hashes proof{};
634602
hash_digest root{};
635603
BOOST_CHECK(!query.get_merkle_root_and_proof(root, proof, 5, 8));
636-
BOOST_CHECK_EQUAL(root, span08);
604+
BOOST_CHECK_EQUAL(root, root08);
637605
BOOST_CHECK_EQUAL(proof.size(), 4u);
638606
BOOST_CHECK_EQUAL(proof[0], test::block4_hash);
639-
BOOST_CHECK_EQUAL(proof[1], sub67);
640-
BOOST_CHECK_EQUAL(proof[2], sub03);
641-
BOOST_CHECK_EQUAL(proof[3], sub88);
607+
BOOST_CHECK_EQUAL(proof[1], root67);
608+
BOOST_CHECK_EQUAL(proof[2], root03);
609+
BOOST_CHECK_EQUAL(proof[3], root88);
642610
}
643611

644612
BOOST_AUTO_TEST_CASE(query_merkle__get_merkle_root_and_proof__electrumx_example_depth_3__success)
@@ -654,20 +622,20 @@ BOOST_AUTO_TEST_CASE(query_merkle__get_merkle_root_and_proof__electrumx_example_
654622
hashes roots{};
655623
BOOST_CHECK_EQUAL(query.get_merkle_subroots(roots, 8), error::success);
656624
BOOST_CHECK_EQUAL(roots.size(), 2u);
657-
BOOST_CHECK_EQUAL(roots[0], sub07);
658-
BOOST_CHECK_EQUAL(roots[1], sub88);
625+
BOOST_CHECK_EQUAL(roots[0], root07);
626+
BOOST_CHECK_EQUAL(roots[1], root88);
659627

660-
BOOST_CHECK_EQUAL(query.get_merkle_root(8), span08);
628+
BOOST_CHECK_EQUAL(query.get_merkle_root(8), root08);
661629

662630
hashes proof{};
663631
hash_digest root{};
664632
BOOST_CHECK(!query.get_merkle_root_and_proof(root, proof, 5, 8));
665-
BOOST_CHECK_EQUAL(root, span08);
633+
BOOST_CHECK_EQUAL(root, root08);
666634
BOOST_CHECK_EQUAL(proof.size(), 4u);
667635
BOOST_CHECK_EQUAL(proof[0], test::block4_hash);
668-
BOOST_CHECK_EQUAL(proof[1], sub67);
669-
BOOST_CHECK_EQUAL(proof[2], sub03);
670-
BOOST_CHECK_EQUAL(proof[3], sub88);
636+
BOOST_CHECK_EQUAL(proof[1], root67);
637+
BOOST_CHECK_EQUAL(proof[2], root03);
638+
BOOST_CHECK_EQUAL(proof[3], root88);
671639
}
672640

673641
BOOST_AUTO_TEST_CASE(query_merkle__get_merkle_root_and_proof__electrumx_example_depth_4__success)
@@ -683,19 +651,19 @@ BOOST_AUTO_TEST_CASE(query_merkle__get_merkle_root_and_proof__electrumx_example_
683651
hashes roots{};
684652
BOOST_CHECK_EQUAL(query.get_merkle_subroots(roots, 8), error::success);
685653
BOOST_CHECK_EQUAL(roots.size(), 1u);
686-
BOOST_CHECK_EQUAL(roots[0], span08);
654+
BOOST_CHECK_EQUAL(roots[0], root08);
687655

688-
BOOST_CHECK_EQUAL(query.get_merkle_root(8), span08);
656+
BOOST_CHECK_EQUAL(query.get_merkle_root(8), root08);
689657

690658
hashes proof{};
691659
hash_digest root{};
692660
BOOST_CHECK(!query.get_merkle_root_and_proof(root, proof, 5, 8));
693-
BOOST_CHECK_EQUAL(root, span08);
661+
BOOST_CHECK_EQUAL(root, root08);
694662
BOOST_CHECK_EQUAL(proof.size(), 4u); // <<<<< FAIL (proof.size() == 5)
695663
BOOST_CHECK_EQUAL(proof[0], test::block4_hash);
696-
BOOST_CHECK_EQUAL(proof[1], sub67);
697-
BOOST_CHECK_EQUAL(proof[2], sub03);
698-
BOOST_CHECK_EQUAL(proof[3], sub88);
664+
BOOST_CHECK_EQUAL(proof[1], root67);
665+
BOOST_CHECK_EQUAL(proof[2], root03);
666+
BOOST_CHECK_EQUAL(proof[3], root88);
699667
}
700668

701669
BOOST_AUTO_TEST_CASE(query_merkle__get_merkle_root_and_proof__electrumx_example_depth_11__success)
@@ -711,19 +679,19 @@ BOOST_AUTO_TEST_CASE(query_merkle__get_merkle_root_and_proof__electrumx_example_
711679
hashes roots{};
712680
BOOST_CHECK_EQUAL(query.get_merkle_subroots(roots, 8), error::success);
713681
BOOST_CHECK_EQUAL(roots.size(), 1u);
714-
BOOST_CHECK_EQUAL(roots[0], span08);
682+
BOOST_CHECK_EQUAL(roots[0], root08);
715683

716-
BOOST_CHECK_EQUAL(query.get_merkle_root(8), span08);
684+
BOOST_CHECK_EQUAL(query.get_merkle_root(8), root08);
717685

718686
hashes proof{};
719687
hash_digest root{};
720688
BOOST_CHECK(!query.get_merkle_root_and_proof(root, proof, 5, 8));
721-
BOOST_CHECK_EQUAL(root, span08);
689+
BOOST_CHECK_EQUAL(root, root08);
722690
BOOST_CHECK_EQUAL(proof.size(), 4u); // <<<<< FAIL (proof.size() == 11)
723691
BOOST_CHECK_EQUAL(proof[0], test::block4_hash);
724-
BOOST_CHECK_EQUAL(proof[1], sub67);
725-
BOOST_CHECK_EQUAL(proof[2], sub03);
726-
BOOST_CHECK_EQUAL(proof[3], sub88);
692+
BOOST_CHECK_EQUAL(proof[1], root67);
693+
BOOST_CHECK_EQUAL(proof[2], root03);
694+
BOOST_CHECK_EQUAL(proof[3], root88);
727695
}
728696

729697
// This tests a potentially sparse path (avoids compression).
@@ -750,12 +718,12 @@ BOOST_AUTO_TEST_CASE(query_merkle__get_merkle_root_and_proof__target_8_depth_0__
750718
BOOST_CHECK_EQUAL(roots[7], test::block7_hash);
751719
BOOST_CHECK_EQUAL(roots[8], test::block8_hash);
752720

753-
BOOST_CHECK_EQUAL(query.get_merkle_root(8), span08);
721+
BOOST_CHECK_EQUAL(query.get_merkle_root(8), root08);
754722

755723
hashes proof{};
756724
hash_digest root{};
757725
BOOST_CHECK(!query.get_merkle_root_and_proof(root, proof, 8, 8));
758-
BOOST_CHECK_EQUAL(root, span08);
726+
BOOST_CHECK_EQUAL(root, root08);
759727
BOOST_CHECK_EQUAL(proof.size(), 4u);
760728
BOOST_CHECK_EQUAL(proof[0], test::block8_hash);
761729
BOOST_CHECK_EQUAL(proof[1], root82);

0 commit comments

Comments
 (0)