20 std::vector<bool> vMatch;
21 std::vector<uint256> vHashes;
23 vMatch.reserve(block.
vtx.size());
24 vHashes.reserve(block.
vtx.size());
26 for (
unsigned int i = 0; i < block.
vtx.size(); i++) {
29 vMatch.push_back(
true);
32 vMatch.push_back(
false);
33 vHashes.push_back(hash);
43 assert(vTxid.size() != 0);
52 right =
CalcHash(height - 1, pos * 2 + 1, vTxid);
63 bool fParentOfMatch =
false;
64 for (
unsigned int p = pos << height; p < (pos + 1) << height && p <
nTransactions; p++)
65 fParentOfMatch |= vMatch[p];
67 vBits.push_back(fParentOfMatch);
68 if (height == 0 || !fParentOfMatch) {
81 if (nBitsUsed >=
vBits.size()) {
86 bool fParentOfMatch =
vBits[nBitsUsed++];
87 if (height == 0 || !fParentOfMatch) {
89 if (nHashUsed >=
vHash.size()) {
95 if (height == 0 && fParentOfMatch)
96 vMatch.push_back(hash);
147 unsigned int nBitsUsed = 0, nHashUsed = 0;
153 if ((nBitsUsed + 7) / 8 != (
vBits.size() + 7) / 8)
156 if (nHashUsed !=
vHash.size())
158 return hashMerkleRoot;