public bool IsBlockchainValid(IList <BlockGeneric> blockchain)
        {
            for (int i = 1; i < blockchain.Count; i++)
            {
                BlockGeneric currentBlock  = blockchain[i];
                BlockGeneric previousBlock = blockchain[i - 1];

                if (currentBlock.Hash != _hash.HashBlock(currentBlock))
                {
                    Console.WriteLine($"The hash of the block is invalid at height {i}");
                    return(false);
                }

                if (currentBlock.PreviousHash != previousBlock.Hash)
                {
                    Console.WriteLine($"The previous hash of the block is invalid at height {i-1}");
                    return(false);
                }
            }
            return(true);
        }
 public string HashBlock(BlockGeneric block)
 {
     return(CalculateHash($"{block.UnixTimeStamp}-{block.PreviousHash ?? ""}-{block.HashedTransactionIds}"));
 }
 public bool IsBlockValid(BlockGeneric prevBlock, BlockGeneric newBlock)
 {
     return(newBlock.PreviousHash == prevBlock.Hash);
 }