Noting that invalidity is transitive, i.e. a seemingly valid block that is the child of an invalid block is invalid, validate that:
Hash(parent) points to an actual block
Block number is sequential
Block height is sequential
Gas limit below a certain limit
Size in bytes is below a certain limit
Timestamp of block >= timestamp of parent
Block state contract solution is the first solution
The order in the solution data does not matter. A block that consists of one solution is valid as long as the block state contract solution is part of that solution.
Noting that invalidity is transitive, i.e. a seemingly valid block that is the child of an invalid block is invalid, validate that: