public BlockForValidation ValidateBlockBeforeAppend(IBlock block) { Logger.Log("[BlockBasicInformationValidationProvider] Validating.\n"); var blockForValidation = new BlockForValidation(block); if (block?.BlockHeader == null || block.BlockBody == null) { blockForValidation.ValidationMessage = "Null"; return(blockForValidation); } var blockHeader = block.BlockHeader; if (blockHeader.Height == 0 || blockHeader.PreviousBlockHash == null || blockHeader.MerkleTreeRootHash == null) { blockForValidation.ValidationMessage = "Incorrect information."; return(blockForValidation); } var blockBody = block.BlockBody; if (blockBody.Transactions == null) { blockForValidation.ValidationMessage = "Transactions is null."; return(blockForValidation); } blockForValidation.Success = true; return(blockForValidation); }
public BlockForValidation ValidateBlockBeforeAppend(IBlock block) { Logger.Log("[BlockTransactionValidationProvider] Validating.\n"); var blockForValidation = new BlockForValidation(block); var txCount = block.BlockHeader.TransactionIds.Count; if (txCount == 0) { blockForValidation.ValidationMessage = "No tx."; return(blockForValidation); } if (block.BlockBody.Transactions.Count != txCount) { blockForValidation.ValidationMessage = "Tx count not match."; return(blockForValidation); } var txIdsInHeader = block.BlockHeader.TransactionIds.Select(tx => tx.ToHex()); var txIdsInBody = block.BlockBody.Transactions.Select(tx => tx.GetTransactionId().ToHex()); if (txIdsInHeader.Intersect(txIdsInBody).Count() != txCount) { blockForValidation.ValidationMessage = "Incorrect txs."; } blockForValidation.Success = true; return(blockForValidation); }