validMerkleTree method
Returns true if the Merkle tree remains consistent in spite of missing transactions.
Implementation
bool validMerkleTree() {
// Can't have more hashes than numTransactions
if (hashes!.length > numTransactions!) {
return false;
}
// Can't have more flag bits than num hashes
if (flags!.length * 8 < hashes!.length) {
return false;
}
var height = _calcTreeHeight();
Map<String, dynamic> resultMap = _traverseMerkleTree(height, 0, flagBitsUsed: 0)!;
if (resultMap['hashesUsed'] != hashes!.length) {
return false;
}
return HEX.encode(resultMap['nodeValue']) == HEX.encode(header!.merkleRoot!);
}