public static Block ComputeBlock(Transaction transaction)
        {
            CurrentBlockchain = DataManager.UploadBlockchainDictionary();

            var check         = true;
            var previousNonce = CurrentBlockchain.Values.Last().Nonce;
            var nonce         = FindHash(previousNonce + 1);

            while (check)
            {
                if (!CurrentBlockchain.ContainsKey(HexConvert.FromBytes(Hash.ComputeSha256FromString(nonce.ToString()))))
                {
                    check = false;
                }
                else
                {
                    nonce = FindHash(nonce + 1);
                }
            }

            var newBlock = new Block()
            {
                Id           = CurrentBlockchain.Values.Last().Id + 1,
                Hash         = Hash.ComputeSha256FromString(nonce.ToString()),
                PreviousHash = HexConvert.ToBytes(CurrentBlockchain.Keys.Last()),
                Nonce        = nonce,
                Timestamp    = DateTime.Now,
                Transaction  = transaction
            };

            return(newBlock);
        }