validMerkleTree method

bool validMerkleTree()

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!);
}