Esempio n. 1
0
        public bool IsValidNewBlock(Block previousBlock, Block newBlock)
        {
            if (previousBlock.Index + 1 != newBlock.Index)
            {
                return(false);
            }

            if (!previousBlock.Hash.Equals(newBlock.PreviousHash))
            {
                return(false);
            }

            // Calculate the hash for the given block and make sure its correct
            if (!Enumerable.SequenceEqual(CalculateBlockHash(newBlock), newBlock.Hash))
            {
                return(false);
            }

            // Make sure the data only contains a valid torrent file
            if (!BlockUtils.IsDataValidTorrent(newBlock.BlockData))
            {
                return(false);
            }

            return(true);
        }