how do nodes verify that a block has been solved and can be added to the blockchain
StephenM wrote a good answer to that:


  
  The difficulty (or nBits as it is called in the code) is shorthand for how difficult it is to solve the block. Essentially, it encodes a target value, and the hash of the block (when treated as a 256 bit integer) must be below that target value to be considered solved.