Skip to content

Commit 2c0af44

Browse files
instagibbsstevenroose
authored andcommitted
Add ComputeFastMerkleRoot unit test example generated by elements-0.14.1
1 parent 9ce3ca7 commit 2c0af44

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

src/test/merkle_tests.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,4 +249,25 @@ BOOST_AUTO_TEST_CASE(merkle_test)
249249
}
250250
}
251251

252+
// ELEMENTS
253+
// Test fast merkle root calculations used in witness merkle tree calculation,
254+
// and asset issuance derivation
255+
BOOST_AUTO_TEST_CASE(fast_merkle_test)
256+
{
257+
258+
// generated using elements-0.14.1 implementation:
259+
std::vector<uint256> test_leaves = { uint256S("b66b041650db0f297b53f8d93c0e8706925bf3323f8c59c14a6fac37bfdcd06f"), uint256S("99cb2fa68b2294ae133550a9f765fc755d71baa7b24389fed67d1ef3e5cb0255"), uint256S("257e1b2fa49dd15724c67bac4df7911d44f6689860aa9f65a881ae0a2f40a303"), uint256S("b67b0b9f093fa83d5e44b707ab962502b7ac58630e556951136196e65483bb80") };
260+
261+
std::vector<uint256> test_roots = { uint256S("0000000000000000000000000000000000000000000000000000000000000000"), uint256S("b66b041650db0f297b53f8d93c0e8706925bf3323f8c59c14a6fac37bfdcd06f"), uint256S("f752938da0cb71c051aabdd5a86658e8d0b7ac00e1c2074202d8d2a79d8a6cf6"), uint256S("245d364a28e9ad20d522c4a25ffc6a7369ab182f884e1c7dcd01aa3d32896bd3"), uint256S("317d6498574b6ca75ee0368ec3faec75e096e245bdd5f36e8726fa693f775dfc") };
262+
263+
std::vector<uint256> leaves;
264+
265+
for (unsigned int i = 0; i < 4; i++) {
266+
uint256 root = ComputeFastMerkleRoot(leaves);
267+
BOOST_CHECK(root == test_roots[i]);
268+
leaves.push_back(test_leaves[i]);
269+
}
270+
BOOST_CHECK(ComputeFastMerkleRoot(leaves) == test_roots.back());
271+
}
272+
252273
BOOST_AUTO_TEST_SUITE_END()

0 commit comments

Comments
 (0)